Felügyelt identitások használata az Azure Container Instancesszel
Az Azure-erőforrások felügyelt identitásaival olyan kódot futtathat az Azure Container Instancesben, amely más Azure-szolgáltatásokkal kommunikál – anélkül, hogy titkos kulcsokat vagy hitelesítő adatokat tartana fenn a kódban. A szolgáltatás automatikusan felügyelt identitással rendelkező Azure Container Instances-példányokat biztosít a Microsoft Entra ID-ban.
Ebben a cikkben többet tudhat meg az Azure Container Instances felügyelt identitásairól, valamint a következőkkel:
- Felhasználó által hozzárendelt vagy rendszer által hozzárendelt identitás engedélyezése egy tárolócsoportban
- Identitáshozzáférés biztosítása egy Azure Key Vaulthoz
- Kulcstartó elérése a felügyelt identitással egy futó tárolóból
A példák adaptálása az Azure Container Instances identitásainak engedélyezéséhez és használatához 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.
Miért érdemes felügyelt identitást használni?
Felügyelt identitás használata egy futó tárolóban a Microsoft Entra-hitelesítést támogató szolgáltatások hitelesítéséhez anélkül, hogy hitelesítő adatokat kezel a tárolókódban. 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 hozzáférhet a kulcstartóhoz a hitelesítő adatok lekéréséhez. További információ a felügyelt identitások használatáról: 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 miatt újraindul a tárolócsoport. Az identitások új vagy meglévő tárolócsoporton való 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.
Az 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. Tárolócsoportokban 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
A 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 futó tárolóban való használata hasonló az Azure-beli virtuális gépeken lévő identitásokhoz. A virtuális gépekre vonatkozó útmutatást a jogkivonatok, az Azure PowerShell vagy az Azure CLI, illetve az Azure SDK-k használatához olvassa el.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
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ért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. 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.
- Ez a cikk az Azure CLI 2.0.49-es vagy újabb verzióját igényli. 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 az Azure Container Instancesben egy Azure Key Vault-titkos kulcs 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. Mindenképpen adjon meg egy egyedi kulcstartónevet.
az keyvault create \
--name mykeyvault \
--resource-group myResourceGroup \
--location eastus
Az az keyvault secret set paranccsal tároljon egy mintatitkot a kulcstartóban:
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 az Azure Container Instancesben.
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.
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
SP_ID=$(az identity show \
--resource-group myResourceGroup \
--name myACIId \
--query principalId --output tsv)
# Get resource ID of the user-assigned identity
RESOURCE_ID=$(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áshoz a kulcstartóhoz
Futtassa az alábbi az keyvault set-policy parancsot egy hozzáférési szabályzat beállításához a kulcstartóban. Az alábbi példa lehetővé teszi, hogy a felhasználó által hozzárendelt identitás titkos kulcsokat szerezzen be a kulcstartóból:
az keyvault set-policy \
--name mykeyvault \
--resource-group myResourceGroup \
--object-id $SP_ID \
--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, amelyet interaktív módon használhat az Azure CLI futtatásához más Azure-szolgáltatások eléréséhez. Ebben a szakaszban csak az alap operációs rendszert használja a rendszer. Ha például az Azure CLI-t szeretné használni a tárolóban, olvassa el a rendszer által hozzárendelt identitás engedélyezése egy tárolócsoporton című témakört.
A --assign-identity
paraméter átadja a felhasználó által hozzárendelt felügyelt identitást a csoportnak. A hosszú ideig 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.
az container create \
--resource-group myResourceGroup \
--name mycontainer \
--image mcr.microsoft.com/azure-cli \
--assign-identity $RESOURCE_ID \
--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 a következőhöz hasonlóan néz ki, és az identitás be van állítva a tárolócsoportban. Az principalID
alatta userAssignedIdentities
található a Microsoft Entra-azonosítóban létrehozott identitás szolgáltatásnévje:
[...]
"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 kulcstartóból felhasználó által hozzárendelt identitás használatával
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 egy hozzáférési jogkivonatot szeretne lekérni a Key Vaultban való hitelesítéshez a Microsoft Entra ID 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
Hozam:
{"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9......xxxxxxxxxxxxxxxxx","refresh_token":"","expires_in":"28799","expires_on":"1539927532","not_before":"1539898432","resource":"https://vault.azure.net/","token_type":"Bearer"}
Windows-tárolók esetén a metaadat-kiszolgáló (169.254.169.254) nem érhető el. A hozzáférési jogkivonat beszerzéséhez futtassa az alábbi vagy azzal egyenértékű parancsokat.
curl -G -v %IDENTITY_ENDPOINT% --data-urlencode resource=https://vault.azure.net --data-urlencode principalId=<principal id> -H secret:%IDENTITY_HEADER%
Ha a hozzáférési jogkivonatot egy változóban szeretné tárolni, amelyet a következő parancsokban szeretne használni 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 beolvasá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=7.4 -H "Authorization: Bearer $TOKEN"
A válasz a következőhöz hasonlóan jelenik meg, 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 kulcsot 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: Rendszer által hozzárendelt identitás használata az Azure Key Vault eléréséhez
Rendszer á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, amelyet interaktív módon használhat az Azure CLI futtatásához 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ást a csoportban. Az identitás hatóköre a tárolócsoport erőforráscsoportjára terjed ki. A hosszú ideig 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
RG_ID=$(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 $RG_ID \
--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 a következőhöz hasonlóan néz ki, amely azt mutatja, hogy egy rendszer által hozzárendelt identitás jön létre a Microsoft Entra-azonosítóban:
[...]
"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) a későbbi lépésekben való használathoz.
SP_ID=$(az container show \
--resource-group myResourceGroup \
--name mycontainer \
--query identity.principalId --out tsv)
Tárolócsoport hozzáférésének biztosítása a kulcstartóhoz
Futtassa az alábbi az keyvault set-policy parancsot egy hozzáférési szabályzat beállításához a kulcstartóban. 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 $SP_ID \
--secret-permissions get
Titkos kulcs lekérése a kulcstartóból tárolócsoport-identitás használatával
Most már a felügyelt identitással is 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"
Windows-tárolók esetén az "az login" parancs nem működik, mert a metaadat-kiszolgáló nem érhető el. Emellett a felügyelt identitás jogkivonata nem hozható létre Windows VNet-tárolóban.
Felügyelt identitás engedélyezése Resource Manager-sablonnal
Ha Resource Manager-sablonnal szeretné engedélyezni a felügyelt identitást egy tárolócsoportban, állítsa be az Microsoft.ContainerInstance/containerGroups
identity
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 értéket apiVersion
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ó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": {
}
}
}
...
Felügyelt identitás engedélyezése YAML-fájllal
Ha YAML-fájllal üzembe helyezett tárolócsoportban engedélyezni szeretné a felügyelt identitást , vegye fel a következő YAML-et.
Adja meg a minimális értéket apiVersion
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ó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 megismerhette a felügyelt identitásokat az Azure Container Instancesben, é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áshozzáférés biztosítása egy Azure Key Vaulthoz
- Kulcstartó elérése a felügyelt identitással egy futó tárolóból
További információ az Azure-erőforrások felügyelt identitásairól.
Egy Azure Go SDK-példa arra, hogy felügyelt identitással férhet hozzá egy kulcstartóhoz az Azure Container Instances szolgáltatásból.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: