Скрипт Azure CLI для включения прозрачного шифрования данных с помощью собственного ключа

Область применения: Управляемый экземпляр SQL Azure

Этот пример скрипта Azure CLI настраивает прозрачное шифрование данных (TDE) в Управляемый экземпляр SQL Azure с помощью ключа, управляемого клиентом, из Azure Key Vault. Часто такой сценарий называется созданием собственных ключей для прозрачного шифрования данных. Дополнительные сведения о TDE с ключом, управляемым клиентом, см. в статье TDE Bring Your Own Key to Azure SQL.

Для этого примера требуется существующий управляемый экземпляр. Для создания Управляемый экземпляр SQL Azure используйте Azure CLI.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Предварительные требования

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в кратком руководстве по Azure Cloud Shell — Bash.

    Запуск Cloud Shell в новом окне

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в разделе Запуск Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о дополнительных возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Если появится запрос, установите расширения Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Пример скрипта

Для выполнения этого скрипта используйте Azure CLI в локальной среде, так как его выполнение в Cloud Shell займет слишком много времени.

Вход в Azure

Используйте указанный ниже скрипт для входа с использованием определенной подписки.

subscription="<subscriptionId>" # add subscription here

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

Дополнительные сведения см. в разделах Настройка активной подписки и Интерактивный вход.

Выполнение скрипта

# 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/en-us/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

Очистка ресурсов

Если вам больше не нужны определенные ресурсы, вы можете удалить их и соответствующую группу ресурсов с помощью команды az group delete. Как создание, так и удаление определенных ресурсов может занять некоторое время.

az group delete --name $resourceGroup

Примеры

Этот скрипт использует следующие команды. Для каждой команды в таблице приведены ссылки на соответствующую документацию.

Get-Help Описание
az sql db Команды базы данных.
az sql failover-group Команды группы отработки отказа.

Дальнейшие действия

Дополнительные сведения об Azure CLI см. в документации по Azure CLI.

Дополнительные примеры сценариев интерфейса командной строки для Базы данных SQL Azure см. в документации по Базе данных SQL.