Megosztás a következőn keresztül:


Ü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

Ü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:

  1. 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>
    
  2. 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 és principalId é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"
    }
    
  3. A kényelem érdekében tárolja az id értékeket a principalId 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

  1. 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.

  2. 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
    
  3. 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:

  1. 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.

  2. A kulcsengedélyek beállítása a következőregetunwrapKeywrapKey:

    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

  1. 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>
    
  2. 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",
    [...]
    
  3. 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

  1. 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.

  2. 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:

  1. Kövesse az alábbi lépéseket egy felhasználó által hozzárendelt identitás létrehozásához.

  2. Mentse az identitás nevét a későbbi lépésekben való használathoz.

Képernyőkép a felhasználó által hozzárendelt identitás azure portalon való létrehozásának lehetőségeiről.

Kulcstartó létrehozása

  1. Kövesse a rövid útmutató lépéseit : Kulcstartó létrehozása az Azure Portal használatával.

  2. 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.

    Képernyőkép a kulcstartó Azure Portalon való létrehozásának lehetőségeiről.

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:

  1. Nyissa meg a kulcstartót.
  2. 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.
  3. Válassza a Kulcsengedélyek, majd a Lekérés, a Kulcs feloldása és a Tördelés gombot.
  4. Az Egyszerű kiválasztása területen válassza ki a felhasználó által hozzárendelt felügyelt identitás erőforrásnevét.
  5. Válassza a Hozzáadás, majd a Mentés lehetőséget.

Képernyőkép a kulcstartó hozzáférési szabályzatának létrehozásának lehetőségeiről.

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.

  1. Nyissa meg a kulcstartót.
  2. Válassza a Beállításkulcsok lehetőséget>.
  3. Válassza a +Létrehozás/Importálás lehetőséget, és adjon meg egy egyedi nevet a kulcsnak.
  4. Fogadja el a fennmaradó alapértelmezett értékeket, majd válassza a Létrehozás lehetőséget.
  5. 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

  1. Válassza az Erőforrás létrehozása>Tárolók>Container Registry elemet.
  2. 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.
  3. Az Ügyfél által kezelt kulcs Titkosítás lapján válassza az Engedélyezve lehetőséget.
  4. Identitás esetén válassza ki a létrehozott felügyelt identitást.
  5. 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.
  6. Válassza az Áttekintés + létrehozás lehetőséget.
  7. Válassza a Létrehozás lehetőséget a beállításjegyzékpéldány üzembe helyezéséhez.

A titkosított beállításjegyzék Azure Portalon való létrehozásának lehetőségeit bemutató képernyőkép.

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:

  1. 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]"
        }
      ]
    }
    
  2. 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
  3. 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>
    
  4. 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.