Datakryptering för Azure Database for PostgreSQL – enskild server med hjälp av Azure CLI
GÄLLER FÖR: Azure Database for PostgreSQL – enskild server
Viktigt!
Azure Database for PostgreSQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till Azure Database for PostgreSQL – flexibel server. Mer information om hur du migrerar till Azure Database for PostgreSQL – flexibel server finns i Vad händer med Azure Database for PostgreSQL – enskild server?.
Lär dig hur du använder Azure CLI för att konfigurera och hantera datakryptering för din Azure Database for PostgreSQL – enskild server.
Förutsättningar för Azure CLI
Du måste ha en Azure-prenumeration och vara administratör för den prenumerationen.
Skapa ett nyckelvalv och en nyckel som ska användas för en kundhanterad nyckel. Aktivera även rensningsskydd och mjuk borttagning i nyckelvalvet.
az keyvault create -g <resource_group> -n <vault_name> --enable-soft-delete true --enable-purge-protection true
I det skapade Azure Key Vault skapar du nyckeln som ska användas för datakryptering av Azure Database for PostgreSQL – enskild server.
az keyvault key create --name <key_name> -p software --vault-name <vault_name>
För att kunna använda ett befintligt nyckelvalv måste det ha följande egenskaper att använda som en kundhanterad nyckel:
-
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
-
Nyckeln måste ha följande attribut för att användas som en kundhanterad nyckel:
- Inget förfallodatum
- Inte aktiverat
- Utföra åtgärder för att hämta, omsluta och packa upp
Ange rätt behörigheter för nyckelåtgärder
Det finns två sätt att hämta den hanterade identiteten för din Azure Database for PostgreSQL – enskild server.
Skapa en ny Azure Database for PostgreSQL-server med en hanterad identitet.
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
Uppdatera en befintlig Azure Database for PostgreSQL-server för att hämta en hanterad identitet.
az postgres server update --resource-group <resource_group> --name <server_name> --assign-identity
Ange nyckelbehörigheterna (Get, Wrap, Unwrap) för principal, som är namnet på PostgreSQL – enskild serverserver.
az keyvault set-policy --name -g <resource_group> --key-permissions get unwrapKey wrapKey --object-id <principal id of the server>
Ange datakryptering för Azure Database for PostgreSQL – enskild server
Aktivera datakryptering för Azure Database for PostgreSQL – enskild server med hjälp av nyckeln som skapades i Azure Key Vault.
az postgres server key create --name <server_name> -g <resource_group> --kid <key_url>
Nyckel-URL:
https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>
Använda datakryptering för återställnings- eller replikservrar
När Azure Database for PostgreSQL – enskild server har krypterats med en kunds hanterade nyckel lagrad i Key Vault krypteras även alla nyligen skapade kopior av servern. Du kan göra den här nya kopian antingen via en lokal eller geo-återställningsåtgärd eller genom en replikåtgärd (lokal/mellan region). Så för en krypterad PostgreSQL Enskild serverserver kan du använda följande steg för att skapa en krypterad återställd server.
Skapa en återställd server/replikserver
När servern har återställts kan du återanvända datakryptering på den återställde servern
- Tilldela identitet för replikservern
az postgres server update --name <server name> -g <resource_group> --assign-identity
- Hämta den befintliga nyckeln som måste användas för den återställde/replikservern
az postgres server key list --name '<server_name>' -g '<resource_group_name>'
- Ange principen för den nya identiteten för den återställde/replikservern
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>
- Verifiera den återställde/replikservern igen med krypteringsnyckeln
az postgres server key create –name <server name> -g <resource_group> --kid <key url>
Ytterligare funktioner för nyckeln som används för Azure Database for PostgreSQL – enskild server
Hämta nyckeln som används
az postgres server key show --name <server name> -g <resource_group> --kid <key url>
Nyckel-URL: https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>
Visa en lista över den nyckel som används
az postgres server key list --name <server name> -g <resource_group>
Släpp den nyckel som används
az postgres server key delete -g <resource_group> --kid <key url>
Använda en Azure Resource Manager-mall för att aktivera datakryptering
Förutom Azure-portalen kan du även aktivera datakryptering på din azure database for PostgreSQL-enskild server med hjälp av Azure Resource Manager-mallar för ny och befintlig server.
För en befintlig server
Dessutom kan du använda Azure Resource Manager-mallar för att aktivera datakryptering på din befintliga Azure Database for PostgreSQL – enskild server.
Skicka resurs-ID:t för Azure Key Vault-nyckeln som du kopierade tidigare under
Uri
egenskapen i egenskapsobjektet.Använd 2020-01-01-preview som API-version.
{
"$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'))]"
}
}
]
}
Nästa steg
Mer information om datakryptering finns i Azure Database for PostgreSQL Datakryptering med enskild server med kundhanterad nyckel.