Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, dört bölümlü bir öğretici serisinin ikinci bölümüdür. Birinci bölüm , kayıt defterinizde etkinleştirmeden önce müşteri tarafından yönetilen anahtarlara, bunların özelliklerine ve dikkat edilmesi gerekenlere genel bir bakış sağlar. Bu makalede Azure CLI, Azure portalı veya Azure Resource Manager şablonu kullanarak müşteri tarafından yönetilen anahtarı etkinleştirme adımları gösterilmektedir.
Prerequisites
- Azure CLI'yi yükleyin veya Azure Cloud Shell'i kullanmaya hazırlanın.
- Azure portalınaoturum açın.
Azure CLI kullanarak müşteri tarafından yönetilen anahtarı etkinleştirme
Bir kaynak grubu oluşturun
Anahtar kasanızı, kapsayıcı kayıt defterinizi ve diğer gerekli kaynakları barındıracak bir kaynak grubu oluşturmak için az group create komutunu çalıştırın:
az group create --name <resource-group-name> --location <location>
Kullanıcının atadığı yönetilen kimliği oluşturun
Kayıt defteri için kullanıcı tarafından atanan yönetilen kimlik yapılandırarak anahtar kasasına erişin.
Yönetilen kimliği oluşturmak için az identity create komutunu çalıştırın:
az identity create \ --resource-group <resource-group-name> \ --name <managed-identity-name>Komut çıkışında,
idveprincipalIddeğerlerini, anahtar kasasıyla kayıt defteri erişimini yapılandırmak için not alın:{ "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" }Kolaylık sağlamak için
idveprincipalIddeğerlerini ortam değişkenlerinde depolayın.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)
Anahtar kasası oluştur
Kayıt defteri şifrelemesi için müşteri tarafından yönetilen bir anahtar depolayabileceğiniz bir anahtar kasası oluşturmak için az keyvault create komutunu çalıştırın.
Varsayılan olarak, yeni anahtar kasası geçici silme ayarını otomatik olarak etkinleştirir. Anahtarların veya anahtar kasalarının yanlışlıkla silinmesi sonucu veri kaybını önlemek amacıyla temizleme koruması ayarını etkinleştirmenizi öneririz.
az keyvault create --name <key-vault-name> \ --resource-group <resource-group-name> \ --enable-purge-protectionKolaylık sağlamak için anahtar kasasının kaynak kimliğini not alın ve değeri ortam değişkenlerinde depolayın:
keyvaultID=$(az keyvault show --resource-group <resource-group-name> --name <key-vault-name> --query 'id' --output tsv)
Anahtar kasasına erişmek için güvenilen hizmetleri etkinleştirme
Anahtar kasası bir güvenlik duvarı veya sanal ağ (özel uç nokta) ile koruma altındaysa , güvenilir Azure hizmetlerinin erişimine izin vermek için ağ ayarlarını etkinleştirmeniz gerekir. Daha fazla bilgi için bkz . Azure Key Vault ağ ayarlarını yapılandırma.
Anahtar kasasına erişmek için yönetilen kimlikleri etkinleştirme
Yönetilen kimliklerin anahtar kasanıza erişmesini sağlamanın iki yolu vardır.
İlk seçenek, anahtar kasasının erişim ilkesini yapılandırmak ve bir kullanıcı tarafından atanan yönetilen kimlikle erişim için anahtar izinlerini ayarlamaktır.
az keyvault set policy komutunu çalıştırın. daha önce oluşturulan ve depolanan ortam değişkeni değerini geçirin
principalID.Anahtar izinlerini
get,unwrapKeyvewrapKeyolarak ayarlayın:az keyvault set-policy \ --resource-group <resource-group-name> \ --name <key-vault-name> \ --object-id $identityPrincipalID \ --key-permissions get unwrapKey wrapKey
İkinci seçenek, kullanıcı tarafından atanan yönetilen kimliğe izin atamak ve anahtar kasasına erişmek için Azure rol tabanlı erişim denetimini (RBAC) kullanmaktır.
az role assignment create komutunu çalıştırın ve rolü kullanıcı tarafından atanan yönetilen kimliğe atayınKey Vault Crypto Service Encryption User:
az role assignment create --assignee $identityPrincipalID \
--role "Key Vault Crypto Service Encryption User" \
--scope $keyvaultID
Anahtar oluşturma ve anahtar kimliğini alma
az keyvault key create komutunu çalıştırarak anahtar kasasında bir anahtar oluşturun:
az keyvault key create \ --name <key-name> \ --vault-name <key-vault-name>Komut çıktısında, anahtar kimliğine (
kid) dikkat edin.[...] "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", [...]Kolaylık sağlamak için, anahtar kimliği için seçtiğiniz biçimi ortam değişkeninde
$keyIDdepolayın. Bir anahtar kimliğini sürümlü veya sürümsüz kullanabilirsiniz.
Anahtar döndürme
El ile veya otomatik anahtar döndürmeyi seçebilirsiniz.
Bir kayıt defterinin anahtar sürümüne sahip müşteri tarafından yönetilen bir anahtarla şifrelenmesi, Azure Container Registry'de yalnızca el ile anahtar döndürmeye izin verir. Bu örnek anahtarın kid özelliğini depolar:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
Anahtar sürümünü atlayarak kayıt defterini müşteri tarafından yönetilen bir anahtarla şifrelemek, Azure Key Vault'ta yeni bir anahtar sürümünü algılamak için otomatik anahtar döndürmeyi etkinleştirir. Bu örnek, anahtarın kid özelliğindeki sürümü kaldırır.
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Müşteri tarafından yönetilen anahtarla kayıt defteri oluşturma
Premium hizmet katmanında bir kayıt defteri oluşturmak ve müşteri tarafından yönetilen anahtarı etkinleştirmek için az acr create komutunu çalıştırın.
Önceki adımlarda ortam değişkenlerinde depolanan yönetilen kimlik kimliği (
id) ve anahtar kimliği (kid) değerlerini geçirin:az acr create \ --resource-group <resource-group-name> \ --name <container-registry-name> \ --identity $identityID \ --key-encryption-key $keyID \ --sku Premium
Şifreleme durumunu göster
Müşteri tarafından yönetilen bir anahtarla kayıt defteri şifrelemesinin durumunu göstermek için az acr encryption show komutunu çalıştırın:
az acr encryption show --name <container-registry-name>
Kayıt defterini şifrelemek için kullanılan anahtara bağlı olarak çıkış şuna benzer:
{
"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"
}
Azure portalını kullanarak müşteri tarafından yönetilen anahtarı etkinleştirme
Kullanıcının atadığı yönetilen kimliği oluşturun
Azure portalında Azure kaynakları için kullanıcı tarafından atanan yönetilen kimlik oluşturmak için:
Kullanıcı tarafından atanan bir kimlik oluşturmak için adımları izleyin.
Sonraki adımlarda kullanmak için kimliğin adını kaydedin.
Anahtar kasası oluştur
Hızlı Başlangıç: Azure portalını kullanarak anahtar kasası oluşturma'daki adımları izleyin.
Müşteri tarafından yönetilen bir anahtar için anahtar kasası oluştururken Temel Bilgiler sekmesinde Silme koruması ayarını etkinleştirin. Bu ayar, anahtarların veya anahtar kasalarının yanlışlıkla silinmesinden kaynaklanan veri kaybının önlenmesine yardımcı olur.
Anahtar kasasına erişmek için güvenilen hizmetleri etkinleştirme
Anahtar kasası bir güvenlik duvarı veya sanal ağ (özel uç nokta) ile koruma altındaysa , güvenilir Azure hizmetlerinin erişimine izin vermek için ağ ayarını etkinleştirin. Daha fazla bilgi için bkz . Azure Key Vault ağ ayarlarını yapılandırma.
Anahtar kasasına erişmek için yönetilen kimlikleri etkinleştirme
Yönetilen kimliklerin anahtar kasanıza erişmesini sağlamanın iki yolu vardır.
İlk seçenek, anahtar kasasının erişim ilkesini yapılandırmak ve bir kullanıcı tarafından atanan yönetilen kimlikle erişim için anahtar izinlerini ayarlamaktır.
- Anahtar kasanıza gidin.
- Ayarlar>Erişim ilkeleri > +Erişim İlkesi Ekle'yi seçin.
- Anahtar İzinleri'ni seçin ve ardından Al, Anahtarı Çöz ve Anahtarı Sar seçin.
- Principal seç bölümünde, kullanıcı tarafından atanan yönetilen kimliğinizin kaynak adını seçin.
- Ekle'yi ve ardından Kaydet'i seçin.
Diğer seçenek, Key Vault Crypto Service Encryption User RBAC rolünü anahtar kasası kapsamında kullanıcı tarafından atanan yönetilen kimliğe atamaktır. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Anahtar oluşturma
Anahtar kasasında bir anahtar oluşturun ve bunu kullanarak kayıt defterini şifreleyin. Müşteri tarafından yönetilen anahtar olarak belirli bir anahtar sürümünü seçmek istiyorsanız bu adımları izleyin. Ayrıca, anahtar kasası erişimi özel bir uç nokta veya seçili ağlara kısıtlanmışsa kayıt defterini oluşturmadan önce bir anahtar oluşturmanız gerekebilir.
- Anahtar kasanıza gidin.
- Ayarlar Anahtarları'nı> seçin.
- +Oluştur/İçeri Aktar'ı seçin ve anahtar için benzersiz bir ad girin.
- Kalan varsayılan değerleri kabul edin ve oluştur'u seçin.
- Oluşturma işleminden sonra anahtarı ve ardından geçerli sürümü seçin. Anahtarın sürümü için Anahtar tanımlayıcısını kopyalayın.
Konteyner kayıt defteri oluşturma
- Bir kaynak oluştur>Kapsayıcılar>Kapsayıcı Kayıt Defteri'ni seçin.
- Temel Bilgiler sekmesinde bir kaynak grubu seçin veya oluşturun ve bir kayıt defteri adı girin. SKU'daPremium'ı seçin.
- Şifreleme sekmesinde, Müşteri tarafından yönetilen anahtar için Etkin'i seçin.
- Kimlik için oluşturduğunuz yönetilen kimliği seçin.
-
Şifreleme için aşağıdaki seçeneklerden birini belirleyin:
- Key Vault'tan Seç'i seçin ve ardından mevcut bir anahtar kasası ve anahtarı seçin veya Yeni oluştur'u seçin. Seçtiğiniz anahtar tersine çevrilmemiş ve otomatik anahtar döndürmeyi etkinleştirir.
- Anahtar URI'sini girin'i seçin ve mevcut anahtarın tanımlayıcısını sağlayın. Sürümlü anahtar URI'si (el ile döndürülmesi gereken bir anahtar için) veya ters çevrilmemiş anahtar URI'si (otomatik anahtar döndürmeyi etkinleştirir) sağlayabilirsiniz. Anahtar oluşturma adımları için önceki bölüme bakın.
- Seçin, gözden geçir ve oluştur.
- Kayıt defteri örneğini dağıtmak için Oluştur'u seçin.
Şifreleme durumunu gösterme
Portalda kayıt defterinizin şifreleme durumunu görmek için kayıt defterinize gidin. Ayarlar'ın altında Şifreleme'yi seçin.
Resource Manager şablonu kullanarak müşteri tarafından yönetilen anahtarı etkinleştirme
Kapsayıcı kayıt defteri oluşturmak ve müşteri tarafından yönetilen bir anahtarla şifrelemeyi etkinleştirmek için Resource Manager şablonu kullanabilirsiniz:
Resource Manager şablonunun aşağıdaki içeriğini yeni bir dosyaya kopyalayın ve CMKtemplate.jsonolarak kaydedin:
{ "$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]" } ] }Aşağıdaki kaynakları oluşturmak için önceki bölümlerde yer alan adımları izleyin:
- Anahtar kasası, adıyla tanımlanır
- Anahtar kimliğiyle tanımlanan anahtar kasası anahtarı
Önceki şablon dosyasını kullanarak kayıt defterini oluşturmak için az deployment group create komutunu çalıştırın. Belirtildiğinde, bir yeni kayıt defteri adı ve kullanıcı tarafından atanan bir yönetilen kimlik adı sağlayın, ardından oluşturduğunuz anahtar kasası adı ve anahtar kimliğini de ekleyin.
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>Kayıt defteri şifrelemesinin durumunu göstermek için az acr encryption show komutunu çalıştırın:
az acr encryption show --name <registry-name>
Sonraki Adımlar
Müşteri tarafından yönetilen anahtarları döndürme, anahtar sürümlerini güncelleştirme ve müşteri tarafından yönetilen anahtarı iptal etme adımlarını görmek için sonraki makaleye ilerleyin.