Azure CLI kullanarak PostgreSQL için Azure Veritabanı Tek sunucu için veri şifreleme
ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Tek Sunucu
Önemli
PostgreSQL için Azure Veritabanı - Tek Sunucu kullanımdan kaldırma yolundadır. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya yükseltmenizi kesinlikle öneririz. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya geçiş hakkında daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı Tek Sunucuya ne oluyor?.
PostgreSQL için Azure Veritabanı Tek sunucunuz için veri şifrelemesini ayarlamak ve yönetmek için Azure CLI'yi kullanmayı öğrenin.
Azure CLI önkoşulları
Bir Azure aboneliğinizin olması ve bu abonelikte yönetici olmanız gerekir.
Müşteri tarafından yönetilen anahtar için kullanılacak bir anahtar kasası ve anahtar oluşturun. Ayrıca anahtar kasasında temizleme korumasını ve geçici silmeyi etkinleştirin.
az keyvault create -g <resource_group> -n <vault_name> --enable-soft-delete true --enable-purge-protection true
Oluşturulan Azure Key Vault'ta, PostgreSQL için Azure Veritabanı Tek sunucusunun veri şifrelemesi için kullanılacak anahtarı oluşturun.
az keyvault key create --name <key_name> -p software --vault-name <vault_name>
Mevcut bir anahtar kasasını kullanmak için, müşteri tarafından yönetilen anahtar olarak kullanılacak aşağıdaki özelliklere sahip olması gerekir:
-
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
-
Müşteri tarafından yönetilen anahtar olarak kullanılabilmesi için anahtarın aşağıdaki özniteliklere sahip olması gerekir:
- Son kullanma tarihi yok
- Devre dışı bırakılmadı
- Alma, sarmalama ve kaldırma işlemlerini gerçekleştirme
Anahtar işlemleri için doğru izinleri ayarlama
PostgreSQL için Azure Veritabanı Tek sunucunuz için yönetilen kimliği almanın iki yolu vardır.
Yönetilen kimlikle yeni bir PostgreSQL için Azure Veritabanı sunucusu oluşturun.
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
Yönetilen kimlik almak için mevcut bir PostgreSQL için Azure Veritabanı sunucusunu güncelleştirin.
az postgres server update --resource-group <resource_group> --name <server_name> --assign-identity
PostgreSQL Tek sunucu sunucusunun adı olan Sorumlu için Anahtar izinlerini (Al, Sarmala, Çöz) ayarlayın.
az keyvault set-policy --name -g <resource_group> --key-permissions get unwrapKey wrapKey --object-id <principal id of the server>
PostgreSQL için Azure Veritabanı Tek sunucu için veri şifrelemesini ayarlama
Azure Key Vault'ta oluşturulan anahtarı kullanarak PostgreSQL için Azure Veritabanı Tek sunucu için Veri şifrelemeyi etkinleştirin.
az postgres server key create --name <server_name> -g <resource_group> --kid <key_url>
Anahtar url'si:
https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>
Geri yükleme veya çoğaltma sunucuları için Veri şifrelemesi kullanma
PostgreSQL için Azure Veritabanı Tek sunucu Müşterinin Key Vault'ta depolanan yönetilen anahtarıyla şifrelendiğinde, sunucunun yeni oluşturulan tüm kopyaları da şifrelenir. Bu yeni kopyayı yerel veya coğrafi geri yükleme işlemiyle ya da çoğaltma (yerel/bölgeler arası) işlemi aracılığıyla yapabilirsiniz. Bu nedenle, şifrelenmiş bir PostgreSQL Tek sunucu sunucusu için aşağıdaki adımları kullanarak şifrelenmiş bir geri yüklenen sunucu oluşturabilirsiniz.
Geri yüklenen/çoğaltma sunucusu oluşturma
Sunucu geri yüklendikten sonra, geri yüklenen sunucuyu veri şifrelemesini yeniden doğrulama
- Çoğaltma sunucusu için kimlik atama
az postgres server update --name <server name> -g <resource_group> --assign-identity
- Geri yüklenen/çoğaltma sunucusu için kullanılması gereken mevcut anahtarı alma
az postgres server key list --name '<server_name>' -g '<resource_group_name>'
- Geri yüklenen/çoğaltma sunucusu için yeni kimlik ilkesini ayarlama
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>
- Geri yüklenen/çoğaltma sunucusunu şifreleme anahtarıyla yeniden doğrulama
az postgres server key create –name <server name> -g <resource_group> --kid <key url>
PostgreSQL için Azure Veritabanı Tek sunucu için kullanılan anahtar için ek özellik
Anahtarı kullanma
az postgres server key show --name <server name> -g <resource_group> --kid <key url>
Anahtar url'si: https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>
Kullanılan Anahtarı listeleme
az postgres server key list --name <server name> -g <resource_group>
Kullanılan anahtarı bırakma
az postgres server key delete -g <resource_group> --kid <key url>
Veri şifrelemeyi etkinleştirmek için Azure Resource Manager şablonu kullanma
Azure portalının dışında, yeni ve mevcut sunucu için Azure Resource Manager şablonlarını kullanarak PostgreSQL için Azure Veritabanı tek sunucunuzda veri şifrelemeyi etkinleştirebilirsiniz.
Mevcut bir sunucu için
Ayrıca, mevcut PostgreSQL için Azure Veritabanı Tek sunucularınızda veri şifrelemeyi etkinleştirmek için Azure Resource Manager şablonlarını kullanabilirsiniz.
Daha önce properties nesnesindeki özelliğin altına kopyaladığınız Azure Key Vault anahtarının
Uri
Kaynak Kimliğini geçirin.API sürümü olarak 2020-01-01-preview kullanın.
{
"$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'))]"
}
}
]
}
Sonraki adımlar
Veri şifreleme hakkında daha fazla bilgi edinmek için bkz. müşteri tarafından yönetilen anahtarla tek sunucu veri şifrelemesi PostgreSQL için Azure Veritabanı.