Datenverschlüsselung für Azure Database for MySQL – Flexibler Server mit Azure CLI
In diesem Tutorial erfahren Sie, wie Sie über die Azure CLI die Datenverschlüsselung für Azure Database for MySQL – Flexible Server einrichten und verwalten.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer Azure Database for MySQL – Flexible Server-Instanz mit Datenverschlüsselung
- Aktualisieren einer vorhandenen Azure Database for MySQL – Flexible Server-Instanz mit Datenverschlüsselung
- Verwenden einer Azure Resource Manager-Vorlage zum Aktivieren von Datenverschlüsselung
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement.
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
Hinweis
Mit einem kostenlosen Azure-Konto können Sie Azure Database for MySQL – Flexible Server jetzt 12 Monate lang kostenlos testen. Weitere Informationen finden Sie unter Verwenden eines kostenlosen Azure-Kontos, um Azure Database for MySQL – Flexible Server kostenlos zu testen.
Installieren Sie die Azure CLI, oder upgraden Sie sie auf die neueste Version. Weitere Informationen finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle.
Melden Sie sich mit dem Befehl az login beim Azure-Konto an. Beachten Sie die Eigenschaft „ID“, die auf die Abonnement-ID Ihres Azure-Kontos verweist:
az login
- Wenn Sie über mehrere Abonnements verfügen, wählen Sie mithilfe des Befehls „az account set“ das entsprechende Abonnement aus, in dem Sie den Server erstellen möchten.
az account set --subscription \<subscription id\>
- Erstellen Sie in Azure Key Vault einen Schlüsseltresor oder ein verwaltetes HSM und einen Schlüssel. Der Schlüsseltresor oder das verwaltete HSM muss die folgenden Eigenschaften aufweisen, um als kundenseitig verwalteter Schlüssel verwendet werden zu können:
az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --enable-purge-protection true
Auf 90 Tage festgelegte Datenaufbewahrung:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90
Der Schlüssel muss die folgenden Attribute aufweisen, damit er als vom Kunden verwalteter Schlüssel verwendet werden kann:
- Keine Ablaufdaten
- Nicht deaktiviert
- Ausführen der Vorgänge List, Get, Wrap, Unwrap
- recoverylevel-Attribut festgelegt auf „Recoverable“ (Dafür muss vorläufiges Löschen mit einer Aufbewahrungsdauer von 90 Tagen aktiviert sein.)
- Bereinigungsschutz aktiviert
Sie können die oben genannten Attribute des Schlüssels mit dem folgenden Befehl überprüfen:
az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>
Aktualisieren einer vorhandenen Azure Database for MySQL – Flexible Server-Instanz mit Datenverschlüsselung
Festlegen oder Ändern des Schlüssels und der Identität für die Datenverschlüsselung:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity
Deaktivieren der Datenverschlüsselung für Azure Database for MySQL – Flexible Server:
az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption
Erstellen einer Azure Database for MySQL – Flexible Server-Instanz mit aktivierter georedundanter Sicherung und Datenverschlüsselung
az mysql flexible-server create -g testGroup -n testServer --location testLocation \\
--geo-redundant-backup Enabled \\
--key <key identifier of testKey> --identity testIdentity \\
--backup-key <key identifier of testBackupKey> --backup-identity testBackupIdentity
Festlegen oder Ändern des Schlüssels, der Identität, des Sicherungsschlüssel und der Sicherungsidentität für die Datenverschlüsselung mit georedundanter Sicherung:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity \\ --backup-key \<key identifier of newBackupKey\> --backup-identity newBackupIdentity
Verwenden einer Azure Resource Manager-Vorlage zum Aktivieren der Datenverschlüsselung
Die Parameter identityUri und primaryKeyUri sind die Ressourcen-ID der vom Benutzer verwalteten Identität bzw. des vom Benutzer verwalteten Schlüssels.
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"administratorLogin": {
"type": "string"
},
"administratorLoginPassword": {
"type": "securestring"
},
"location": {
"type": "string"
},
"serverName": {
"type": "string"
},
"serverEdition": {
"type": "string"
},
"vCores": {
"type": "int",
"defaultValue": 4
},
"storageSizeGB": {
"type": "int"
},
"haEnabled": {
"type": "string",
"defaultValue": "Disabled"
},
"availabilityZone": {
"type": "string"
},
"standbyAvailabilityZone": {
"type": "string"
},
"version": {
"type": "string"
},
"tags": {
"type": "object",
"defaultValue": {}
},
"backupRetentionDays": {
"type": "int"
},
"geoRedundantBackup": {
"type": "string"
},
"vmName": {
"type": "string",
"defaultValue": "Standard_B1ms"
},
"storageIops": {
"type": "int"
},
"storageAutogrow": {
"type": "string",
"defaultValue": "Enabled"
},
"autoIoScaling": {
"type": "string",
"defaultValue": "Disabled"
},
"vnetData": {
"type": "object",
"metadata": {
"description": "Vnet data is an object which contains all parameters pertaining to vnet and subnet"
},
"defaultValue": {
"virtualNetworkName": "testVnet",
"subnetName": "testSubnet",
"virtualNetworkAddressPrefix": "10.0.0.0/16",
"virtualNetworkResourceGroupName": "[resourceGroup().name]",
"location": "eastus2",
"subscriptionId": "[subscription().subscriptionId]",
"subnetProperties": {},
"isNewVnet": false,
"subnetNeedsUpdate": false,
"Network": {}
}
},
"identityUri": {
"type": "string",
"metadata": {
"description": "The resource ID of the identity used for data encryption"
}
},
"primaryKeyUri": {
"type": "string",
"metadata": {
"description": "The resource ID of the key used for data encryption"
}
}
},
"variables": {
"api": "2021-05-01",
"identityData": "[if(empty(parameters('identityUri')), json('null'), createObject('type', 'UserAssigned', 'UserAssignedIdentities', createObject(parameters('identityUri'), createObject())))]",
"dataEncryptionData": "[if(or(empty(parameters('identityUri')), empty(parameters('primaryKeyUri'))), json('null'), createObject('type', 'AzureKeyVault', 'primaryUserAssignedIdentityId', parameters('identityUri'), 'primaryKeyUri', parameters('primaryKeyUri')))]"
},
"resources": [
{
"apiVersion": "[variables('api')]",
"location": "[parameters('location')]",
"name": "[parameters('serverName')]",
"identity": "[variables('identityData')]",
"properties": {
"version": "[parameters('version')]",
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"Network": "[if(empty(parameters('vnetData').Network), json('null'), parameters('vnetData').Network)]",
"Storage": {
"StorageSizeGB": "[parameters('storageSizeGB')]",
"Iops": "[parameters('storageIops')]",
"Autogrow": "[parameters('storageAutogrow')]",
"AutoIoScaling": "[parameters('autoIoScaling')]"
},
"Backup": {
"backupRetentionDays": "[parameters('backupRetentionDays')]",
"geoRedundantBackup": "[parameters('geoRedundantBackup')]"
},
"availabilityZone": "[parameters('availabilityZone')]",
"highAvailability": {
"mode": "[parameters('haEnabled')]",
"standbyAvailabilityZone": "[parameters('standbyAvailabilityZone')]"
},
"dataEncryption": "[variables('dataEncryptionData')]"
},
"sku": {
"name": "[parameters('vmName')]",
"tier": "[parameters('serverEdition')]",
"capacity": "[parameters('vCores')]"
},
"tags": "[parameters('tags')]",
"type": "Microsoft.DBforMySQL/flexibleServers"
}
]
}