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:
-
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
-
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
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
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
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.