Configurar a Integração do Azure Key Vault para SQL Server em Máquinas Virtuais do Azure (Clássicas)

Visão geral

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 Cofre da Chave do Azure (AKV) 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.

Importante

O Azure tem dois modelos de implantação diferentes para criar e trabalhar com recursos: Resource Manager e Clássico. Este artigo aborda o uso do modelo de implantação Clássica. A Microsoft recomenda que a maioria das implantações novas use o modelo do Gerenciador de Recursos.

Se você estiver executando o SQL Server em máquinas locais, exitem etapas a serem seguidas para acessar o Azure Key Vault do computador local com SQL Server. Mas, para o SQL Server em VMs do Azure, você pode economizar tempo usando o recurso Integração do Cofre da Chave do Azure . Com alguns cmdlets do Azure PowerShell para habilitar esse recurso, você poderá automatizar a configuração necessária para que uma VM do SQL acesse seu cofre da chave.

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 será automatizada. Quando esse recurso concluir a configuração, você poderá executar instruções T-SQL para começar a criptografar seus bancos de dados ou backups como faria normalmente.

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. Instalar 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

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. 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.

    ID do aplicativo

  • 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.

    Segredo de AAD

  • 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.

Configurar a integração de AKV

Use o PowerShell para configurar a integração do Cofre da Chave do Azure. As seções a seguir oferecem uma visão geral dos parâmetros necessários e um exemplo de script do PowerShell.

Instalar a Extensão IaaS do SQL Server

Primeiro, instale a extensão IaaS do SQL Server.

Compreender os parâmetros de entrada

A tabela a seguir lista os parâmetros necessários para executar o script do PowerShell na próxima seção.

Parâmetro Descrição Exemplo
$akvURL A URL do cofre da chave "https://contosokeyvault.vault.azure.net/"
$spName Nome da Entidade de Serviço "fde2b411-33d5-4e11-af04eb07b669ccf2"
$spSecret Segredo da Entidade de Serviço "9VTJSQwzlFepD8XODnzy8n2V01Jd8dAjwm/azF1XDKM="
$credName Nome da credencial: A Integração AKV cria uma credencial no SQL Server, permitindo que a VM tenha acesso ao cofre da chave. Escolha um nome para essa credencial. "mycred1"
$vmName Nome da máquina virtual: O nome de uma VM do SQL criada anteriormente. "myvmname"
$serviceName Nome do serviço: O nome do Serviço de Nuvem associado à VM do SQL. "mycloudservicename"

Habilitar a integração de AKV com o PowerShell

O cmdlet New-AzureVMSqlServerKeyVaultCredentialConfig cria um objeto de configuração para o recurso de integração do Cofre da Chave do Azure. O cmdlet Set-AzureVMSqlServerExtension configura essa integração com o parâmetro KeyVaultCredentialSettings. As etapas a seguir mostram como usar esses comandos.

  1. No Azure PowerShell, primeiro configure os parâmetros de entrada com valores específicos conforme descrito nas seções anteriores deste tópico. O seguinte script é um exemplo.

    $akvURL = "https:\//contosokeyvault.vault.azure.net/"
    $spName = "fde2b411-33d5-4e11-af04eb07b669ccf2"
    $spSecret = "9VTJSQwzlFepD8XODnzy8n2V01Jd8dAjwm/azF1XDKM="
    $credName = "mycred1"
    $vmName = "myvmname"
    $serviceName = "mycloudservicename"
    
  2. Em seguida, use o script abaixo para configurar e habilitar a integração de AKV.

    $secureakv =  $spSecret | ConvertTo-SecureString -AsPlainText -Force
    $akvs = New-AzureVMSqlServerKeyVaultCredentialConfig -Enable -CredentialName $credname -AzureKeyVaultUrl $akvURL -ServicePrincipalName $spName -ServicePrincipalSecret $secureakv
    Get-AzureVM -ServiceName $serviceName -Name $vmName | Set-AzureVMSqlServerExtension -KeyVaultCredentialSettings $akvs | Update-AzureVM
    

A extensão do Agente IaaS do SQL atualizará a VM do SQL com essa nova configuração.

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.