Share via


Gegevensversleuteling voor Azure Database for MySQL met behulp van de Azure CLI

VAN TOEPASSING OP: Azure Database for MySQL - enkele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

Meer informatie over het gebruik van de Azure CLI voor het instellen en beheren van gegevensversleuteling voor uw Azure Database for MySQL.

Vereisten voor Azure CLI

  • U moet een Azure-abonnement hebben en een beheerder van dat abonnement zijn.

  • Maak een sleutelkluis en een sleutel die moet worden gebruikt voor een door de klant beheerde sleutel. Schakel ook beveiliging tegen opschonen en voorlopig verwijderen in de sleutelkluis in.

    az keyvault create -g <resource_group> -n <vault_name> --enable-soft-delete true --enable-purge-protection true
    
  • Maak in de gemaakte Azure Key Vault de sleutel die wordt gebruikt voor de gegevensversleuteling van Azure Database for MySQL.

    az keyvault key create --name <key_name> -p software --vault-name <vault_name>
    
  • Als u een bestaande sleutelkluis wilt gebruiken, moet deze de volgende eigenschappen hebben om te gebruiken als een door de klant beheerde sleutel:

    • Voorlopig verwijderen

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

      az keyvault update --name <key_vault_name> --resource-group <resource_group_name>  --enable-purge-protection true
      
    • Retentiedagen ingesteld op 90 dagen

      az keyvault update --name <key_vault_name> --resource-group <resource_group_name>  --retention-days 90
    
  • De sleutel moet de volgende kenmerken hebben om te kunnen worden gebruikt als een door de klant beheerde sleutel:

    • Geen vervaldatum
    • Niet uitgeschakeld
    • Get-, wrap-, unwrap-bewerkingen uitvoeren
    • het kenmerk recoverylevel is ingesteld op Herstelbaar (hiervoor is voorlopig verwijderen ingeschakeld met retentieperiode ingesteld op 90 dagen)
    • Beveiliging tegen leegmaken is ingeschakeld

U kunt de bovenstaande kenmerken van de sleutel controleren met behulp van de volgende opdracht:

az keyvault key show --vault-name <key_vault_name> -n <key_name>
  • De Azure Database for MySQL - Enkele server moet zich in de prijscategorie Algemeen gebruik of Geoptimaliseerd voor geheugen bevinden en voor opslag voor algemeen gebruik v2. Voordat u verdergaat, raadpleegt u beperkingen voor gegevensversleuteling met door de klant beheerde sleutels.

De juiste machtigingen instellen voor sleutelbewerkingen

  1. Er zijn twee manieren om de beheerde identiteit voor uw Azure Database for MySQL op te halen.

    Maak een nieuwe Azure Database for MySQL-server met een beheerde identiteit.

    az mysql server create --name -g <resource_group> --location <locations> --storage-size size>  -u <user>-p <pwd> --backup-retention <7> --sku-name <sku name> -geo-redundant-backup <Enabled/Disabled>  --assign-identity
    

    Werk een bestaande Azure Database for MySQL-server bij om een beheerde identiteit op te halen.

    az mysql server update --name  <server name>  -g <resource_group> --assign-identity
    
  2. Stel de sleutelmachtigingen (Get, Wrap, Unwrap) in voor de principal. Dit is de naam van de MySQL-server.

    az keyvault set-policy --name -g <resource_group> --key-permissions get unwrapKey wrapKey --object-id <principal id of the server>
    

Gegevensversleuteling instellen voor Azure Database for MySQL

  1. Schakel gegevensversleuteling in voor Azure Database for MySQL met behulp van de sleutel die is gemaakt in Azure Key Vault.

    az mysql server key create –name  <server name>  -g <resource_group> --kid <key url>
    

    Sleutel-URL: https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>

Gegevensversleuteling gebruiken voor herstel- of replicaservers

Nadat Azure Database for MySQL is versleuteld met de beheerde sleutel van een klant die is opgeslagen in Key Vault, wordt elke nieuw gemaakte kopie van de server ook versleuteld. U kunt deze nieuwe kopie maken via een lokale of geo-herstelbewerking of via een replicabewerking (lokaal/tussen regio's). Voor een versleutelde MySQL-server kunt u dus de volgende stappen gebruiken om een versleutelde herstelde server te maken.

Een herstelde/replicaserver maken

Zodra de server is hersteld, moet u gegevensversleuteling opnieuwvalideren op de herstelde server

  • Identiteit toewijzen voor de replicaserver
az mysql server update --name  <server name>  -g <resoure_group> --assign-identity
  • De bestaande sleutel ophalen die moet worden gebruikt voor de herstelde/replicaserver
az mysql server key list --name  '<server_name>'  -g '<resource_group_name>'
  • Het beleid instellen voor de nieuwe identiteit voor de herstelde/replicaserver
az keyvault set-policy --name <keyvault> -g <resoure_group> --key-permissions get unwrapKey wrapKey --object-id <principl id of the server returned by the step 1>
  • De herstelde/replicaserver opnieuw valideren met de versleutelingssleutel
az mysql server key create –name  <server name> -g <resource_group> --kid <key url>

Aanvullende mogelijkheid voor de sleutel die wordt gebruikt voor Azure Database for MySQL

De gebruikte sleutel ophalen

az mysql server key show --name  <server name>  -g <resource_group> --kid <key url>

Sleutel-URL: https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>

De gebruikte sleutel vermelden

az mysql server key list --name  <server name>  -g <resource_group>

De sleutel verwijderen die wordt gebruikt

az mysql server key delete -g <resource_group> --kid <key url>

Een Azure Resource Manager-sjabloon gebruiken om gegevensversleuteling in te schakelen

Naast Azure Portal kunt u ook gegevensversleuteling inschakelen op uw Azure Database for MySQL-server met behulp van Azure Resource Manager-sjablonen voor nieuwe en bestaande servers.

Voor een nieuwe server

Gebruik een van de vooraf gemaakte Azure Resource Manager-sjablonen om de server in te richten met gegevensversleuteling ingeschakeld: Voorbeeld met gegevensversleuteling

Met deze Azure Resource Manager-sjabloon maakt u een Azure Database for MySQL-server en gebruikt u keyvault en sleutel die als parameters worden doorgegeven om gegevensversleuteling op de server in te schakelen.

Voor een bestaande server

Daarnaast kunt u Azure Resource Manager-sjablonen gebruiken om gegevensversleuteling in te schakelen op uw bestaande Azure Database for MySQL-servers.

  • Geef de resource-id door van de Azure Key Vault-sleutel die u eerder hebt gekopieerd onder de Uri eigenschap in het eigenschappenobject.

  • Gebruik 2020-01-01-preview als api-versie.

{
  "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string"
    },
    "serverName": {
      "type": "string"
    },
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Key vault name where the key to use is stored"
      }
    },
    "keyVaultResourceGroupName": {
      "type": "string",
      "metadata": {
        "description": "Key vault resource group name where it is stored"
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "Key name in the key vault to use as encryption protector"
      }
    },
    "keyVersion": {
      "type": "string",
      "metadata": {
        "description": "Version of the key in the key vault to use as encryption protector"
      }
    }
  },
  "variables": {
    "serverKeyName": "[concat(parameters('keyVaultName'), '_', parameters('keyName'), '_', parameters('keyVersion'))]"
  },
  "resources": [
    {
      "type": "Microsoft.DBforMySQL/servers",
      "apiVersion": "2017-12-01",
      "kind": "",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "name": "[parameters('serverName')]",
      "properties": {
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2019-05-01",
      "name": "addAccessPolicy",
      "resourceGroup": "[parameters('keyVaultResourceGroupName')]",
      "dependsOn": [
        "[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              "type": "Microsoft.KeyVault/vaults/accessPolicies",
              "name": "[concat(parameters('keyVaultName'), '/add')]",
              "apiVersion": "2018-02-14-preview",
              "properties": {
                "accessPolicies": [
                  {
                    "tenantId": "[subscription().tenantId]",
                    "objectId": "[reference(resourceId('Microsoft.DBforMySQL/servers/', parameters('serverName')), '2017-12-01', 'Full').identity.principalId]",
                    "permissions": {
                      "keys": [
                        "get",
                        "wrapKey",
                        "unwrapKey"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    {
      "name": "[concat(parameters('serverName'), '/', variables('serverKeyName'))]",
      "type": "Microsoft.DBforMySQL/servers/keys",
      "apiVersion": "2020-01-01-preview",
      "dependsOn": [
        "addAccessPolicy",
        "[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]"
      ],
      "properties": {
        "serverKeyType": "AzureKeyVault",
        "uri": "[concat(reference(resourceId(parameters('keyVaultResourceGroupName'), 'Microsoft.KeyVault/vaults/', parameters('keyVaultName')), '2018-02-14-preview', 'Full').properties.vaultUri, 'keys/', parameters('keyName'), '/', parameters('keyVersion'))]"
      }
    }
  ]
}

Volgende stappen