사용자 고유의 키를 사용하여 투명한 데이터 암호화를 사용하도록 설정하는 Azure CLI 스크립트

적용 대상:Azure SQL Managed Instance

이 Azure CLI 스크립트 예제에서는 Azure Key Vault의 고객 관리형 키를 사용하여 Azure SQL Managed Instance에 대해 TDE(투명한 데이터 암호화)를 구성합니다. 일반적으로 이 구성을 TDE의 BYOK(Bring Your Own Key) 시나리오라고도 합니다. 고객 관리형 키를 사용하는 TDE에 대한 자세한 내용은 Azure SQL에 대한 TDE Bring Your Own Key를 참조하세요.

이 샘플에는 기존 Managed Instance가 필요합니다. Azure CLI를 사용하여 Azure SQL Managed Instance 만들기를 참조하세요.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

사전 요구 사항

샘플 스크립트

이 스크립트의 경우 Cloud Shell에서 실행하기에 너무 오래 걸리므로 Azure CLI를 로컬로 사용하세요.

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

샘플 참조

이 스크립트는 다음 명령을 사용합니다. 테이블에 있는 각 명령은 명령에 해당하는 문서에 연결됩니다.

명령 Description
az sql db 데이터베이스 명령입니다.
az sql failover-group 장애 조치(failover) 그룹 명령입니다.

다음 단계

Azure CLI에 대한 자세한 내용은 Azure CLI 문서를 참조하세요.

추가 SQL Database CLI 스크립트 샘플은 Azure SQL Database 설명서에서 찾을 수 있습니다.