Share via


Ü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

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

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

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

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

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. Állítsa a kulcsengedélyeket a következőre: get, unwrapKey, és 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, 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

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

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

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

  1. Kövesse a 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 létrehozásának lehetőségeiről a Azure Portal.

Kulcstartó létrehozása

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

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

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

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:

  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 Beolvasás, a Kulcs kibontása és a Sortörési kulcs lehetőséget.
  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 ü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.

  1. Nyissa meg a kulcstartót.
  2. Válassza a Beállítások>kulcsok 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át .

Tárolóregisztrációs adatbázis létrehozása

  1. Válassza az Erőforrástárolók>>tárolóregisztrációs adatbázisának létrehozása lehetőséget.
  2. 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.
  3. A Titkosítás lap Ügyfél által felügyelt kulcs eleméhez válassza az Engedélyezve lehetőséget.
  4. Az Identitás mezőben válassza ki a létrehozott felügyelt identitást.
  5. 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.
  6. Válassza az Áttekintés + létrehozás lehetőséget.
  7. A beállításjegyzék-példány üzembe helyezéséhez válassza a Létrehozás lehetőséget.

Képernyőkép a titkosított beállításjegyzék létrehozásának lehetőségeiről a Azure Portal.

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:

  1. 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]"
        }
      ]
    }
    
  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 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>
    
  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 rotálásán, a kulcsverziók frissítésén és az ügyfél által felügyelt kulcsok visszavonásán.