Een door de klant beheerde sleutel inschakelen
Dit artikel is deel twee van een vierdelige reeks zelfstudies. Deel 1 biedt een overzicht van door de klant beheerde sleutels, hun functies en overwegingen voordat u er een inschakelt in uw register. Dit artikel begeleidt u bij de stappen voor het inschakelen van een door de klant beheerde sleutel met behulp van de Azure CLI, de Azure Portal of een Azure Resource Manager-sjabloon.
Vereisten
- Installeer de Azure CLI of bereid het gebruik van Azure Cloud Shell voor.
- Meld u aan bij de Azure-portal.
Een door de klant beheerde sleutel inschakelen met behulp van de Azure CLI
Een resourcegroep maken
Voer de opdracht az group create uit om een resourcegroep te maken die uw sleutelkluis, containerregister en andere vereiste resources bevat:
az group create --name <resource-group-name> --location <location>
Een door de gebruiker toegewezen beheerde identiteit maken
Configureer een door de gebruiker toegewezen beheerde identiteit voor het register zodat u toegang hebt tot de sleutelkluis:
Voer de opdracht az identity create uit om de beheerde identiteit te maken:
az identity create \ --resource-group <resource-group-name> \ --name <managed-identity-name>
Noteer in de uitvoer van de opdracht de waarden en
principalId
voor hetid
configureren van registertoegang met de sleutelkluis:{ "clientId": "xxxx2bac-xxxx-xxxx-xxxx-192cxxxx6273", "clientSecretUrl": "https://control-eastus.identity.azure.net/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentityname/credentials?tid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&oid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&aid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/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" }
Sla voor het gemak de
id
waarden enprincipalId
op in omgevingsvariabelen: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)
Een sleutelkluis maken
Voer de opdracht az keyvault create uit om een sleutelkluis te maken waarin u een door de klant beheerde sleutel kunt opslaan voor registerversleuteling.
Standaard schakelt de nieuwe sleutelkluis automatisch de instelling voor voorlopig verwijderen in. Als u wilt voorkomen dat er gegevens verloren gaan als sleutels of sleutelkluizen per ongeluk worden verwijderd, raden we u aan de instelling beveiliging tegen opschonen in te schakelen:
az keyvault create --name <key-vault-name> \ --resource-group <resource-group-name> \ --enable-purge-protection
Noteer voor het gemak de resource-id van de sleutelkluis en sla de waarde op in omgevingsvariabelen:
keyvaultID=$(az keyvault show --resource-group <resource-group-name> --name <key-vault-name> --query 'id' --output tsv)
Vertrouwde services toegang geven tot de sleutelkluis
Als de sleutelkluis wordt beveiligd met een firewall of virtueel netwerk (privé-eindpunt), moet u de netwerkinstellingen inschakelen om toegang door vertrouwde Azure-services toe te staan. Zie Azure Key Vault-netwerkinstellingen configureren voor meer informatie.
Beheerde identiteiten inschakelen voor toegang tot de sleutelkluis
Er zijn twee manieren om beheerde identiteiten toegang te geven tot uw sleutelkluis.
De eerste optie is het configureren van het toegangsbeleid voor de sleutelkluis en het instellen van sleutelmachtigingen voor toegang met een door de gebruiker toegewezen beheerde identiteit:
Voer de opdracht az keyvault set policy uit. Geef de eerder gemaakte en opgeslagen omgevingsvariabelewaarde door.
principalID
Stel sleutelmachtigingen in op
get
,unwrapKey
enwrapKey
:az keyvault set-policy \ --resource-group <resource-group-name> \ --name <key-vault-name> \ --object-id $identityPrincipalID \ --key-permissions get unwrapKey wrapKey
De tweede optie is om op rollen gebaseerd toegangsbeheer (RBAC) van Azure te gebruiken om machtigingen toe te wijzen aan de door de gebruiker toegewezen beheerde identiteit en toegang te krijgen tot de sleutelkluis. Voer de opdracht az role assignment create uit en wijs de Key Vault Crypto Service Encryption User
rol toe aan een door de gebruiker toegewezen beheerde identiteit:
az role assignment create --assignee $identityPrincipalID \
--role "Key Vault Crypto Service Encryption User" \
--scope $keyvaultID
Een sleutel maken en de sleutel-id ophalen
Voer de opdracht az keyvault key create uit om een sleutel in de sleutelkluis te maken:
az keyvault key create \ --name <key-name> \ --vault-name <key-vault-name>
Noteer in de uitvoer van de opdracht de sleutel-id (
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", [...]
Sla voor het gemak de indeling die u kiest voor de sleutel-id op in de
$keyID
omgevingsvariabele. U kunt een sleutel-id gebruiken met of zonder een versie.
Sleutelroulatie
U kunt kiezen voor handmatige of automatische sleutelrotatie.
Als u een register versleutelt met een door de klant beheerde sleutel met een sleutelversie, is alleen handmatige sleutelrotatie in Azure Container Registry toegestaan. In dit voorbeeld wordt de eigenschap van kid
de sleutel opgeslagen:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
Als u een register versleutelt met een door de klant beheerde sleutel door een sleutelversie weg te laten, wordt automatische sleutelrotatie ingeschakeld om een nieuwe sleutelversie in Azure Key Vault te detecteren. In dit voorbeeld wordt de versie verwijderd uit de eigenschap van kid
de sleutel:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Een register maken met een door de klant beheerde sleutel
Voer de opdracht az acr create uit om een register te maken in de Premium-servicelaag en de door de klant beheerde sleutel in te schakelen.
Geef de waarden voor de beheerde identiteit-id (
id
) en de sleutel-id () doorkid
die in de vorige stappen zijn opgeslagen in de omgevingsvariabelen:az acr create \ --resource-group <resource-group-name> \ --name <container-registry-name> \ --identity $identityID \ --key-encryption-key $keyID \ --sku Premium
Versleutelingsstatus weergeven
Voer de opdracht az acr encryption show uit om de status van de registerversleuteling weer te geven met een door de klant beheerde sleutel:
az acr encryption show --name <container-registry-name>
Afhankelijk van de sleutel die wordt gebruikt om het register te versleutelen, is de uitvoer vergelijkbaar met:
{
"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"
}
Een door de klant beheerde sleutel inschakelen met behulp van de Azure Portal
Een door de gebruiker toegewezen beheerde identiteit maken
Een door de gebruiker toegewezen beheerde identiteit maken voor Azure-resources in de Azure Portal:
Volg de stappen om een door de gebruiker toegewezen identiteit te maken.
Sla de naam van de identiteit op om deze in latere stappen te gebruiken.
Een sleutelkluis maken
Volg de stappen in Quickstart: Een sleutelkluis maken met behulp van de Azure Portal.
Wanneer u een sleutelkluis maakt voor een door de klant beheerde sleutel, schakelt u op het tabblad Basisinformatie de instelling Beveiliging opschonen in. Met deze instelling voorkomt u dat er gegevens verloren gaan als sleutels of sleutelkluizen per ongeluk worden verwijderd.
Vertrouwde services toegang geven tot de sleutelkluis
Als de sleutelkluis wordt beveiligd met een firewall of virtueel netwerk (privé-eindpunt), schakelt u de netwerkinstelling in om toegang door vertrouwde Azure-services toe te staan. Zie Azure Key Vault-netwerkinstellingen configureren voor meer informatie.
Beheerde identiteiten inschakelen voor toegang tot de sleutelkluis
Er zijn twee manieren om beheerde identiteiten toegang te geven tot uw sleutelkluis.
De eerste optie is het configureren van het toegangsbeleid voor de sleutelkluis en het instellen van sleutelmachtigingen voor toegang met een door de gebruiker toegewezen beheerde identiteit:
- Ga naar uw sleutelkluis.
- Selecteer Instellingen>Toegangsbeleid > + Toegangsbeleid toevoegen.
- Selecteer Sleutelmachtigingen en selecteer vervolgens Ophalen, Sleutel uitpakken en Sleutel teruglopen.
- Selecteer in Principal selecteren de resourcenaam van uw door de gebruiker toegewezen beheerde identiteit.
- Selecteer Toevoegen en selecteer vervolgens Opslaan.
De andere optie is om de Key Vault Crypto Service Encryption User
RBAC-rol toe te wijzen aan de door de gebruiker toegewezen beheerde identiteit op het bereik van de sleutelkluis. Raadpleeg Azure-rollen toewijzen met de Azure Portal voor meer details.
Een sleutel maken
Maak een sleutel in de sleutelkluis en gebruik deze om het register te versleutelen. Volg deze stappen als u een specifieke sleutelversie wilt selecteren als een door de klant beheerde sleutel. Mogelijk moet u ook een sleutel maken voordat u het register maakt als de toegang tot de sleutelkluis is beperkt tot een privé-eindpunt of geselecteerde netwerken.
- Ga naar uw sleutelkluis.
- SelecteerInstellingenSleutels>.
- Selecteer +Genereren/importeren en voer een unieke naam in voor de sleutel.
- Accepteer de resterende standaardwaarden en selecteer vervolgens Maken.
- Nadat u het hebt gemaakt, selecteert u de sleutel en selecteert u vervolgens de huidige versie. Kopieer de sleutel-id voor de sleutelversie.
Een containerregister maken
- Selecteer Een resource maken>Containers>Container Registry.
- Selecteer of maak een resourcegroep op het tabblad Basisinformatie en voer een registernaam in. Selecteer premium in SKU.
- Selecteer op het tabblad Versleuteling bij Door de klant beheerde sleutel de optie Ingeschakeld.
- Selecteer bij Identiteit de beheerde identiteit die u hebt gemaakt.
- Kies voor Versleuteling een van de volgende opties:
- Kies Selecteren in Key Vault en selecteer vervolgens een bestaande sleutelkluis en sleutel of selecteer Nieuwe maken. De sleutel die u selecteert, is ongedaan en schakelt automatische sleutelrotatie in.
- Selecteer Enter key URI en geef de id van een bestaande sleutel op. U kunt een versie van de sleutel-URI opgeven (voor een sleutel die handmatig moet worden gedraaid) of een niet-omgedraaide sleutel-URI (waarmee automatische sleutelrotatie mogelijk is). Zie de vorige sectie voor stappen voor het maken van een sleutel.
- Selecteer Controleren + maken.
- Selecteer Maken om het registerexemplaren te implementeren.
De versleutelingsstatus weergeven
Als u de versleutelingsstatus van uw register in de portal wilt bekijken, gaat u naar uw register. Selecteer onder Instellingende optie Versleuteling.
Een door de klant beheerde sleutel inschakelen met behulp van een Resource Manager-sjabloon
U kunt een Resource Manager sjabloon gebruiken om een containerregister te maken en versleuteling in te schakelen met een door de klant beheerde sleutel:
Kopieer de volgende inhoud van een Resource Manager-sjabloon naar een nieuw bestand en sla deze op als 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]" } ] }
Volg de stappen in de vorige secties om de volgende resources te maken:
- Sleutelkluis, aangeduid met naam
- Sleutelkluissleutel, geïdentificeerd door sleutel-id
Voer de opdracht az deployment group create uit om het register te maken met behulp van het voorgaande sjabloonbestand. Geef, indien aangegeven, een nieuwe registernaam en een door de gebruiker toegewezen beheerde identiteit op, samen met de naam van de sleutelkluis en de sleutel-id die u hebt gemaakt.
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>
Voer de opdracht az acr encryption show uit om de status van registerversleuteling weer te geven:
az acr encryption show --name <registry-name>
Volgende stappen
Ga naar het volgende artikel om door de klant beheerde sleutels te roteren, sleutelversies bij te werken en een door de klant beheerde sleutel in te trekken.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor