Ügyfél által felügyelt kulcs engedélyezése
Ez a cikk egy négyrészes oktatóanyag-sorozat második része. Az első rész áttekintést nyújt az ügyfél által felügyelt kulcsokról, azok funkcióiról és szempontjairól, mielőtt engedélyezené az egyiket a beállításjegyzékben. Ez a cikk bemutatja, hogy milyen lépésekkel engedélyezheti az ügyfél által felügyelt kulcsokat az Azure CLI, az Azure Portal vagy egy Azure Resource Manager-sablon használatával.
Előfeltételek
- Telepítse az Azure CLI-t, vagy készüljön fel az Azure Cloud Shell használatára.
- Jelentkezzen be az Azure Portalra.
Ügyfél által felügyelt kulcs engedélyezése az Azure CLI használatával
Erőforráscsoport létrehozása
Futtassa az az group create parancsot egy olyan erőforráscsoport létrehozásához, amely tartalmazza a kulcstartót, a tárolóregisztrációs adatbázist és az egyéb szükséges erőforrásokat:
az group create --name <resource-group-name> --location <location>
Felhasználó által hozzárendelt felügyelt identitás létrehozása
Konfiguráljon egy felhasználó által hozzárendelt felügyelt identitást a beállításjegyzékhez, hogy hozzáférhessen a kulcstartóhoz:
Futtassa az az identity create parancsot a felügyelt identitás létrehozásához:
az identity create \ --resource-group <resource-group-name> \ --name <managed-identity-name>
A parancs kimenetében jegyezze fel a
id
beállításjegyzék-hozzáférés kulcstartóval való konfigurálásához szükséges értékeket ésprincipalId
értékeket:{ "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" }
A kényelem érdekében tárolja az
id
értékeket aprincipalId
környezeti változókban: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)
Kulcstartó létrehozása
Az az keyvault create parancs futtatásával hozzon létre egy kulcstartót, ahol tárolhat egy ügyfél által felügyelt kulcsot a beállításjegyzék titkosításához.
Alapértelmezés szerint az új kulcstartó automatikusan engedélyezi a helyreállítható törlési beállítást. A kulcsok vagy kulcstartók véletlen törlésének megakadályozása érdekében javasoljuk a törlés elleni védelem beállításának engedélyezését:
az keyvault create --name <key-vault-name> \ --resource-group <resource-group-name> \ --enable-purge-protection
A kényelem érdekében jegyezze fel a kulcstartó erőforrás-azonosítóját, és tárolja az értéket környezeti változókban:
keyvaultID=$(az keyvault show --resource-group <resource-group-name> --name <key-vault-name> --query 'id' --output tsv)
A megbízható szolgáltatások hozzáférésének engedélyezése a kulcstartóhoz
Ha a kulcstartó tűzfallal vagy virtuális hálózattal (privát végponttal) van védve, engedélyeznie kell a hálózati beállításokat a megbízható Azure-szolgáltatások általi hozzáférés engedélyezéséhez. További információ: Az Azure Key Vault hálózati beállításainak konfigurálása.
A felügyelt identitások hozzáférésének engedélyezése a kulcstartóhoz
A felügyelt identitások kétféleképpen férhetnek hozzá a kulcstartóhoz.
Az első lehetőség a kulcstartó hozzáférési szabályzatának konfigurálása és a hozzáféréshez szükséges kulcsengedélyek beállítása egy felhasználó által hozzárendelt felügyelt identitással:
Futtassa az az keyvault set policy parancsot. Adja meg a korábban létrehozott és tárolt környezeti változó értékét
principalID
.A kulcsengedélyek beállítása a következőre
get
unwrapKey
wrapKey
:az keyvault set-policy \ --resource-group <resource-group-name> \ --name <key-vault-name> \ --object-id $identityPrincipalID \ --key-permissions get unwrapKey wrapKey
A második lehetőség az Azure szerepköralapú hozzáférés-vezérlés (RBAC) használata a felhasználó által hozzárendelt felügyelt identitás engedélyeinek hozzárendeléséhez és a kulcstartó eléréséhez. Futtassa az az role assignment create parancsot, és rendelje hozzá a Key Vault Crypto Service Encryption User
szerepkört egy felhasználó által hozzárendelt felügyelt identitáshoz:
az role assignment create --assignee $identityPrincipalID \
--role "Key Vault Crypto Service Encryption User" \
--scope $keyvaultID
Kulcs létrehozása és a kulcsazonosító lekérése
Az az keyvault key create parancs futtatásával hozzon létre egy kulcsot a kulcstartóban:
az keyvault key create \ --name <key-name> \ --vault-name <key-vault-name>
A parancs kimenetében jegyezze fel a kulcsazonosítót (
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", [...]
A kényelem érdekében tárolja a környezeti változóban
$keyID
a kulcsazonosítóhoz választott formátumot. A kulcsazonosítót verzióval vagy anélkül is használhatja.
Kulcsrotálás
Választhat manuális vagy automatikus kulcsforgatást.
A kulcsverzióval rendelkező, ügyfél által felügyelt kulccsal rendelkező beállításjegyzék titkosítása csak a manuális kulcsváltást teszi lehetővé az Azure Container Registryben. Ez a példa a kulcs tulajdonságát kid
tárolja:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
Ha egy beállításjegyzéket ügyfél által felügyelt kulccsal titkosít egy kulcsverzió kihagyásával, az automatikus kulcsváltást teszi lehetővé az új kulcsverzió észleléséhez az Azure Key Vaultban. Ez a példa eltávolítja a verziót a kulcs tulajdonságából kid
:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Beállításjegyzék létrehozása ügyfél által felügyelt kulccsal
Futtassa az az acr create parancsot egy beállításjegyzék létrehozásához a Prémium szolgáltatási szinten, és engedélyezze az ügyfél által felügyelt kulcsot.
Adja meg a környezeti változókban tárolt felügyelt identitásazonosító (
id
) és kulcsazonosító (kid
) értékeket az előző lépésekben:az acr create \ --resource-group <resource-group-name> \ --name <container-registry-name> \ --identity $identityID \ --key-encryption-key $keyID \ --sku Premium
Titkosítás állapotának megjelenítése
Futtassa az az acr encryption show parancsot a beállításjegyzék-titkosítás állapotának megjelenítéséhez egy ügyfél által felügyelt kulccsal:
az acr encryption show --name <container-registry-name>
A beállításjegyzék titkosításához használt kulcstól függően a kimenet a következőhöz hasonló:
{
"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"
}
Ügyfél által felügyelt kulcs engedélyezése az Azure Portal használatával
Felhasználó által hozzárendelt felügyelt identitás létrehozása
Felhasználó által hozzárendelt felügyelt identitás létrehozása azure-erőforrásokhoz az Azure Portalon:
Kövesse az alábbi lépéseket egy felhasználó által hozzárendelt identitás létrehozásához.
Mentse az identitás nevét a későbbi lépésekben való használathoz.
Kulcstartó létrehozása
Kövesse a rövid útmutató lépéseit : Kulcstartó létrehozása az Azure Portal használatával.
Amikor kulcstartót hoz létre egy ügyfél által felügyelt kulcshoz, az Alapszintű beállítások lapon engedélyezze a Törlés elleni védelem beállítást. Ez a beállítás segít megakadályozni, hogy az adatvesztés véletlenül törölje a kulcsokat vagy kulcstartókat.
A megbízható szolgáltatások hozzáférésének engedélyezése a kulcstartóhoz
Ha a kulcstartó tűzfallal vagy virtuális hálózattal (privát végponttal) van védve, engedélyezze a hálózati beállítást a megbízható Azure-szolgáltatások általi hozzáférés engedélyezéséhez. További információ: Az Azure Key Vault hálózati beállításainak konfigurálása.
A felügyelt identitások hozzáférésének engedélyezése a kulcstartóhoz
A felügyelt identitások kétféleképpen férhetnek hozzá a kulcstartóhoz.
Az első lehetőség a kulcstartó hozzáférési szabályzatának konfigurálása és a hozzáféréshez szükséges kulcsengedélyek beállítása egy felhasználó által hozzárendelt felügyelt identitással:
- Nyissa meg a kulcstartót.
- Válassza a Beállítások>hozzáférési szabályzatok > +Hozzáférési szabályzat hozzáadása lehetőséget.
- Válassza a Kulcsengedélyek, majd a Lekérés, a Kulcs feloldása és a Tördelés gombot.
- Az Egyszerű kiválasztása területen válassza ki a felhasználó által hozzárendelt felügyelt identitás erőforrásnevét.
- Válassza a Hozzáadás, majd a Mentés lehetőséget.
A másik lehetőség az Key Vault Crypto Service Encryption User
RBAC-szerepkör hozzárendelése a felhasználó által hozzárendelt felügyelt identitáshoz a kulcstartó hatókörében. A részletes lépésekért tekintse meg az Azure-szerepköröknek az Azure Portalon történő hozzárendelését ismertető cikket.
Kulcs létrehozása
Hozzon létre egy kulcsot a kulcstartóban, és használja a beállításjegyzék titkosításához. Kövesse az alábbi lépéseket, ha egy adott kulcsverziót szeretne kiválasztani ügyfél által felügyelt kulcsként. Előfordulhat, hogy a beállításjegyzék létrehozása előtt létre kell hoznia egy kulcsot, ha a kulcstartó hozzáférése privát végpontra vagy kijelölt hálózatokra korlátozódik.
- Nyissa meg a kulcstartót.
- Válassza a Beállításkulcsok lehetőséget>.
- Válassza a +Létrehozás/Importálás lehetőséget, és adjon meg egy egyedi nevet a kulcsnak.
- Fogadja el a fennmaradó alapértelmezett értékeket, majd válassza a Létrehozás lehetőséget.
- A létrehozás után válassza ki a kulcsot, majd válassza ki az aktuális verziót. Másolja ki a kulcsverzió kulcsazonosítójának másolatát .
Container Registry létrehozása
- Válassza az Erőforrás létrehozása>Tárolók>Container Registry elemet.
- Az Alapszintű beállítások lapon válasszon vagy hozzon létre egy erőforráscsoportot, majd adjon meg egy beállításjegyzéknevet. Az SKU-ban válassza a Prémium lehetőséget.
- Az Ügyfél által kezelt kulcs Titkosítás lapján válassza az Engedélyezve lehetőséget.
- Identitás esetén válassza ki a létrehozott felügyelt identitást.
- Titkosításhoz válasszon az alábbi lehetőségek közül:
- Válassza a Kiválasztás lehetőséget a Key Vaultból, majd válasszon ki egy meglévő kulcstartót és kulcsot, vagy válassza az Új létrehozása lehetőséget. A kiválasztott kulcs nincs átirányítva, és lehetővé teszi az automatikus kulcsváltást.
- Válassza az Enter key URI(kulcs URI) lehetőséget, és adja meg egy meglévő kulcs azonosítóját. Megadhat egy verziószámozott kulcs URI-ját (olyan kulcshoz, amelyet manuálisan kell elforgatni), vagy egy eltérítetlen kulcs URI-t (amely lehetővé teszi az automatikus kulcsforgatást). A kulcs létrehozásának lépéseit az előző szakaszban találja.
- Válassza az Áttekintés + létrehozás lehetőséget.
- Válassza a Létrehozás lehetőséget a beállításjegyzékpéldány üzembe helyezéséhez.
A titkosítás állapotának megjelenítése
Ha meg szeretné tekinteni a beállításjegyzék titkosítási állapotát a portálon, lépjen a beállításjegyzékbe. A Beállítások területen válassza a Titkosítás lehetőséget.
Ügyfél által felügyelt kulcs engedélyezése Resource Manager-sablonnal
Resource Manager-sablonnal létrehozhat egy tárolóregisztrációs adatbázist, és engedélyezheti a titkosítást egy ügyfél által felügyelt kulccsal:
Másolja a Resource Manager-sablon alábbi tartalmát egy új fájlba, és mentse 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]" } ] }
Az alábbi erőforrások létrehozásához kövesse az előző szakaszok lépéseit:
- Kulcstartó, név alapján azonosítva
- Kulcstartókulcs, kulcsazonosító alapján azonosítva
Futtassa az az deployment group create parancsot a beállításjegyzék létrehozásához az előző sablonfájl használatával. Ha ezt jelzi, adjon meg egy új beállításjegyzéknevet és egy felhasználó által hozzárendelt felügyelt identitásnevet, valamint a létrehozott kulcstartó nevét és kulcsazonosítóját.
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>
Futtassa az az acr encryption show parancsot a beállításjegyzék-titkosítás állapotának megjelenítéséhez:
az acr encryption show --name <registry-name>
Következő lépések
Folytassa a következő cikkel , amely végigvezeti az ügyfél által felügyelt kulcsok elforgatását, a kulcsverziók frissítését és az ügyfél által felügyelt kulcsok visszavonását.