Configurar a integração do Azure Key Vault para SQL Server em VMs do Azure (Gerenciador de Recursos)

Aplica-se a:SQL Server na VM do Azure

Há vários recursos de criptografia do SQL Server, como criptografia de dados transparente (TDE), criptografia de nível de coluna (CLE) e criptografia de backup. Essas formas de criptografia exigem que você gerencie e armazene as chaves criptográficas usadas para criptografia. O serviço Azure Key Vault foi projetado para melhorar a segurança e o gerenciamento dessas chaves em um local seguro e altamente disponível. O SQL Server Connector permite que o SQL Server use essas chaves do Cofre de Chaves do Azure.

Se você estiver executando o SQL Server local, há etapas que você pode seguir para acessar o Cofre da Chave do Azure a partir de sua instância local do SQL Server. Mas para o SQL Server em VMs do Azure, você pode economizar tempo usando o recurso de Integração do Cofre da Chave do Azure.

Nota

A integração do Azure Key Vault está disponível apenas para as edições Enterprise, Developer e Evaluation do SQL Server. A partir do SQL Server 2019, a edição Standard também é suportada.

Quando esse recurso é habilitado, ele instala automaticamente o SQL Server Connector, configura o provedor EKM para acessar o Azure Key Vault e cria a credencial para permitir que você acesse seu cofre. Se você olhou para as etapas na documentação local mencionada anteriormente, poderá ver que esse recurso automatiza as etapas 2 e 3. A única coisa que você ainda precisa fazer manualmente é criar o cofre de chaves e chaves. A partir daí, toda a configuração da sua VM do SQL Server é automatizada. Depois que esse recurso tiver concluído essa configuração, você poderá executar instruções Transact-SQL (T-SQL) para começar a criptografar seus bancos de dados ou backups como faria normalmente.

Nota

Você também pode configurar a integração do Cofre da Chave usando um modelo. Para obter mais informações, consulte Modelo de início rápido do Azure para integração do Azure Key Vault.

Prepare-se para a integração AKV

Para usar a Integração do Cofre da Chave do Azure para configurar sua VM do SQL Server, há vários pré-requisitos:

  1. Instalar o Azure PowerShell
  2. Criar um locatário do Microsoft Entra
  3. Criar um cofre de chaves

As seções a seguir descrevem esses pré-requisitos e as informações que você precisa coletar para executar posteriormente os cmdlets do PowerShell.

Nota

Este artigo usa o módulo Azure Az PowerShell, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Instalar o Azure PowerShell

Certifique-se de ter instalado o módulo mais recente do Azure PowerShell. Para obter mais informações, veja How to install and configure Azure PowerShell (Como instalar e configurar o Azure PowerShell).

Registar uma aplicação no seu ID Microsoft Entra

Primeiro, você precisa ter um locatário do Microsoft Entra em sua assinatura. Entre muitos benefícios, isso permite que você conceda permissão ao seu cofre de chaves para determinados usuários e aplicativos.

Em seguida, registre um aplicativo com o Microsoft Entra ID. Isso lhe dá uma conta de entidade de serviço que tem acesso ao cofre de chaves, de que sua VM precisa. No artigo Cofre da Chave do Azure, você pode encontrar essas etapas na seção Registrar um aplicativo com ID do Microsoft Entra ou pode ver as etapas com capturas de tela na seção Obter uma identidade para o aplicativo desta postagem de blog. Antes de concluir essas etapas, você precisa coletar as seguintes informações durante esse registro, que são necessárias posteriormente quando você habilita a Integração do Cofre da Chave do Azure em sua VM SQL.

  • Depois que o aplicativo for adicionado, localize a ID do aplicativo (também conhecida como ClientID ou AppID) na folha Aplicativo registrado. A ID do aplicativo é atribuída posteriormente ao parâmetro $spName (nome da entidade de serviço) no script do PowerShell para habilitar a Integração do Cofre da Chave do Azure.

    Application ID

  • Durante estas etapas ao criar sua chave, copie o segredo para sua chave, conforme mostrado na captura de tela a seguir. Esse segredo de chave é atribuído posteriormente ao parâmetro $spSecret (segredo da entidade de serviço) no script do PowerShell.

    AAD secret

  • A ID do aplicativo e o segredo também serão usados para criar uma credencial no SQL Server.

  • Você deve autorizar essa nova ID de aplicativo (ou ID de cliente) para ter as seguintes permissões de acesso: get, wrapKey, unwrapKey. Isso é feito com o cmdlet Set-AzKeyVaultAccessPolicy . Para obter mais informações, consulte Visão geral do Azure Key Vault.

Criar um cofre de chaves

Para usar o Azure Key Vault para armazenar as chaves que você usará para criptografia em sua VM, você precisa acessar um cofre de chaves. Se você ainda não configurou seu cofre de chaves, crie um seguindo as etapas no artigo Introdução ao Cofre de Chaves do Azure. Antes de concluir essas etapas, há algumas informações que você precisa coletar durante essa configuração que são necessárias posteriormente quando você habilita a Integração do Cofre da Chave do Azure em sua VM SQL.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

Quando chegar à etapa Criar um cofre de chaves, observe a propriedade vaultUri retornada, que é a URL do cofre de chaves. No exemplo fornecido nessa etapa, mostrado posteriormente, o nome do cofre de chaves é ContosoKeyVault, portanto, a URL do cofre de chaves seria https://contosokeyvault.vault.azure.net/.

A URL do cofre de chaves é atribuída posteriormente ao parâmetro $akvURL no script do PowerShell para habilitar a Integração do Cofre da Chave do Azure.

Depois que o cofre de chaves é criado, precisamos adicionar uma chave ao cofre de chaves, essa chave será referida quando criarmos uma chave assimétrica criada no SQL Server posteriormente.

Nota

O Provedor de Gerenciamento Extensível de Chaves (EKM) versão 1.0.4.0 é instalado na VM do SQL Server por meio da extensão IaaS (infraestrutura SQL como serviço). A atualização da extensão do SQL IaaS Agent não atualizará a versão do provedor. Considere atualizar manualmente a versão do provedor EKM, se necessário (por exemplo, ao migrar para uma instância gerenciada SQL).

Habilitar e configurar a integração do Key Vault

Você pode habilitar a integração do Cofre da Chave durante o provisionamento ou configurá-la para VMs existentes.

Novas VMs

Se você estiver provisionando uma nova máquina virtual SQL com o Gerenciador de Recursos, o portal do Azure fornecerá uma maneira de habilitar a integração do Cofre da Chave do Azure.

SQL Azure Key Vault Integration

Para obter um passo a passo detalhado do provisionamento, consulte Provisionar uma máquina virtual SQL no portal do Azure.

VMs existentes

Para máquinas virtuais SQL existentes, abra o recurso de máquinas virtuais SQL e selecione Segurança em Configurações. Selecione Habilitar para habilitar a integração do Azure Key Vault.

A captura de tela a seguir mostra como habilitar o Cofre da Chave do Azure no portal para uma VM existente do SQL Server (essa instância do SQL Server usa uma porta não padrão 1401):

SQL Key Vault integration for existing VMs

Quando terminar, selecione o botão Aplicar na parte inferior da página Segurança para salvar as alterações.

Nota

O nome da credencial que criamos aqui será mapeado para um logon SQL mais tarde. Isso permite que o login SQL acesse o cofre de chaves.

Depois de habilitar a Integração do Cofre de Chaves do Azure, você pode habilitar a criptografia do SQL Server em sua VM SQL. Primeiro, você precisará criar uma chave assimétrica dentro do cofre de chaves e uma chave simétrica dentro do SQL Server em sua VM. Em seguida, você poderá executar instruções T-SQL para habilitar a criptografia para seus bancos de dados e backups.

Existem várias formas de encriptação que pode aproveitar:

Os scripts Transact-SQL a seguir fornecem exemplos para cada uma dessas áreas.

Pré-requisitos para exemplos

Cada exemplo é baseado nos dois pré-requisitos: uma chave assimétrica do seu cofre de chaves chamada CONTOSO_KEY e uma credencial criada pelo recurso de integração AKV chamado Azure_EKM_cred. Os comandos Transact-SQL a seguir configuram esses pré-requisitos para executar os exemplos.

USE master;
GO

--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
    WITH IDENTITY = 'keytestvault', --keyvault
    SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;


--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;


CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault',  --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;

Encriptação de Dados Transparente (TDE)

  1. Crie um logon do SQL Server para ser usado pelo Mecanismo de Banco de Dados para TDE e adicione a credencial a ele.

    USE master;
    -- Create a SQL Server login associated with the asymmetric key
    -- for the Database engine to use when it loads a database
    -- encrypted by TDE.
    CREATE LOGIN EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the TDE Login to add the credential for use by the
    -- Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred;
    GO
    
  2. Crie a chave de criptografia do banco de dados que será usada para TDE.

    USE ContosoDatabase;
    GO
    
    CREATE DATABASE ENCRYPTION KEY 
    WITH ALGORITHM = AES_128 
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE ContosoDatabase
    SET ENCRYPTION ON;
    GO
    

Cópias de segurança encriptadas

  1. Crie um logon do SQL Server para ser usado pelo Mecanismo de Banco de Dados para criptografar backups e adicione a credencial a ele.

    USE master;
    -- Create a SQL Server login associated with the asymmetric key
    -- for the Database engine to use when it is encrypting the backup.
    CREATE LOGIN EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the Encrypted Backup Login to add the credential for use by
    -- the Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred ;
    GO
    
  2. Faça backup do banco de dados especificando a criptografia com a chave assimétrica armazenada no cofre de chaves.

    USE master;
    BACKUP DATABASE [DATABASE_TO_BACKUP]
    TO DISK = N'[PATH TO BACKUP FILE]'
    WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,
    ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY]);
    GO
    

Criptografia de nível de coluna (CLE)

Esse script cria uma chave simétrica protegida pela chave assimétrica no cofre de chaves e, em seguida, usa a chave simétrica para criptografar dados no banco de dados.

CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;

DECLARE @DATA VARBINARY(MAX);

--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;

--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY(KEY_GUID('DATA_ENCRYPTION_KEY'), CONVERT(VARBINARY,'Plain text data to encrypt'));

-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));

--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;

Recursos adicionais

Para obter mais informações sobre como usar esses recursos de criptografia, consulte Usando o EKM com recursos de criptografia do SQL Server.

Observe que as etapas neste artigo pressupõem que você já tenha o SQL Server em execução em uma máquina virtual do Azure. Caso contrário, consulte Provisionar uma máquina virtual do SQL Server no Azure. Para obter outras orientações sobre como executar o SQL Server em VMs do Azure, consulte Visão geral do SQL Server em máquinas virtuais Windows do Azure.

Próximos passos

Para obter mais informações de segurança, consulte Considerações de segurança para o SQL Server em VMs do Azure.