Povolení klíče spravovaného zákazníkem
Tento článek je druhou částí čtyřdílné série kurzů. První část obsahuje přehled klíčů spravovaných zákazníkem, jejich funkcí a důležitých informací, než ho povolíte v registru. Tento článek vás provede postupem povolení klíče spravovaného zákazníkem pomocí Azure CLI, webu Azure Portal nebo šablony Azure Resource Manageru.
Požadavky
- Nainstalujte Azure CLI nebo se připravte na použití Azure Cloud Shellu.
- Přihlaste se k portálu Azure.
Povolení klíče spravovaného zákazníkem pomocí Azure CLI
Vytvoření skupiny zdrojů
Spuštěním příkazu az group create vytvořte skupinu prostředků, která bude obsahovat váš trezor klíčů, registr kontejneru a další požadované prostředky:
az group create --name <resource-group-name> --location <location>
Vytvoření spravované identity přiřazené uživatelem
Nakonfigurujte spravovanou identitu přiřazenou uživatelem pro registr, abyste měli přístup k trezoru klíčů:
Spuštěním příkazu az identity create vytvořte spravovanou identitu:
az identity create \ --resource-group <resource-group-name> \ --name <managed-identity-name>
Ve výstupu příkazu si poznamenejte
id
hodnoty aprincipalId
nakonfigurujte přístup k registru pomocí trezoru klíčů:{ "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" }
Pro usnadnění práci uložte
id
hodnoty doprincipalId
proměnných prostředí: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)
Vytvořte trezor klíčů.
Spuštěním příkazu az keyvault create vytvořte trezor klíčů, do kterého můžete uložit klíč spravovaný zákazníkem pro šifrování registru.
Ve výchozím nastavení nový trezor klíčů automaticky povolí nastavení obnovitelného odstranění . Pokud chcete zabránit ztrátě dat před náhodným odstraněním klíčů nebo trezorů klíčů, doporučujeme povolit nastavení ochrany před vymazáním:
az keyvault create --name <key-vault-name> \ --resource-group <resource-group-name> \ --enable-purge-protection
Pro usnadnění si poznamenejte ID prostředku trezoru klíčů a uložte hodnotu do proměnných prostředí:
keyvaultID=$(az keyvault show --resource-group <resource-group-name> --name <key-vault-name> --query 'id' --output tsv)
Povolení přístupu k trezoru klíčů důvěryhodným službám
Pokud je trezor klíčů v ochraně pomocí brány firewall nebo virtuální sítě (privátní koncový bod), musíte povolit nastavení sítě, aby bylo možné povolit přístup důvěryhodnými službami Azure. Další informace najdete v tématu Konfigurace nastavení sítě služby Azure Key Vault.
Povolení spravovaných identit pro přístup k trezoru klíčů
Existují dva způsoby, jak povolit spravovaným identitám přístup k trezoru klíčů.
První možností je nakonfigurovat zásady přístupu pro trezor klíčů a nastavit oprávnění klíče pro přístup pomocí spravované identity přiřazené uživatelem:
Spusťte příkaz az keyvault set policy. Předejte dříve vytvořenou a uloženou hodnotu
principalID
proměnné prostředí .Nastavte oprávnění ke klíči na
get
,unwrapKey
awrapKey
:az keyvault set-policy \ --resource-group <resource-group-name> \ --name <key-vault-name> \ --object-id $identityPrincipalID \ --key-permissions get unwrapKey wrapKey
Druhou možností je použít řízení přístupu na základě role (RBAC) Azure k přiřazení oprávnění spravované identitě přiřazené uživatelem a přístupu k trezoru klíčů. Spusťte příkaz az role assignment create a přiřaďte Key Vault Crypto Service Encryption User
roli spravované identitě přiřazené uživatelem:
az role assignment create --assignee $identityPrincipalID \
--role "Key Vault Crypto Service Encryption User" \
--scope $keyvaultID
Vytvoření klíče a získání ID klíče
Spuštěním příkazu az keyvault key create vytvořte klíč v trezoru klíčů:
az keyvault key create \ --name <key-name> \ --vault-name <key-vault-name>
Ve výstupu příkazu si poznamenejte ID klíče (
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", [...]
Pro usnadnění použití uložte formát, který zvolíte pro ID klíče v
$keyID
proměnné prostředí. ID klíče můžete použít s verzí nebo bez této verze.
Obměna klíčů
Můžete zvolit ruční nebo automatické obměně klíčů.
Šifrování registru pomocí klíče spravovaného zákazníkem, který má verzi klíče, umožní v Azure Container Registry pouze ruční obměnu klíčů. Tento příklad ukládá vlastnost klíče kid
:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
Šifrování registru pomocí klíče spravovaného zákazníkem vynecháním verze klíče umožní automatické obměně klíčů zjistit novou verzi klíče ve službě Azure Key Vault. Tento příklad odebere verzi z vlastnosti klíče kid
:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Vytvoření registru s klíčem spravovaným zákazníkem
Spuštěním příkazu az acr create vytvořte registr na úrovni služby Premium a povolte klíč spravovaný zákazníkem.
Předejte hodnoty ID spravované identity (
id
) a ID klíče (kid
) uložené v proměnných prostředí v předchozích krocích:az acr create \ --resource-group <resource-group-name> \ --name <container-registry-name> \ --identity $identityID \ --key-encryption-key $keyID \ --sku Premium
Zobrazit stav šifrování
Spuštěním příkazu az acr encryption show zobrazte stav šifrování registru pomocí klíče spravovaného zákazníkem:
az acr encryption show --name <container-registry-name>
V závislosti na klíči použitém k šifrování registru se výstup podobá:
{
"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"
}
Povolení klíče spravovaného zákazníkem pomocí webu Azure Portal
Vytvoření spravované identity přiřazené uživatelem
Vytvoření spravované identity přiřazené uživatelem pro prostředky Azure na webu Azure Portal:
Podle pokynů vytvořte identitu přiřazenou uživatelem.
Uložte název identity, abyste ho mohli použít v dalších krocích.
Vytvořte trezor klíčů.
Postupujte podle kroků v rychlém startu: Vytvoření trezoru klíčů pomocí webu Azure Portal.
Při vytváření trezoru klíčů pro klíč spravovaný zákazníkem povolte na kartě Základy nastavení ochrany před vymazáním. Toto nastavení pomáhá zabránit ztrátě dat před náhodným odstraněním klíčů nebo trezorů klíčů.
Povolení přístupu k trezoru klíčů důvěryhodným službám
Pokud je trezor klíčů v ochraně pomocí brány firewall nebo virtuální sítě (privátní koncový bod), povolte nastavení sítě tak, aby umožňovalo přístup důvěryhodnými službami Azure. Další informace najdete v tématu Konfigurace nastavení sítě služby Azure Key Vault.
Povolení spravovaných identit pro přístup k trezoru klíčů
Existují dva způsoby, jak povolit spravovaným identitám přístup k trezoru klíčů.
První možností je nakonfigurovat zásady přístupu pro trezor klíčů a nastavit oprávnění klíče pro přístup pomocí spravované identity přiřazené uživatelem:
- Přejděte do trezoru klíčů.
- Vyberte Nastavení>zásad > přístupu + Přidat zásady přístupu.
- Vyberte Oprávnění ke klíči a pak vyberte Získat, Rozbalit klíč a Zalamovat klíč.
- V části Vybrat objekt zabezpečení vyberte název prostředku spravované identity přiřazené uživatelem.
- Vyberte Přidat a potom Uložit.
Druhou možností je přiřadit Key Vault Crypto Service Encryption User
roli RBAC spravované identitě přiřazené uživatelem v oboru trezoru klíčů. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.
Vytvoření klíče
Vytvořte klíč v trezoru klíčů a použijte ho k šifrování registru. Pokud chcete jako klíč spravovaný zákazníkem vybrat konkrétní verzi klíče, postupujte podle těchto kroků. Pokud je přístup k trezoru klíčů omezený na privátní koncový bod nebo vybrané sítě, možná budete muset před vytvořením registru vytvořit klíč.
- Přejděte do trezoru klíčů.
- Vyberte Klíče nastavení>.
- Vyberte +Generovat/Importovat a zadejte jedinečný název klíče.
- Přijměte zbývající výchozí hodnoty a pak vyberte Vytvořit.
- Po vytvoření vyberte klíč a pak vyberte aktuální verzi. Zkopírujte identifikátor klíče pro verzi klíče.
Vytvoření registru kontejneru
- Vyberte Vytvořit prostředek>Kontejnery>Container Registry.
- Na kartě Základy vyberte nebo vytvořte skupinu prostředků a zadejte název registru. V SKU vyberte Premium.
- Na kartě Šifrování u klíče spravovaného zákazníkem vyberte Povoleno.
- V části Identita vyberte spravovanou identitu, kterou jste vytvořili.
- Pro šifrování zvolte jednu z následujících možností:
- Zvolte Vybrat ze služby Key Vault a pak vyberte existující trezor klíčů a klíč nebo vyberte Vytvořit nový. Vybraný klíč není převedený a umožňuje automatické obměně klíčů.
- Vyberte Enter key URI a zadejte identifikátor existujícího klíče. Můžete zadat identifikátor URI klíče s verzí (pro klíč, který se musí otočit ručně) nebo identifikátor URI neversionovaného klíče (který umožňuje automatickou obměnu klíčů). Postup vytvoření klíče najdete v předchozí části.
- Vyberte Zkontrolovat a vytvořit.
- Vyberte Vytvořit a nasaďte instanci registru.
Zobrazení stavu šifrování
Pokud chcete zobrazit stav šifrování vašeho registru na portálu, přejděte do svého registru. V části Nastavení vyberte Šifrování.
Povolení klíče spravovaného zákazníkem pomocí šablony Resource Manageru
Pomocí šablony Resource Manageru můžete vytvořit registr kontejneru a povolit šifrování pomocí klíče spravovaného zákazníkem:
Zkopírujte následující obsah šablony Resource Manageru do nového souboru a uložte ho jako 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')), '2018-11-30').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": "2018-02-14", "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')), '2018-11-30').principalId]", "permissions": { "keys": [ "get", "unwrapKey", "wrapKey" ] } } ] } }, { "type": "Microsoft.ManagedIdentity/userAssignedIdentities", "apiVersion": "2018-11-30", "name": "[parameters('identity_name')]", "location": "[resourceGroup().location]" } ] }
Postupujte podle kroků v předchozích částech a vytvořte následující prostředky:
- Key Vault identifikovaný podle názvu
- Klíč trezoru klíčů identifikovaný podle ID klíče
Spuštěním příkazu az deployment group create vytvořte registr pomocí předchozího souboru šablony. Pokud je uvedeno, zadejte nový název registru a název spravované identity přiřazené uživatelem spolu s názvem trezoru klíčů a ID klíče, které jste vytvořili.
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>
Spuštěním příkazu az acr encryption show zobrazte stav šifrování registru:
az acr encryption show --name <registry-name>
Další kroky
Přejděte k dalšímu článku a projděte si obměně klíčů spravovaných zákazníkem, aktualizaci verzí klíčů a odvolání klíče spravovaného zákazníkem.