Felügyelt identitások használata az Azure Container Instancesszel

Az Azure-erőforrások felügyelt identitásai használatával olyan kódot futtathat Azure Container Instances, amely más Azure-szolgáltatásokkal kommunikál – anélkül, hogy kódban őrizze meg a titkos kódokat és a hitelesítő adatokat. A szolgáltatás egy Azure Container Instances üzembe helyezést biztosít egy automatikusan felügyelt identitással a Azure Active Directory.

Ebben a cikkben további információt talál a felügyelt identitásokkal kapcsolatban a Azure Container Instances és:

  • Felhasználó vagy rendszer által hozzárendelt identitás engedélyezése tárolócsoportban
  • Hozzáférés megadása az identitás számára egy Azure Key Vaulthoz
  • Kulcstartó elérése futó tárolóból a felügyelt identitással

A példákat úgy kell adaptálni, hogy az identitások Azure Container Instances más Azure-szolgáltatásokhoz való hozzáféréshez. Ezek a példák interaktívak. A gyakorlatban azonban a tároló rendszerképe kód futtatásával fér hozzá az Azure-szolgáltatásokhoz.

Fontos

Ez a szolgáltatás jelenleg előzetes kiadásban elérhető. Az előzetes verziók azzal a feltétellel érhetők el, hogy Ön beleegyezik a kiegészítő használati feltételekbe. A szolgáltatás néhány eleme megváltozhat a nyilvános rendelkezésre állás előtt. A felügyelt identitások jelenleg a Azure Container Instances csak Linux-tárolók esetében támogatottak, a Windows még nem.

Miért érdemes felügyelt identitást használni?

A futó tárolókban található felügyelt identitással bármely Azure AD-hitelesítést támogató szolgáltatásban hitelesítheti magát anélkül, hogy a hitelesítő adatokat a tároló kódban kezelnie kell. Az AD-hitelesítést nem támogató szolgáltatások esetén a titkos kulcsokat tárolhatja egy Azure-kulcstartóban, és a felügyelt identitással elérheti a kulcstartót a hitelesítő adatok lekéréséhez. A felügyelt identitások használatával kapcsolatos további információkért lásd: Mi az Azure-erőforrások felügyelt identitása?

Felügyelt identitás engedélyezése

Tárolócsoport létrehozásakor engedélyezzen egy vagy több felügyelt identitást egy ContainerGroupIdentity tulajdonság beállításával. A felügyelt identitásokat a tárolócsoport futtatása után is engedélyezheti vagy frissítheti – bármelyik művelet újraindítja a tárolócsoportot. Egy új vagy meglévő tárolócsoport identitásának beállítását az Azure CLI, egy Resource Manager-sablon, egy YAML-fájl vagy egy másik Azure-eszköz használatával állíthatja be.

Azure Container Instances a felügyelt Azure-identitások mindkét típusát támogatja: a felhasználó által hozzárendelt és a rendszer által hozzárendelt identitásokat. A tárolócsoporton engedélyezheti a rendszer által hozzárendelt identitásokat, egy vagy több felhasználó által hozzárendelt identitást vagy mindkét identitástípust. Ha nem ismeri az Azure-erőforrások felügyelt identitását, tekintse meg az áttekintést.

Felügyelt identitás használata

Felügyelt identitás használata esetén az identitásnak hozzáférést kell biztosítani egy vagy több Azure-szolgáltatási erőforráshoz (például webalkalmazáshoz, kulcstartóhoz vagy tárfiókhoz) az előfizetésben. A felügyelt identitások futó tárolókban való használata hasonló az Azure-beli virtuális gépeken használt identitáshoz. Tekintse meg avirtuális gépek jogkivonatok, a Azure PowerShell az Azure CLI vagy az Azure SDK-khasználatával kapcsolatos útmutatót.

Korlátozások

  • Jelenleg nem használhat felügyelt identitást egy virtuális hálózaton üzembe helyezett tárolócsoportban.
  • Tárolócsoport létrehozásakor nem használhat felügyelt identitást egy rendszerkép Azure Container Registry a tárolóból. Az identitás csak futó tárolón belül érhető el.

Előfeltételek

  • Használja Azure Cloud Shellbash-környezetet.

    A Cloud Shell indítása új ablakban

  • A CLI-referenciaparancsok futtatásához telepítheti az Azure CLI-t is.

    • Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségek megismeréséhez tekintse meg a Bejelentkezés az Azure CLI használatával című szakaszt.

    • Ha a rendszer kéri, az első használatkor telepítse az Azure CLI-bővítményeket. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.

    • Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.

  • Ehhez a cikkhez az Azure CLI 2.0.49-es vagy újabb verziójára van szükség. Ha a Azure Cloud Shell, a legújabb verzió már telepítve van.

Azure Key Vault létrehozása

A cikkben látható példák felügyelt identitást Azure Container Instances Azure Key Vault titkos kulcsának eléréséhez.

Először hozzon létre egy erőforráscsoportot myResourceGroup néven az eastus helyen az alábbi az group create paranccsal:

az group create --name myResourceGroup --location eastus

Kulcstartó létrehozásához használja az az keyvault create parancsot. Mindenképpen adjon meg egy egyedi kulcstartónevet.

az keyvault create \
  --name mykeyvault \
  --resource-group myResourceGroup \ 
  --location eastus

Titkos mintakulcs tárolása a kulcstartóban az az keyvault secret set paranccsal:

az keyvault secret set \
  --name SampleSecret \
  --value "Hello Container Instances" \
  --description ACIsecret --vault-name mykeyvault

Folytassa az alábbi példákkal, ha felhasználó által hozzárendelt vagy rendszer által hozzárendelt felügyelt identitással fér hozzá a kulcstartóhoz a Azure Container Instances.

1. példa: Felhasználó által hozzárendelt identitás használata az Azure Key Vault eléréséhez

Identitás létrehozása

Először hozzon létre egy identitást az előfizetésében az az identity create paranccsal. Használhatja ugyanazt az erőforráscsoportot, mint a kulcstartó létrehozásához, vagy használhat egy másikat is.

az identity create \
  --resource-group myResourceGroup \
  --name myACIId

Ha az identitást a következő lépésekben használnia kell, használja az az identity show parancsot az identitás szolgáltatásnév-azonosítójának és erőforrás-azonosítójának változókban való tárolására.

# Get service principal ID of the user-assigned identity
spID=$(az identity show \
  --resource-group myResourceGroup \
  --name myACIId \
  --query principalId --output tsv)

# Get resource ID of the user-assigned identity
resourceID=$(az identity show \
  --resource-group myResourceGroup \
  --name myACIId \
  --query id --output tsv)

Felhasználó által hozzárendelt identitás hozzáférésének megadása a kulcstartóhoz

Futtassa a következő az keyvault set-policy parancsot egy hozzáférési szabályzat kulcstartón való beállítására. Az alábbi példa lehetővé teszi, hogy a felhasználó által hozzárendelt identitás titkos kulcsokat szerezze be a kulcstartóból:

 az keyvault set-policy \
    --name mykeyvault \
    --resource-group myResourceGroup \
    --object-id $spID \
    --secret-permissions get

Felhasználó által hozzárendelt identitás engedélyezése tárolócsoporton

Futtassa a következő az container create parancsot egy tárolópéldány a Microsoft rendszerképe alapján való azure-cli létrehozásához. Ez a példa egy egytárolós csoportot biztosít, amely interaktív módon használható az Azure CLI futtatására más Azure-szolgáltatások eléréséhez. Ebben a szakaszban csak az alap operációs rendszert használjuk. Az Azure CLI tárolóban való használatára vonatkozó példáért lásd: Enable system-assigned identity on a container group (Rendszer által hozzárendelt identitás engedélyezése tárolócsoporton).

A --assign-identity paraméter átadja a felhasználó által hozzárendelt felügyelt identitást a csoportnak. A hosszan futó parancs futtatja a tárolót. Ez a példa ugyanazt az erőforráscsoportot használja, mint a kulcstartó létrehozásához, de megadhat egy másikat is.

az container create \
  --resource-group myResourceGroup \
  --name mycontainer \
  --image mcr.microsoft.com/azure-cli \
  --assign-identity $resourceID \
  --command-line "tail -f /dev/null"

Pár másodpercen belül az üzembe helyezés befejezéséről tájékoztató választ kell kapnia az Azure CLI-ről. Ellenőrizze az állapotát az az container show paranccsal.

az container show \
  --resource-group myResourceGroup \
  --name mycontainer

A kimenet szakasza az alábbihoz hasonlóan néz ki, és azt mutatja, hogy az identitás be van állítva identity a tárolócsoportban. A alatt a következőben létrehozott identitás szolgáltatásnév principalID userAssignedIdentities Azure Active Directory:

[...]
"identity": {
    "principalId": "null",
    "tenantId": "xxxxxxxx-f292-4e60-9122-xxxxxxxxxxxx",
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/xxxxxxxx-0903-4b79-a55a-xxxxxxxxxxxx/resourcegroups/danlep1018/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId": {
        "clientId": "xxxxxxxx-5523-45fc-9f49-xxxxxxxxxxxx",
        "principalId": "xxxxxxxx-f25b-4895-b828-xxxxxxxxxxxx"
      }
    }
  },
[...]

Felhasználó által hozzárendelt identitás használata titkos kulcs lekért kulcstartóból

Most már használhatja a felügyelt identitást a futó tárolópéldányon belül a kulcstartó eléréséhez. Először indítson el egy Bash-rendszerhéjat a tárolóban:

az container exec \
  --resource-group myResourceGroup \
  --name mycontainer \
  --exec-command "/bin/bash"

Futtassa a következő parancsokat a tároló bash rendszerhéjában. Ha le kell szereznie egy hozzáférési jogkivonatot, Azure Active Directory kulcstartóban való hitelesítéshez futtassa a következő parancsot:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true -s

Kimenet:

{"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9......xxxxxxxxxxxxxxxxx","refresh_token":"","expires_in":"28799","expires_on":"1539927532","not_before":"1539898432","resource":"https://vault.azure.net/","token_type":"Bearer"}

Ha a hozzáférési jogkivonatot egy változóban tárolja, hogy az ezt követő parancsokban is használni tudja a hitelesítést, futtassa a következő parancsot:

token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true | jq -r '.access_token')

Most használja a hozzáférési jogkivonatot a Key Vaultban való hitelesítéshez és egy titkos kulcs olvassa el. Mindenképpen helyettesítse be a kulcstartó nevét az URL-címben (https: / /mykeyvault.vault.azure.net/...):

curl https://mykeyvault.vault.azure.net/secrets/SampleSecret/?api-version=2016-10-01 -H "Authorization: Bearer $token"

A válasz a következőre hasonlít, és a titkos adatokat mutatja. A kódban elemezné ezt a kimenetet a titkos kód beszerzéséhez. Ezután egy későbbi művelet során a titkos okkal egy másik Azure-erőforráshoz férhet hozzá.

{"value":"Hello Container Instances","contentType":"ACIsecret","id":"https://mykeyvault.vault.azure.net/secrets/SampleSecret/xxxxxxxxxxxxxxxxxxxx","attributes":{"enabled":true,"created":1539965967,"updated":1539965967,"recoveryLevel":"Purgeable"},"tags":{"file-encoding":"utf-8"}}

2. példa: Hozzáférés az Azure Key Vaulthoz egy rendszer által hozzárendelt identitással

Rendszer által hozzárendelt identitás engedélyezése tárolócsoporton

Futtassa a következő az container create parancsot egy tárolópéldány a Microsoft rendszerképe alapján való azure-cli létrehozásához. Ez a példa egy egytárolós csoportot biztosít, amely interaktív módon használható az Azure CLI futtatására más Azure-szolgáltatások eléréséhez.

A --assign-identity paraméter további érték nélkül lehetővé teszi a rendszer által hozzárendelt felügyelt identitást a csoporton. Az identitás hatóköre a tárolócsoport erőforráscsoportja. A hosszan futó parancs futtatja a tárolót. Ez a példa ugyanazt az erőforráscsoportot használja a kulcstartó létrehozásához, amely az identitás hatókörében van.

# Get the resource ID of the resource group
rgID=$(az group show --name myResourceGroup --query id --output tsv)

# Create container group with system-managed identity
az container create \
  --resource-group myResourceGroup \
  --name mycontainer \
  --image mcr.microsoft.com/azure-cli \
  --assign-identity --scope $rgID \
  --command-line "tail -f /dev/null"

Pár másodpercen belül az üzembe helyezés befejezéséről tájékoztató választ kell kapnia az Azure CLI-ről. Ellenőrizze az állapotát az az container show paranccsal.

az container show \
  --resource-group myResourceGroup \
  --name mycontainer

A kimenet szakasza az alábbihoz hasonlóan néz ki, és azt mutatja, hogy a rendszer által hozzárendelt identitás identity jött létre a Azure Active Directory:

[...]
"identity": {
    "principalId": "xxxxxxxx-528d-7083-b74c-xxxxxxxxxxxx",
    "tenantId": "xxxxxxxx-f292-4e60-9122-xxxxxxxxxxxx",
    "type": "SystemAssigned",
    "userAssignedIdentities": null
},
[...]

Állítson be egy változót az principalId identitás értékére (a szolgáltatásnév-azonosítóra) a későbbi lépésekben való használathoz.

spID=$(az container show \
  --resource-group myResourceGroup \
  --name mycontainer \
  --query identity.principalId --out tsv)

Tárolócsoport hozzáférésének megadása a kulcstartóhoz

Futtassa a következő az keyvault set-policy parancsot egy hozzáférési szabályzat kulcstartón való beállítására. Az alábbi példa lehetővé teszi, hogy a rendszer által felügyelt identitás lekért titkos kulcsokat a kulcstartóból:

 az keyvault set-policy \
   --name mykeyvault \
   --resource-group myResourceGroup \
   --object-id $spID \
   --secret-permissions get

Titkos kulcs lekérte a Key Vaultból tárolócsoport-identitás használatával

Most már használhatja a felügyelt identitást a kulcstartó eléréséhez a futó tárolópéldányon belül. Először indítson el egy Bash-rendszerhéjat a tárolóban:

az container exec \
  --resource-group myResourceGroup \
  --name mycontainer \
  --exec-command "/bin/bash"

Futtassa a következő parancsokat a tároló bash rendszerhéjában. Először jelentkezzen be az Azure CLI-be a felügyelt identitással:

az login --identity

A futó tárolóból olvassa be a titkos adatokat a kulcstartóból:

az keyvault secret show \
  --name SampleSecret \
  --vault-name mykeyvault --query value

A titkos adatokat a program lekéri:

"Hello Container Instances"

Felügyelt identitás engedélyezése Resource Manager használatával

Ha engedélyezni szeretné a felügyelt identitást egy tárolócsoportban egy Resource Manager sablonnal,állítsa be az objektum tulajdonságát identity egy Microsoft.ContainerInstance/containerGroups ContainerGroupIdentity objektummal. Az alábbi kódrészletek a különböző identity forgatókönyvekhez konfigurált tulajdonságot mutatják be. Lásd a Resource Manager referenciáját. Adja meg legalább a apiVersion 2018-10-01 értéket.

Felhasználó által hozzárendelt identitás

A felhasználó által hozzárendelt identitás az űrlap erőforrás-azonosítója:

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}"

Egy vagy több felhasználó által hozzárendelt identitást engedélyezhet.

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "myResourceID1": {
            }
        }
    }

Rendszer által hozzárendelt identitás

"identity": {
    "type": "SystemAssigned"
    }

Rendszer- és felhasználó által hozzárendelt identitások

A tárolócsoporton engedélyezheti a rendszer által hozzárendelt identitást és egy vagy több felhasználó által hozzárendelt identitást is.

"identity": {
    "type": "System Assigned, UserAssigned",
    "userAssignedIdentities": {
        "myResourceID1": {
            }
        }
    }
...

Felügyelt identitás engedélyezése YAML-fájl használatával

Ha egy YAML-fájllalüzembe helyezett tárolócsoportban szeretné engedélyezni a felügyelt identitást, használja a következő YAML-t. Adja meg legalább a apiVersion 2018-10-01 értéket.

Felhasználó által hozzárendelt identitás

A felhasználó által hozzárendelt identitás az űrlap erőforrás-azonosítója

'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'

Egy vagy több felhasználó által hozzárendelt identitást engedélyezhet.

identity:
  type: UserAssigned
  userAssignedIdentities:
    {'myResourceID1':{}}

Rendszer által hozzárendelt identitás

identity:
  type: SystemAssigned

Rendszer- és felhasználó által hozzárendelt identitások

A tárolócsoporton engedélyezheti a rendszer által hozzárendelt identitást és egy vagy több felhasználó által hozzárendelt identitást is.

identity:
  type: SystemAssigned, UserAssigned
  userAssignedIdentities:
   {'myResourceID1':{}}

Következő lépések

Ebben a cikkben a felügyelt identitásokkal és a Azure Container Instances a következővel:

  • Felhasználó vagy rendszer által hozzárendelt identitás engedélyezése tárolócsoportban
  • Hozzáférés megadása az identitás számára egy Azure Key Vaulthoz
  • Kulcstartó elérése futó tárolóból a felügyelt identitással