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

Az Azure-erőforrások felügyelt identitásaival olyan kódot futtathat Azure Container Instances, amely más Azure-szolgáltatásokkal kommunikál anélkül, hogy titkos kódokat vagy hitelesítő adatokat tartana fenn a kódban. Ez a funkció Azure Container Instances üzembe helyezést biztosít egy automatikusan felügyelt identitással az Azure Active Directoryban.

Ebben a cikkben többet is megtudhat a felügyelt identitásokról Azure Container Instances és:

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

A példákat úgy alakíthatja át, hogy engedélyezze és használja az identitásokat a Azure Container Instances más Azure-szolgáltatások eléréséhez. Ezek a példák interaktívak. A gyakorlatban azonban a tárolórendszerképek kódot futtatnának az Azure-szolgáltatások eléréséhez.

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 Azure Container Instances felügyelt identitásai jelenleg csak Linux-tárolókkal támogatottak, Windows-tárolókkal még nem.

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

Használjon felügyelt identitást egy futó tárolóban a Azure AD hitelesítést támogató bármely szolgáltatásban való hitelesítéshez anélkül, hogy a tároló kódjában kezelned kell a hitelesítő adatokat. Az AD-hitelesítést nem támogató szolgáltatások esetében titkos kulcsokat tárolhat egy Azure-kulcstartóban, és a felügyelt identitással férhet hozzá a kulcstartóhoz 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 egy ContainerGroupIdentity tulajdonság beállításával engedélyezzen egy vagy több felügyelt identitást. 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ásainak beállításához használja az Azure CLI-t, egy Resource Manager-sablont, egy YAML-fájlt vagy egy másik Azure-eszközt.

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. Egy tárolócsoporton engedélyezheti a rendszer által hozzárendelt identitást, 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álatához az identitásnak hozzáférést kell biztosítani egy vagy több Azure-szolgáltatáserőforráshoz (például webalkalmazáshoz, kulcstartóhoz vagy tárfiókhoz) az előfizetésben. A felügyelt identitások egy futó tárolóban való használata hasonló az Azure-beli virtuális gépeken lévő identitásokhoz. Tekintse meg a virtuális gép tokenekkel, Azure PowerShell, Azure CLI-vel vagy Azure SDK-kkal kapcsolatos útmutatóját.

Korlátozások

  • Jelenleg nem használhat felügyelt identitást virtuális hálózaton üzembe helyezett tárolócsoportban.

Előfeltételek

Használhatja az Azure Cloud Shell vagy egy helyi Azure CLI-t.

  • Ehhez a cikkhez az Azure CLI 2.0.49-es vagy újabb verziója szükséges. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.

Azure Key Vault létrehozása

A cikkben szereplő példák felügyelt identitást használnak a Azure Container Instances az Azure Key Vault titkos kulcsainak 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

Az az keyvault create paranccsal hozzon létre egy kulcstartót. Ügyeljen arra, hogy egyedi kulcstartónevet adjon meg.

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

Tároljon egy mintakulcsot 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 a kulcstartó eléréséhez egy felhasználó által hozzárendelt vagy rendszer által hozzárendelt felügyelt identitás használatával 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ésben az az identity create paranccsal. Használhatja ugyanazt az erőforráscsoportot, amelyet a kulcstartó létrehozásához használ, vagy használhat egy másikat is.

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

Az identitás a következő lépésekben való használatához 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ához.

# 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)

Hozzáférés biztosítása a felhasználó által hozzárendelt identitás számára a kulcstartóhoz

Futtassa az alábbi az keyvault set-policy parancsot a hozzáférési szabályzat kulcstartón való beállításához. Az alábbi példa lehetővé teszi, hogy a felhasználó által hozzárendelt identitás titkos kulcsokat kérjen le 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 az alábbi az container create parancsot egy tárolópéldány létrehozásához a Microsoft rendszerképe azure-cli alapján. Ez a példa egy egytárolós csoportot biztosít, amellyel interaktív módon futtathatja az Azure CLI-t 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át lásd: Rendszer által hozzárendelt identitás engedélyezése egy 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 folyamatosan futtatja a tárolót. Ez a példa ugyanazt az erőforráscsoportot használja 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 identity kimenet szakasza az alábbihoz hasonlóan néz ki, és azt mutatja, hogy az identitás a tárolócsoportban van beállítva. Az principalID alábbi userAssignedIdentities területen található az Azure Active Directoryban létrehozott identitás szolgáltatásnév:

[...]
"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"
      }
    }
  },
[...]

Titkos kulcs lekérése a key vaultból felhasználó által hozzárendelt identitással

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ítsa el a 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 hozzáférési jogkivonatot szeretne lekérni a Key Vaultban való hitelesítéshez az Azure Active Directory használatával, futtassa a következő parancsot:

client_id="xxxxxxxx-5523-45fc-9f49-xxxxxxxxxxxx"
curl "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net&client_id=$client_id" -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 szeretné tárolni, amelyet a következő parancsokban használhat a hitelesítéshez, 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 kód olvasásához. Mindenképpen cserélje le 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őhöz hasonlóan néz ki, a titkos kóddal együtt. A kódban elemezné ezt a kimenetet a titkos kód lekéréséhez. Ezután használja a titkos kódot egy későbbi műveletben egy másik Azure-erőforrás eléréséhez.

{"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 rendszer által hozzárendelt identitással

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

Futtassa az alábbi az container create parancsot egy tárolópéldány létrehozásához a Microsoft rendszerképe azure-cli alapján. Ez a példa egy egytárolós csoportot biztosít, amellyel interaktív módon futtathatja az Azure CLI-t más Azure-szolgáltatások eléréséhez.

A --assign-identity további érték nélküli paraméter lehetővé teszi a rendszer által hozzárendelt felügyelt identitás használatát a csoportban. Az identitás hatóköre a tárolócsoport erőforráscsoportjára terjed ki. A hosszan futó parancs folyamatosan 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 található.

# 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 identity kimenetben lévő szakasz az alábbihoz hasonlóan néz ki, amely azt mutatja, hogy egy rendszer által hozzárendelt identitás jön létre az Azure Active Directoryban:

[...]
"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 identitás értékére principalId (a szolgáltatásnév azonosítójára), hogy a későbbi lépésekben használhassa.

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

Tárolócsoport-hozzáférés biztosítása a kulcstartóhoz

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

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

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

Most már a felügyelt identitással elérheti a kulcstartót a futó tárolópéldányon belül. Először indítsa el a 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ás használatával:

az login --identity

A futó tárolóból kérje le a titkos kulcsot a kulcstartóból:

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

A rendszer lekéri a titkos kód értékét:

"Hello Container Instances"

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

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

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

Egy tárolócsoportban 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ájllal

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

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

Egy tárolócsoportban 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 megismerkedett a felügyelt identitásokkal Azure Container Instances és a következőket:

  • Felhasználó által hozzárendelt vagy rendszer által hozzárendelt identitás engedélyezése egy tárolócsoportban
  • Identitás-hozzáférés biztosítása egy Azure Key Vaulthoz
  • Kulcstartó elérése egy futó tárolóból a felügyelt identitás használatával