Enkripsi data untuk Azure Database for PostgreSQL Single server dengan Azure CLI
BERLAKU UNTUK: Azure Database for PostgreSQL - Server Tunggal
Penting
Azure Database for PostgreSQL - Server Tunggal berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke Azure Database for PostgreSQL - Server Fleksibel. Untuk informasi selengkapnya tentang migrasi ke Azure Database for PostgreSQL - Server Fleksibel, lihat Apa yang terjadi pada Server Tunggal Azure Database for PostgreSQL?.
Pelajari cara menggunakan Azure CLI untuk menyiapkan dan mengelola enkripsi data untuk Azure Database for PostgreSQL Single server Anda.
Prasyarat untuk Azure CLI
Anda harus memiliki langganan Azure dan menjadi admin pada langganan tersebut.
Buat brankas kunci dan kunci yang akan digunakan untuk kunci yang dikelola pelanggan. Aktifkan juga perlindungan penghapusan menyeluruh dan penghapusan sementara pada brankas kunci.
az keyvault create -g <resource_group> -n <vault_name> --enable-soft-delete true --enable-purge-protection true
Di Azure Key Vault yang dibuat, buat kunci yang akan digunakan untuk enkripsi data Azure Database for PostgreSQL Single server.
az keyvault key create --name <key_name> -p software --vault-name <vault_name>
Untuk menggunakan brankas kunci yang ada, brankas tersebut harus memiliki properti berikut untuk digunakan sebagai kunci yang dikelola pelanggan:
-
az resource update --id $(az keyvault show --name \ <key_vault_name> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
Perlindungan penghapusan menyeluruh
az keyvault update --name <key_vault_name> --resource-group <resource_group_name> --enable-purge-protection true
-
Kunci harus memiliki atribut berikut untuk digunakan sebagai kunci yang dikelola pelanggan:
- Tidak ada tanggal kedaluwarsa
- Tidak dinonaktifkan
- Melakukan operasi get, wrap, dan unwrap
Mengatur izin yang tepat untuk operasi utama
Ada dua cara untuk mendapatkan identitas terkelola untuk Azure Database for PostgreSQL Single server Anda.
Buat server Azure Database for PostgreSQL baru dengan identitas terkelola.
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
Perbarui server Azure Database for PostgreSQL yang sudah ada untuk mendapatkan identitas terkelola.
az postgres server update --resource-group <resource_group> --name <server_name> --assign-identity
Atur Izin kunci (Get, Wrap, Unwrap) untuk Prinsipal, yang merupakan nama server PostgreSQL Single server.
az keyvault set-policy --name -g <resource_group> --key-permissions get unwrapKey wrapKey --object-id <principal id of the server>
Mengatur enkripsi data untuk server Tunggal Azure Database for PostgreSQL
Aktifkan Enkripsi data untuk Azure Database for PostgreSQL Single server menggunakan kunci yang dibuat di Azure Key Vault.
az postgres server key create --name <server_name> -g <resource_group> --kid <key_url>
URL kunci:
https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>
Menggunakan Enkripsi data untuk memulihkan atau mereplikasi server
Setelah server Tunggal Azure Database for PostgreSQL dienkripsi dengan kunci terkelola pelanggan yang disimpan di Key Vault, setiap salinan server yang baru dibuat juga dienkripsi. Anda dapat membuat salinan baru ini melalui operasi lokal atau pemulihan geografis, atau melalui operasi replika (lokal/lintas wilayah). Jadi untuk server PostgreSQL Single server terenkripsi, Anda dapat menggunakan langkah-langkah berikut untuk membuat server yang dipulihkan yang terenkripsi.
Membuat server yang dipulihkan/replika
Setelah server dipulihkan, validasi ulang enkripsi data pada server yang dipulihkan
- Menetapkan identitas untuk server replika
az postgres server update --name <server name> -g <resource_group> --assign-identity
- Dapatkan kunci yang sudah ada yang harus digunakan untuk server yang dipulihkan/replika
az postgres server key list --name '<server_name>' -g '<resource_group_name>'
- Atur kebijakan identitas baru untuk server yang dipulihkan/replika
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>
- Memvalidasi ulang server yang dipulihkan/replika dengan kunci enkripsi
az postgres server key create –name <server name> -g <resource_group> --kid <key url>
Kemampuan tambahan untuk kunci yang digunakan untuk Azure Database for PostgreSQL Single server
Dapatkan Kunci yang digunakan
az postgres server key show --name <server name> -g <resource_group> --kid <key url>
URL kunci: https://YourVaultName.vault.azure.net/keys/YourKeyName/01234567890123456789012345678901>
Cantumkan Kunci yang digunakan
az postgres server key list --name <server name> -g <resource_group>
Hapus kunci yang sedang digunakan
az postgres server key delete -g <resource_group> --kid <key url>
Menggunakan templat Azure Resource Manager untuk mengaktifkan enkripsi data
Selain portal Microsoft Azure, Anda juga dapat mengaktifkan enkripsi data di Azure Database for PostgreSQL single server menggunakan templat Azure Resource Manager untuk server baru dan yang sudah ada.
Untuk server yang sudah ada
Selain itu, Anda dapat menggunakan templat Azure Resource Manager untuk mengaktifkan enkripsi data di Azure Database for PostgreSQL Single server Anda yang sudah ada.
Teruskan ID Sumber Daya kunci Azure Key Vault yang Anda salin sebelumnya pada properti
Uri
di objek properti.Gunakan 2020-01-01-preview sebagai versi API.
{
"$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'))]"
}
}
]
}
Langkah berikutnya
Untuk mempelajari selengkapnya tentang enkripsi data, lihat Enkripsi data server Tunggal Azure Database for PostgreSQL dengan kunci yang dikelola pelanggan.