Script do PowerShell para habilitar a criptografia de dados transparente usando sua própria chave
Aplica-se a: Instância Gerenciada de SQL do Azure
Este exemplo de script do PowerShell configura a TDE (criptografia de dados transparente) na Instância Gerenciada de SQL do Azure usando uma chave gerenciada pelo cliente do Azure Key Vault. Normalmente, este cenário é conhecido como BYOK (use sua própria chave) para TDE. Para saber mais, confira Transparent Data Encryption do SQL do Azure com chave gerenciada pelo cliente.
Pré-requisitos
- Uma instância gerenciada existente. Consulte Usar o PowerShell para criar uma instância gerenciada.
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
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.
Usar o Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Link |
---|---|
Selecione Experimente no canto superior direito de um bloco de código. Selecionar Experimente não copia automaticamente o código para o Cloud Shell. | |
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. | |
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
Para executar o código neste artigo no Azure Cloud Shell:
Inicie o Cloud Shell.
Clique no botão Copiar no bloco de código para copiá-lo.
Cole o código na sessão do Cloud Shell pressionando Ctrl+Shift+V no Windows e no Linux ou selecionando Cmd+Shift+V no macOS.
Pressione Enter para executar o código.
O uso do PowerShell localmente ou o uso do Azure Cloud Shell requer Azure PowerShell versão 2.3.2 ou posterior. Se precisar atualizar, consulte Instalar o módulo Azure PowerShell ou execute o script de exemplo abaixo para instalar o módulo para o usuário atual:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount
para criar uma conexão com o Azure.
Scripts de exemplo
# You will need an existing Managed Instance as a prerequisite for completing this script.
# See https://docs.microsoft.com/en-us/azure/sql-database/scripts/sql-database-create-configure-managed-instance-powershell
# Log in to your Azure account:
Connect-AzAccount
# If there are multiple subscriptions, choose the one where AKV is created:
Set-AzContext -SubscriptionId "subscription ID"
# Install the Az.Sql PowerShell package if you are running this PowerShell locally (uncomment below):
# Install-Module -Name Az.Sql
# 1. Create Resource and setup Azure Key Vault (skip if already done)
# Create Resource group (name the resource and specify the location)
$location = "westus2" # specify the location
$resourcegroup = "MyRG" # specify a new RG name
New-AzResourceGroup -Name $resourcegroup -Location $location
# Create new Azure Key Vault with a globally unique VaultName and soft-delete option turned on:
$vaultname = "MyKeyVault" # specify a globally unique VaultName
New-AzKeyVault -VaultName $vaultname -ResourceGroupName $resourcegroup -Location $location
# Authorize Managed Instance to use the AKV (wrap/unwrap key and get public part of key, if public part exists):
$objectid = (Set-AzSqlInstance -ResourceGroupName $resourcegroup -Name "MyManagedInstance" -AssignIdentity).Identity.PrincipalId
Set-AzKeyVaultAccessPolicy -BypassObjectIdValidation -VaultName $vaultname -ObjectId $objectid -PermissionsToKeys get,wrapKey,unwrapKey
# Allow access from trusted Azure services:
Update-AzKeyVaultNetworkRuleSet -VaultName $vaultname -Bypass AzureServices
# Allow access from your client IP address(es) to be able to complete remaining steps:
Update-AzKeyVaultNetworkRuleSet -VaultName $vaultname -IpAddressRange "xxx.xxx.xxx.xxx/xx"
# Turn the network rules ON by setting the default action to Deny:
Update-AzKeyVaultNetworkRuleSet -VaultName $vaultname -DefaultAction Deny
# 2. Provide TDE Protector key (skip if already done)
# First, give yourself necessary permissions on the AKV, (specify your account instead of contoso.com):
Set-AzKeyVaultAccessPolicy -VaultName $vaultname -UserPrincipalName "myaccount@contoso.com" -PermissionsToKeys create,import,get,list
# The recommended way is to import an existing key from a .pfx file. Replace "<PFX private key password>" with the actual password below:
$keypath = "c:\some_path\mytdekey.pfx" # Supply your .pfx path and name
$securepfxpwd = ConvertTo-SecureString -String "<PFX private key password>" -AsPlainText -Force
$key = Add-AzKeyVaultKey -VaultName $vaultname -Name "MyTDEKey" -KeyFilePath $keypath -KeyFilePassword $securepfxpwd
# ...or get an existing key from the vault:
# $key = Get-AzKeyVaultKey -VaultName $vaultname -Name "MyTDEKey"
# Alternatively, generate a new key directly in Azure Key Vault (recommended for test purposes only - uncomment below):
# $key = Add-AzureKeyVaultKey -VaultName $vaultname -Name MyTDEKey -Destination Software -Size 2048
# 3. Set up BYOK TDE on Managed Instance:
# Assign the key to the Managed Instance:
# $key = 'https://contoso.vault.azure.net/keys/contosokey/01234567890123456789012345678901'
Add-AzSqlInstanceKeyVaultKey -KeyId $key.id -InstanceName "MyManagedInstance" -ResourceGroupName $resourcegroup
# Set TDE operation mode to BYOK:
Set-AzSqlInstanceTransparentDataEncryptionProtector -Type AzureKeyVault -InstanceName "MyManagedInstance" -ResourceGroup $resourcegroup -KeyId $key.id
Próximas etapas
Para obter mais informações sobre o Azure PowerShell, confira a Documentação do Azure PowerShell.
Exemplos adicionais de scripts do PowerShell para a Instância Gerenciada SQL podem ser encontrados nos Scripts de PowerShell da Instância Gerenciada de SQL do Azure.