Skrypt interfejsu wiersza polecenia platformy Azure umożliwiający włączenie funkcji Transparent Data Encryption przy użyciu własnego klucza
Dotyczy: Azure SQL Managed Instance
Ten przykładowy skrypt interfejsu wiersza polecenia platformy Azure umożliwia skonfigurowanie funkcji Transparent Data Encryption (TDE) w usłudze Azure SQL Managed Instance przy użyciu klucza zarządzanego przez klienta z usługi Azure Key Vault. Jest to często nazywane scenariuszem byOK (bring-your-own-key) dla funkcji TDE. Aby dowiedzieć się więcej na temat funkcji TDE z kluczem zarządzanym przez klienta, zobacz TDE Bring Your Own Key to Azure SQL (TDE Bring Your Own Key to Azure SQL).
Ten przykład wymaga istniejącego wystąpienia zarządzanego. Zobacz Tworzenie usługi Azure SQL Managed Instance przy użyciu interfejsu wiersza polecenia platformy Azure.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Przykładowy skrypt
W przypadku tego skryptu użyj interfejsu wiersza polecenia platformy Azure lokalnie, ponieważ uruchamianie w usłudze Cloud Shell trwa zbyt długo.
Logowanie się do platformy Azure
Użyj poniższego skryptu, aby zalogować się przy użyciu określonej subskrypcji.
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
Aby uzyskać więcej informacji, zobacz set active subscription or log in interactively (Ustawianie aktywnej subskrypcji lub logowanie się interaktywnie)
Uruchamianie skryptu
# 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
Czyszczenie zasobów
Użyj następującego polecenia, aby usunąć grupę zasobów i wszystkie skojarzone z nią zasoby przy użyciu polecenia az group delete — chyba że masz ciągłą potrzebę tych zasobów. Utworzenie niektórych z tych zasobów może trochę potrwać, a także usunięcie.
az group delete --name $resourceGroup
Przykładowa dokumentacja
W tym skrypcie użyto następujących poleceń. Każde polecenie w tabeli stanowi link do dokumentacji polecenia.
Polecenie | opis |
---|---|
az sql db | Polecenia bazy danych. |
az sql failover-group | Polecenia grupy trybu failover. |
Następne kroki
Aby uzyskać więcej informacji na temat interfejsu wiersza polecenia platformy Azure, zobacz dokumentację interfejsu wiersza polecenia platformy Azure.
Więcej przykładowych skryptów interfejsu wiersza polecenia dla usługi SQL Database można znaleźć w dokumentacji usługi Azure SQL Database.