Configurar a integração do Azure Key Vault para SQL Server em VMs do Azure (Resource Manager)

APLICA-SE A: SQL Server na VM do Azure

Há vários recursos de criptografia do SQL Server, como TDE (Transparent Data Encryption), CLE (criptografia de nível de coluna) e criptografia de backup. Essas formas de criptografia exigem o gerenciamento e armazenamento de chaves criptográficas usadas para a criptografia. O serviço AKV (Azure Key Vault) foi criado 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 da Chave do Azure.

Se você estiver executando o SQL Server localmente, existem etapas a serem seguidas para acessar o Azure Key Vault pela instância do SQL Server local. Mas, para o SQL Server em VMs do Azure, você pode economizar tempo usando o recurso de Integração do Azure Key Vault.

Observação

A integração ao Azure Key Vault está disponível apenas para as edições Enterprise, Developer e Avaliação do SQL Server. Do SQL Server 2019 em diante, também há suporte para a edição Standard.

Quando esse recurso está habilitado, ele instala automaticamente o SQL Server Connector, configura o provedor de EKM a fim de acessar o Cofre da Chave do Azure e cria a credencial para permitir que você acesse seu cofre. Ao examinar as etapas da documentação local mencionada anteriormente, é possível ver que esse recurso automatiza as etapas 2 e 3. A única coisa que você ainda precisará fazer manualmente é criar o cofre da chave e as chaves. A partir daí, toda a configuração de sua VM do SQL Server será automatizada. Quando esse recurso concluir a configuração, você poderá executar instruções T-SQL (Transact-SQL) para começar a criptografar seus bancos de dados ou backups como faria normalmente.

Observação

Você também pode configurar a integração de Key Vault usando um modelo. Para saber mais, confira Azure quickstart template for Azure Key Vault integration (Modelo de início rápido do Azure para integração com o Cofre de Chaves do Azure).

Preparar-se para a integração de AKV

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

  1. Instale o Azure PowerShell
  2. Criar um Active Directory do Azure
  3. Criar um cofre de chave

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

Observação

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

Instalar o Azure PowerShell

Verifique se você instalou o módulo mais recente do Azure PowerShell. Para obter mais informações, confira Como instalar e configurar o Azure PowerShell.

Registre um aplicativo no seu Azure Active Directory

Primeiro, você precisa ter um Active Directory do Azure (AAD) em sua assinatura. Entre os diversos benefícios, isso permite que você conceda permissão de acesso ao seu cofre de chave para determinados usuários e aplicativos.

Em seguida, registre um aplicativo com o AAD Isso lhe dará uma conta de Entidade de Serviço com acesso ao cofre de chaves de que sua VM precisará. No artigo sobre o Azure Key Vault, você pode encontrar essas etapas na seção Registrar um aplicativo com o Azure Active Directory. Também é possível 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. Elas serão necessárias mais tarde, quando você habilitar a integração do Azure Key Vault em sua VM do SQL.

  • Após o aplicativo ser adicionado, localize a ID do aplicativo (também conhecida como ClientID do AAD ou AppID) no painel Aplicativo registrado. O ID do aplicativo é atribuído posteriormente ao parâmetro $spName (nome da Entidade de Serviço) no script do PowerShell a fim de habilitar a integração do Azure Key Vault.

    Application ID

  • Durante essas etapas, ao criar a chave, copie o segredo de sua chave conforme mostra a seguinte captura de tela. Esse segredo é 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 poderão ser usados para criar uma credencial do SQL Server.

  • É necessário autorizar essa nova ID do aplicativo (ou ID do cliente) para ter as seguintes permissões de acesso: get, wrapKey e unwrapKey. Isso é feito com o cmdlet Set-AzKeyVaultAccessPolicy. Para saber mais, confira Visão geral do Cofre de Chaves do Azure.

Criar um cofre de chaves

Para usar o Cofre da Chave do Azure a fim de armazenar as chaves que você usará para criptografia em sua VM, você precisa ter acesso em um cofre de chave. Se você ainda não tiver configurado seu cofre de chaves, crie um usando as etapas no artigo Introdução ao Azure Key Vault. Antes de concluir essas etapas, você precisa coletar algumas informações durante esse configuração que serão necessárias mais tarde quando você habilitar a integração do Azure Key Vault em sua VM do SQL.

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

Quando você chega à etapa Criar um cofre de chave, observe a propriedade vaultUri retornada, que é a URL do cofre de chave. No exemplo fornecido nesta etapa, mostrado abaixo, 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 chave será atribuída posteriormente ao parâmetro $akvURL no script do PowerShell a fim de habilitar a integração do Cofre da Chave do Azure.

Depois que o cofre de chaves é criado, é preciso adicionar uma chave ao cofre de chaves, esta chave será mencionada quando criarmos uma chave assimétrica posteriormente no SQL Server.

Observação

O provedor de gerenciamento de chaves extensível (EKM) versão 1.0.4.0 é instalado na VM do SQL Server por meio da extensão de IaaS (infraestrutura como serviço) do SQL. Atualizar a extensão de IaaS do SQL não atualizará a versão do provedor. Considere a possibilidade de atualizar manualmente a versão do provedor EKM se necessário (por exemplo, ao migrar para uma Instância Gerenciada do SQL).

Habilitar e configurar a integração ao Key Vault

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

Novas VMs

Se você estiver provisionando uma nova máquina de virtual do SQL com o Gerenciador de Recursos, o Portal do Azure fornecerá uma forma para habilitar a integração do Azure Key Vault.

SQL Azure Key Vault Integration

Para obter uma explicação detalhada sobre o provisionamento, confira Provisionar uma máquina virtual do SQL no portal do Azure.

VMs existentes

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

SQL Key Vault integration for existing VMs

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

Observação

O nome da credencial que criamos aqui será mapeada para um logon do SQL posteriormente. Isso permite que o logon do SQL acesse o cofre de chaves.

Próximas etapas

Depois de habilitar a integração do Cofre da Chave do Azure, você poderá habilitar a criptografia do SQL Server em sua VM do SQL. Primeiro, você precisará criar uma chave assimétrica dentro de seu cofre de chave e uma chave simétrica no 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.

Há várias formas de criptografia das quais você pode tirar proveito:

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

Pré-requisitos para exemplos

Cada exemplo tem base em dois pré-requisitos: uma chave assimétrica do seu cofre de chaves chamada CONTOSO_KEY e uma credencial criada pelo recurso de Integração de AKV chamada Azure_EKM_cred. Os comandos Transact-SQL a seguir configuram os 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;

Criptografia de Dados Transparente (TDE)

  1. Crie um logon do SQL Server que 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 a 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
    

Backups criptografados

  1. Crie um logon do SQL Server que será usado pelo Mecanismo de banco de dados para criptografia de 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 o backup do banco de dados especificando a criptografia com a chave assimétrica armazenada no cofre de chave.

    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 chave e 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 saber mais sobre como usar esses recursos de criptografia, consulte Usando EKM com recursos de criptografia do SQL Server.

Observe que as etapas neste artigo presumem que o SQL Server já está em execução em uma máquina virtual do Azure. Se não estiver, confira Provisionar uma máquina virtual do SQL Server no Azure. Para obter orientação sobre como executar o SQL Server em VMs do Azure, consulte Visão geral sobre SQL Server em máquinas virtuais do Azure.