Ü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 végigvezeti az ügyfél által felügyelt kulcsok Azure CLI-vel, Azure Portal vagy Azure Resource Manager-sablonnal történő engedélyezésének lépésein.
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 Portal.
Ü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 a kulcstartót, a tárolóregisztrációs adatbázist és más szükséges erőforrásokat fogja tárolni:
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 és
principalId
az értékeket aid
beállításjegyzék-hozzáférés key vaulttal való konfigurálásához:{ "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 a és
principalId
azid
értéket a 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
Futtassa az az keyvault create parancsot egy kulcstartó létrehozásához, ahol egy ügyfél által felügyelt kulcsot tárolhat 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 végleges 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.
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
Állítsa a kulcsengedélyeket a következőre:
get
,unwrapKey
, éswrapKey
: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, hogy az Azure szerepköralapú hozzáférés-vezérlés (RBAC) használatával engedélyeket rendel a felhasználó által hozzárendelt felügyelt identitáshoz, és hozzáfér a kulcstartóhoz. 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 paranccsal 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 kulcsazonosítóhoz választott formátumot a
$keyID
környezeti változóban. A kulcsazonosítót verzióval vagy anélkül is használhatja.
Kulcsrotálás
Választhat manuális vagy automatikus kulcsrotálást.
A kulcsverzióval rendelkező, ügyfél által felügyelt kulccsal rendelkező beállításjegyzék titkosítása csak a manuális kulcsrotálást teszi lehetővé Azure Container Registry. 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 ügyfél által felügyelt kulccsal titkosít egy beállításjegyzéket egy kulcsverzió kihagyásával, az automatikus kulcsrotálás lehetővé teszi egy új kulcsverzió észlelését az Azure Key Vault. 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/\/[^/]*$//")
Regisztrációs adatbázis létrehozása ügyfél által felügyelt kulccsal
Futtassa az az acr create parancsot egy beállításjegyzék prémium szolgáltatási szinten való létrehozásához és az ügyfél által felügyelt kulcs engedélyezéséhez.
Adja meg a környezeti változókban tárolt felügyelt identitás azonosítóját (
id
) és kulcsazonosítóját (kid
) 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 ügyfél által felügyelt kulccsal történő megjelenítéséhez:
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 a Azure Portal
Felhasználó által hozzárendelt felügyelt identitás létrehozása
Felhasználó által hozzárendelt felügyelt identitás létrehozása az Azure-erőforrásokhoz a Azure Portal:
Kövesse a 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 következő rövid útmutató lépéseit: Kulcstartó létrehozása a Azure Portal használatával.
Amikor ügyfél által felügyelt kulcshoz hoz létre kulcstartót, az Alapvető beállítások lapon engedélyezze a Végleges 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.
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 Beolvasás, a Kulcs kibontása és a Sortörési kulcs lehetőséget.
- 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 ügyfél által felügyelt kulcsként szeretne kiválasztani egy adott kulcsverziót. Előfordulhat, hogy a beállításjegyzék létrehozása előtt létre kell hoznia egy kulcsot, ha a kulcstartóhoz való hozzáférés privát végpontra vagy kiválasztott hálózatokra korlátozódik.
- Nyissa meg a kulcstartót.
- Válassza a Beállítások>kulcsok 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át .
Tárolóregisztrációs adatbázis létrehozása
- Válassza az Erőforrástárolók>>tárolóregisztrációs adatbázisának létrehozása lehetőséget.
- Az Alapvető beállítások lapon válasszon ki vagy hozzon létre egy erőforráscsoportot, majd adja meg a beállításjegyzék nevét. A termékváltozatban válassza a Prémium lehetőséget.
- A Titkosítás lap Ügyfél által felügyelt kulcs eleméhez válassza az Engedélyezve lehetőséget.
- Az Identitás mezőben válassza ki a létrehozott felügyelt identitást.
- A Titkosítás beállításnál válasszon az alábbi lehetőségek közül:
- Válassza a Kiválasztás Key Vault lehetőséget, 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 eltérítetlen, és lehetővé teszi az automatikus kulcsrotálást.
- Válassza az Enter key URI (Kulcs URI-jának megadása) lehetőséget, és adja meg egy meglévő kulcs azonosítóját. Megadhat egy verziószámozott kulcs URI-ját (manuálisan elforgatandó kulcs esetén) vagy egy nem idegenített kulcs URI-ját (amely lehetővé teszi az automatikus kulcsrotálá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.
- A beállításjegyzék-példány üzembe helyezéséhez válassza a Létrehozás lehetőséget.
A titkosítás állapotának megjelenítése
A beállításjegyzék titkosítási állapotának a portálon való megtekintéséhez 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 sablon használatával
Egy 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 egy Resource Manager sablon alábbi tartalmát egy új fájlba, és mentse CMKtemplate.json néven:
{ "$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 a beállítás meg van adva, adjon meg egy új regisztrációs adatbázisnevet és egy felhasználó által hozzárendelt felügyelt identitásnevet, valamint a létrehozott kulcstartónevet és kulcsazonosító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 rotálásán, a kulcsverziók frissítésén és az ügyfél által felügyelt kulcsok visszavonásán.