Datenverschlüsselung für Azure Database for MySQL – Flexibler Server mit Azure CLI

GILT FÜR: Azure Database for MySQL – Flexibler Server

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 Serverinstanz mit Datenverschlüsselung
  • Aktualisieren einer vorhandenen Azure Database for MySQL – Flexible Serverinstanz mit Datenverschlüsselung
  • Verwenden einer Azure Resource Manager-Vorlage zum Aktivieren von Datenverschlüsselung

Voraussetzungen

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:

Vorläufiges Löschen:

az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true

Löschschutz:

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 Serverinstanz 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 Serverinstanz 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"
        }
    ]
}

Nächste Schritte