Script Azure CLI per abilitare Transparent Data Encryption usando la propria chiave

Si applica a: Istanza gestita di SQL di Azure SQL

Questo esempio di script dell’interfaccia da riga di comando di Azure configura la crittografia Transparent Data Encryption (TDE) in uno scenario Bring Your Own Key per un'istanza gestita di SQL di Azure usando una chiave di Azure Key Vault. Questo scenario viene spesso definito BYOK (Bring Your Own Key). Per altre informazioni su TDE con la chiave gestita dal cliente, vedere TDE Bring Your Own Key in Azure SQL.

Una coppia esistente di istanze gestite. Vedere Usare l'interfaccia della riga di comando di Azure per creare un'istanza di Istanza gestita di SQL di Azure.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

Script di esempio

Per questo script, usare l'interfaccia della riga di comando di Azure in locale perché l'esecuzione in Cloud Shell richiede troppo tempo.

Accedere ad Azure

Usare lo script seguente per accedere usando una sottoscrizione specifica.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Per maggiori informazioni, vedere Impostare una sottoscrizione attiva o Accedere in modo interattivo

Eseguire lo script

# Manage Transparent Data Encryption in a Managed Instance using your own key from Azure Key Vault

# Run this script after the script in https://docs.microsoft.com/azure/azure-sql/managed-instance/scripts/create-configure-managed-instance-cli creates a managed instance.
# You can use the same variables in both scripts/
# If running this script against a different existing instance, uncomment and add appropriate values to next 3 lines of code
# let "randomIdentifier=$RANDOM*$RANDOM"
# instance="<msdocs-azuresql-instance>" # add instance here
# resourceGroup="<msdocs-azuresql-rg>" # add resource here

# Variable block
location="East US"
vault="msdocssqlvault$randomIdentifier"
key="msdocs-azuresql-key-$randomIdentifier"

# echo assigning identity to service principal in the instance
az sql mi update --name $instance --resource-group $resourceGroup --assign-identity

echo "Creating $vault..."
az keyvault create --name $vault --resource-group $resourceGroup --location "$location"

echo "Getting service principal id and setting policy on $vault..."
instanceId=$(az sql mi show --name $instance --resource-group $resourceGroup --query identity.principalId --output tsv)

echo $instanceId
az keyvault set-policy --name $vault --object-id $instanceId --key-permissions get unwrapKey wrapKey

echo "Creating $key..."
az keyvault key create --name $key --vault-name $vault --size 2048 

# keyPath="C:\yourFolder\yourCert.pfx"
# keyPassword="yourPassword" 
# az keyvault certificate import --file $keyPath --name $key --vault-name $vault --password $keyPassword

echo "Setting security on $instance with $key..."
keyId=$(az keyvault key show --name $key --vault-name $vault -o json --query key.kid | tr -d '"')

az sql mi key create --kid $keyId --managed-instance $instance --resource-group $resourceGroup
az sql mi tde-key set --server-key-type AzureKeyVault --kid $keyId --managed-instance $instance --resource-group $resourceGroup

Pulire le risorse

Usare il seguente comando per rimuovere il gruppo di risorse e tutte le risorse associate usando il comando az group delete, a meno che non si abbia una necessità continua di queste risorse. La creazione e l'eliminazione di alcune di queste risorse può richiedere tempo.

az group delete --name $resourceGroup

Informazioni di riferimento per l'esempio

Questo script usa i comandi seguenti. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.

Comando Descrizione
az sql db Comandi per il database.
az sql failover-group Comandi per il gruppo di failover.

Passaggi successivi

Per altre informazioni sull'interfaccia della riga di comando di Azure, vedere la documentazione sull'interfaccia della riga di comando di Azure.

Per altri esempi di script dell'interfaccia della riga di comando per database SQL, vedere la documentazione del database SQL di Azure.