Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini adalah bagian kedua dalam seri tutorial yang terdiri dari empat bagian. Bagian pertama memberikan gambaran umum tentang kunci yang dikelola pelanggan, fitur mereka, dan pertimbangan sebelum Anda mengaktifkannya di registri Anda. Artikel ini memancang Anda melalui langkah-langkah mengaktifkan kunci yang dikelola pelanggan dengan menggunakan azure CLI, portal Azure, atau templat Azure Resource Manager.
Prasyarat
- Instal Azure CLI atau bersiaplah untuk menggunakan Azure Cloud Shell.
- Masuk ke portal Azure.
Mengaktifkan kunci yang dikelola pelanggan dengan menggunakan Azure CLI
Buat grup sumber daya
Jalankan perintah az group create untuk membuat grup sumber daya yang akan menahan brankas kunci, registri kontainer, dan sumber daya lain yang diperlukan:
az group create --name <resource-group-name> --location <location>
Membuat identitas terkelola yang ditetapkan pengguna
Konfigurasikan identitas terkelola yang ditetapkan pengguna untuk registri sehingga Anda dapat mengakses brankas kunci:
Jalankan perintah az identity create untuk membuat identitas terkelola:
az identity create \ --resource-group <resource-group-name> \ --name <managed-identity-name>Dalam output perintah, perhatikan
idnilai danprincipalIduntuk mengonfigurasi akses registri dengan brankas kunci:{ "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecretUrl": "https://control-eastus.identity.azure.net/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentityname/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myresourcegroup", "location": "eastus", "name": "myidentityname", "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "resourceGroup": "myresourcegroup", "tags": {}, "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }Untuk kenyamanan, simpan
idnilai danprincipalIddalam variabel lingkungan:identityID=$(az identity show --resource-group <resource-group-name> --name <managed-identity-name> --query 'id' --output tsv) identityPrincipalID=$(az identity show --resource-group <resource-group-name> --name <managed-identity-name> --query 'principalId' --output tsv)
Buat brankas kunci
Jalankan perintah az keyvault create untuk membuat brankas kunci tempat Anda dapat menyimpan kunci yang dikelola pelanggan untuk enkripsi registri.
Secara default, brankas kunci baru secara otomatis mengaktifkan pengaturan penghapusan sementara. Untuk mencegah hilangnya data dari penghapusan kunci atau brankas kunci yang tidak disengaja, sebaiknya aktifkan pengaturan perlindungan penghapusan menyeluruh :
az keyvault create --name <key-vault-name> \ --resource-group <resource-group-name> \ --enable-purge-protectionUntuk kenyamanan, catat ID sumber daya brankas kunci dan simpan nilai dalam variabel lingkungan:
keyvaultID=$(az keyvault show --resource-group <resource-group-name> --name <key-vault-name> --query 'id' --output tsv)
Mengaktifkan layanan tepercaya untuk mengakses brankas kunci
Jika brankas kunci dilindungi dengan firewall atau jaringan virtual (titik akhir privat), Anda harus mengaktifkan pengaturan jaringan agar mengizinkan akses oleh layanan Azure tepercaya. Untuk informasi lebih lanjut, lihat Mengonfigurasi pengaturan jaringan Azure Key Vault.
Mengaktifkan identitas terkelola untuk mengakses brankas kunci
Ada dua cara untuk mengaktifkan identitas terkelola untuk mengakses brankas kunci Anda.
Opsi pertama adalah mengonfigurasi kebijakan akses untuk brankas kunci dan mengatur izin kunci untuk akses dengan identitas terkelola yang ditetapkan pengguna:
Jalankan perintah az keyvault set policy . Berikan nilai variabel lingkungan yang dibuat dan disimpan sebelumnya dari
principalID.Atur izin kunci ke
get,unwrapKey, danwrapKey:az keyvault set-policy \ --resource-group <resource-group-name> \ --name <key-vault-name> \ --object-id $identityPrincipalID \ --key-permissions get unwrapKey wrapKey
Opsi kedua adalah menggunakan kontrol akses berbasis peran Azure (RBAC) untuk menetapkan izin ke identitas terkelola yang ditetapkan pengguna dan mengakses brankas kunci. Jalankan perintah az role assignment create dan tetapkan Key Vault Crypto Service Encryption User peran ke identitas terkelola yang ditetapkan pengguna:
az role assignment create --assignee $identityPrincipalID \
--role "Key Vault Crypto Service Encryption User" \
--scope $keyvaultID
Membuat kunci dan mendapatkan ID kunci
Jalankan perintah az keyvault key create untuk membuat kunci di brankas kunci:
az keyvault key create \ --name <key-name> \ --vault-name <key-vault-name>Dalam output perintah, perhatikan ID kunci (
kid):[...] "key": { "crv": null, "d": null, "dp": null, "dq": null, "e": "AQAB", "k": null, "keyOps": [ "encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey" ], "kid": "https://mykeyvault.vault.azure.net/keys/mykey/<version>", "kty": "RSA", [...]Untuk kenyamanan, simpan format yang Anda pilih untuk ID kunci dalam
$keyIDvariabel lingkungan. Anda dapat menggunakan ID kunci dengan atau tanpa versi.
Rotasi kunci
Anda dapat memilih rotasi kunci manual atau otomatis.
Mengenkripsi registri dengan kunci yang dikelola pelanggan yang memiliki versi kunci hanya akan memungkinkan rotasi kunci manual di Azure Container Registry. Contoh ini menyimpan properti kid kunci:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
Mengenkripsi registri dengan kunci yang dikelola pelanggan dengan menghilangkan versi kunci akan mengaktifkan pemutaran kunci otomatis yang dapat mendeteksi versi kunci baru di Azure Key Vault. Contoh ini menghapus versi dari properti kunci kid:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Membuat registri dengan kunci yang dikelola pelanggan
Jalankan perintah az acr create untuk membuat registri di tingkat layanan Premium dan aktifkan kunci yang dikelola pelanggan.
Gunakan nilai ID identitas terkelola (
id) dan ID kunci (kid) yang sudah disimpan dalam variabel lingkungan di langkah sebelumnya:az acr create \ --resource-group <resource-group-name> \ --name <container-registry-name> \ --identity $identityID \ --key-encryption-key $keyID \ --sku Premium
Tampilkan status enkripsi
Jalankan perintah az acr encryption show untuk menampilkan status enkripsi registri dengan kunci yang dikelola pelanggan:
az acr encryption show --name <container-registry-name>
Bergantung pada kunci yang digunakan untuk mengenkripsi registri, outputnya mirip dengan:
{
"keyVaultProperties": {
"identity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"keyIdentifier": "https://myvault.vault.azure.net/keys/myresourcegroup/abcdefg123456789...",
"keyRotationEnabled": true,
"lastKeyRotationTimestamp": xxxxxxxx
"versionedKeyIdentifier": "https://myvault.vault.azure.net/keys/myresourcegroup/abcdefg123456789...",
},
"status": "enabled"
}
Mengaktifkan kunci yang dikelola pelanggan dengan menggunakan portal Azure
Membuat identitas terkelola yang ditetapkan pengguna
Untuk membuat identitas terkelola yang ditetapkan pengguna di sumber daya Azure melalui portal Azure:
Ikuti langkah-langkah untuk membuat identitas yang ditetapkan pengguna.
Simpan nama identitas untuk menggunakannya di langkah selanjutnya.
Buat brankas kunci
Ikuti langkah-langkah di Mulai Cepat: Membuat brankas kunci menggunakan portal Azure.
Saat Anda membuat brankas kunci untuk kunci yang dikelola pelanggan, pada tab Dasar, aktifkan pengaturan Perlindungan Penghapusan. Pengaturan ini membantu mencegah hilangnya data dari penghapusan kunci atau brankas kunci yang tidak disengaja.
Mengaktifkan layanan tepercaya untuk mengakses brankas kunci
Jika brankas kunci dilindungi dengan firewall atau jaringan virtual (titik akhir privat), aktifkan pengaturan jaringan agar mengizinkan akses oleh layanan Azure tepercaya. Untuk informasi lebih lanjut, lihat Mengonfigurasi pengaturan jaringan Azure Key Vault.
Mengaktifkan identitas terkelola untuk mengakses brankas kunci
Ada dua cara untuk mengaktifkan identitas terkelola untuk mengakses brankas kunci Anda.
Opsi pertama adalah mengonfigurasi kebijakan akses untuk brankas kunci dan mengatur izin kunci untuk akses dengan identitas terkelola yang ditetapkan pengguna:
- Buka brankas kunci Anda.
- Pilih Pengaturan>Kebijakan akses > +Tambahkan Kebijakan Akses.
- Pilih Izin kunci, lalu pilih Dapatkan, Buka Bungkus Kunci, dan Bungkus Kunci.
- Di Pilih utama, pilih nama sumber daya identitas terkelola yang ditetapkan pengguna Anda.
- Pilih Tambahkan, lalu pilih Simpan.
Opsi lainnya adalah menetapkan peran RBAC ke identitas terkelola yang ditetapkan oleh pengguna pada cakupan key vault. Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.
Membuat kunci
Buat kunci dalam brankas kunci dan gunakan kunci tersebut untuk mengenkripsi registri. Ikuti langkah-langkah ini jika Anda ingin memilih versi kunci tertentu sebagai kunci yang dikelola pelanggan. Anda mungkin juga perlu membuat kunci sebelum membuat registri jika akses brankas kunci dibatasi ke titik akhir privat atau jaringan yang dipilih.
- Buka brankas kunci Anda.
- Pilih Pengaturan>Kunci.
- Pilih +Hasilkan/Impor dan masukkan nama unik untuk kunci tersebut.
- Terima nilai default yang tersisa, lalu pilih Buat.
- Setelah pembuatan, pilih kunci lalu pilih versi saat ini. Salin Pengidentifikasi kunci untuk versi kunci.
Membuat registri kontainer
- Pilih Buat sumber daya>Kontainer>Registri Kontainer.
- Pada tab Dasar, pilih atau buat grup sumber daya, lalu masukkan nama registri . Di SKU, pilih Premium.
- Pada tab Enkripsi , untuk Kunci yang dikelola pelanggan, pilih Diaktifkan.
- Untuk Identitas, pilih identitas terkelola yang Anda buat.
- Untuk Enkripsi, pilih salah satu opsi berikut:
- Pilih Pilih dari Key Vault, lalu pilih brankas kunci dan kunci yang ada atau pilih Buat baru. Kunci yang Anda pilih tidak memiliki versi dan mengaktifkan rotasi kunci otomatis.
- Pilih Masukkan URI kunci, dan berikan pengenal kunci yang ada. Anda dapat menyediakan URI kunci yang memiliki versi (untuk kunci yang harus diganti secara manual) atau URI kunci tanpa versi (yang memungkinkan rotasi kunci secara otomatis). Lihat bagian sebelumnya untuk langkah-langkah untuk membuat kunci.
- Pilih Tinjau dan buat.
- Pilih Buat untuk menyebarkan instans registri.
Perlihatkan status enkripsi
Untuk melihat status enkripsi registri Anda di portal, buka registri Anda. Di bawah Pengaturan, pilih Enkripsi.
Mengaktifkan kunci yang dikelola pelanggan dengan menggunakan templat Resource Manager
Anda dapat menggunakan templat Resource Manager untuk membuat registri kontainer dan mengaktifkan enkripsi dengan kunci yang dikelola pelanggan:
Salin konten templat Resource Manager berikut ke file baru dan simpan sebagai CMKtemplate.json:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "vault_name": { "defaultValue": "", "type": "String" }, "registry_name": { "defaultValue": "", "type": "String" }, "identity_name": { "defaultValue": "", "type": "String" }, "kek_id": { "type": "String" } }, "variables": {}, "resources": [ { "type": "Microsoft.ContainerRegistry/registries", "apiVersion": "2019-12-01-preview", "name": "[parameters('registry_name')]", "location": "[resourceGroup().location]", "sku": { "name": "Premium", "tier": "Premium" }, "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name'))]": {} } }, "dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name'))]" ], "properties": { "adminUserEnabled": false, "encryption": { "status": "enabled", "keyVaultProperties": { "identity": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name')), '2023-07-01').clientId]", "KeyIdentifier": "[parameters('kek_id')]" } }, "networkRuleSet": { "defaultAction": "Allow", "virtualNetworkRules": [], "ipRules": [] }, "policies": { "quarantinePolicy": { "status": "disabled" }, "trustPolicy": { "type": "Notary", "status": "disabled" }, "retentionPolicy": { "days": 7, "status": "disabled" } } } }, { "type": "Microsoft.KeyVault/vaults/accessPolicies", "apiVersion": "2023-07-01", "name": "[concat(parameters('vault_name'), '/add')]", "dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name'))]" ], "properties": { "accessPolicies": [ { "tenantId": "[subscription().tenantId]", "objectId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name')), '2023-07-01').principalId]", "permissions": { "keys": [ "get", "unwrapKey", "wrapKey" ] } } ] } }, { "type": "Microsoft.ManagedIdentity/userAssignedIdentities", "apiVersion": "2023-07-01", "name": "[parameters('identity_name')]", "location": "[resourceGroup().location]" } ] }Ikuti langkah-langkah di bagian sebelumnya untuk membuat sumber daya berikut ini:
- Penyimpanan kunci, diidentifikasi dengan nama
- Kunci di brankas kunci, diidentifikasi dengan ID
Jalankan perintah az deployment group create untuk membuat registri dengan menggunakan file templat sebelumnya. Saat diperlukan, berikan nama registri baru dan nama identitas terkelola yang diberikan oleh pengguna, bersama dengan nama brankas kunci dan ID kunci yang Anda buat.
az deployment group create \ --resource-group <resource-group-name> \ --template-file CMKtemplate.json \ --parameters \ registry_name=<registry-name> \ identity_name=<managed-identity> \ vault_name=<key-vault-name> \ key_id=<key-vault-key-id>Jalankan perintah az acr encryption show untuk menampilkan status enkripsi registri:
az acr encryption show --name <registry-name>
Langkah berikutnya
Lanjutkan ke artikel berikutnya untuk mempelajari cara memutar kunci yang dikelola pelanggan, memperbarui versi kunci, dan mencabut kunci tersebut.