Gegevensversleuteling voor Azure Database for PostgreSQL Enkele server met behulp van de Azure CLI

VAN TOEPASSING OP: Azure Database for PostgreSQL - enkele server

Belangrijk

Azure Database for PostgreSQL - Enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan om een upgrade uit te voeren naar Azure Database for PostgreSQL - Flexible Server. Zie Wat gebeurt er met Azure Database for PostgreSQL Enkele server voor meer informatie over migreren naar Azure Database for PostgreSQL - Flexible Server.

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

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 de Azure Database for PostgreSQL Enkele server.

    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
      
  • De sleutel moet de volgende kenmerken hebben om te kunnen worden gebruikt als een door de klant beheerde sleutel:

    • Geen vervaldatum
    • Niet uitgeschakeld
    • Bewerkingen ophalen, verpakken en uitpakken uitvoeren

De juiste machtigingen instellen voor sleutelbewerkingen

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

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

    az postgres server create --name <server_name> -g <resource_group> --location <location> --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 PostgreSQL-server bij om een beheerde identiteit op te halen.

    az postgres server update --resource-group <resource_group> --name <server_name> --assign-identity
    
  2. Stel de sleutelmachtigingen (Get, Wrap, Unwrap) in voor de Principal. Dit is de naam van de PostgreSQL Single-serverserver.

    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 PostgreSQL Enkele server

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

    az postgres 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 PostgreSQL Enkele server 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 PostgreSQL Enkele serverserver 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 postgres server update --name  <server name>  -g <resource_group> --assign-identity
  • De bestaande sleutel ophalen die moet worden gebruikt voor de herstelde/replicaserver
az postgres 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 <resource_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 postgres server key create –name  <server name> -g <resource_group> --kid <key url>

Aanvullende mogelijkheid voor de sleutel die wordt gebruikt voor de Azure Database for PostgreSQL Enkele server

De gebruikte sleutel ophalen

az postgres 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 postgres server key list --name  <server name>  -g <resource_group>

De sleutel verwijderen die wordt gebruikt

az postgres 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 PostgreSQL-server met behulp van Azure Resource Manager-sjablonen voor nieuwe en bestaande servers.

Voor een bestaande server

Daarnaast kunt u Azure Resource Manager-sjablonen gebruiken om gegevensversleuteling in te schakelen op uw bestaande Azure Database for PostgreSQL Enkele 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.DBforPostgreSQL/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.DBforPostgreSQL/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.DBforPostgreSQL/servers/', parameters('serverName')), '2017-12-01', 'Full').identity.principalId]",
                    "permissions": {
                      "keys": [
                        "get",
                        "wrapKey",
                        "unwrapKey"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    {
      "name": "[concat(parameters('serverName'), '/', variables('serverKeyName'))]",
      "type": "Microsoft.DBforPostgreSQL/servers/keys",
      "apiVersion": "2020-01-01-preview",
      "dependsOn": [
        "addAccessPolicy",
        "[resourceId('Microsoft.DBforPostgreSQL/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

Zie Azure Database for PostgreSQL Single Server-gegevensversleuteling met door de klant beheerde sleutel voor meer informatie over gegevensversleuteling.