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


Azure-beli alkalmazások hitelesítése Azure-erőforrásokba a Pythonhoz készült Azure SDK-val

Ha az Azure-ban olyan szolgáltatásokkal üzemeltet alkalmazásokat, mint a Azure-alkalmazás Service, az Azure Virtual Machines vagy az Azure Container Instances, az alkalmazások Azure-erőforrásokhoz való hitelesítésének ajánlott módszere a felügyelt identitás.

A felügyelt identitás olyan identitást biztosít az alkalmazás számára, amely anélkül tud más Azure-erőforrásokhoz csatlakozni, hogy titkos kulcsot vagy más alkalmazáskulcsot kellene használnia. Az Azure belsőleg ismeri az alkalmazás identitását, és hogy milyen erőforrásokhoz csatlakozhat. Az Azure ezeket az információkat arra használja, hogy automatikusan lekérjük a Microsoft Entra-jogkivonatokat az alkalmazáshoz, hogy más Azure-erőforrásokhoz kapcsolódhasson anélkül, hogy az alkalmazás titkos kulcsait kellene kezelnie.

Note

Az Azure Kubernetes Service-ben (AKS) futó alkalmazások számítási feladatok identitását használhatják az Azure-erőforrásokkal való hitelesítéshez. Az AKS-ben a számítási feladatok identitása egy felügyelt identitás és egy Kubernetes-szolgáltatásfiók közötti megbízhatósági kapcsolatot jelöl. Ha az AKS-ben üzembe helyezett alkalmazás egy Kubernetes-szolgáltatásfiókkal van konfigurálva egy ilyen kapcsolatban, DefaultAzureCredential a felügyelt identitás használatával hitelesíti az alkalmazást az Azure-ban. A munkaterhelési identitás használatával történő hitelesítésről a Microsoft Entra Munkaterhelési ID használata az Azure Kubernetes Service-szel című részben van szó. A számítási feladatok identitásának konfigurálására vonatkozó lépésekért tekintse meg a számítási feladatok identitásának üzembe helyezését és konfigurálását egy Azure Kubernetes Service-fürtön (AKS- fürtön).

Felügyelt identitástípusok

A felügyelt identitásoknak két típusa létezik:

  • Rendszer által hozzárendelt felügyelt identitások – Ezt a típusú felügyelt identitást közvetlenül egy Azure-erőforrás biztosítja és köti össze. Ha engedélyezi a felügyelt identitást egy Azure-erőforráson, egy rendszer által hozzárendelt felügyelt identitást kap az adott erőforráshoz. A rendszer által hozzárendelt felügyelt identitás a társított Azure-erőforrás életciklusához van kötve. Amikor az erőforrás törlésre kerül, az Azure automatikusan törli az azonosítót. Mivel mindössze annyit kell tennie, hogy engedélyezi a felügyelt identitást a kódot üzemeltető Azure-erőforrás számára, ez a módszer a legegyszerűbben használható felügyelt identitástípus.
  • Felhasználó által hozzárendelt felügyelt identitások – A felügyelt identitásokat önálló Azure-erőforrásként is létrehozhatja. Ezt a módszert leggyakrabban akkor használják, ha a megoldás több olyan számítási feladatokkal rendelkezik, amelyek több Azure-erőforráson futnak, amelyeknek azonos identitással és ugyanazokkal az engedélyekkel kell rendelkeznie. Ha például a megoldás olyan összetevőkkel rendelkezik, amelyek több App Service- és virtuálisgép-példányon futnak, és mindegyiknek ugyanahhoz az Azure-erőforráskészlethez kell hozzáférnie, akkor érdemes lehet egy felhasználó által hozzárendelt felügyelt identitást használni ezeken az erőforrásokon.

Ez a cikk a rendszer által hozzárendelt felügyelt identitás alkalmazáshoz való engedélyezésének és használatának lépéseit ismerteti. Ha felhasználó által hozzárendelt felügyelt identitást kell használnia, olvassa el a Felhasználó által hozzárendelt felügyelt identitások kezelése című cikket , amelyből megtudhatja , hogyan hozhat létre felhasználó által hozzárendelt felügyelt identitást.

1 – Felügyelt identitás engedélyezése az alkalmazást üzemeltető Azure-erőforrásban

Az első lépés a felügyelt identitás engedélyezése az alkalmazást üzemeltető Azure-erőforráson. Ha például egy Django-alkalmazást az Azure App Service használatával üzemeltet, engedélyeznie kell a felügyelt identitást az Ön alkalmazását üzemeltető Azure App Service-webalkalmazáshoz. Ha egy virtuális gépet használ az alkalmazás üzemeltetéséhez, engedélyezheti a virtuális gép számára a felügyelt identitás használatát.

Engedélyezheti a felügyelt identitás azure-erőforrásokhoz való használatát az Azure Portal vagy az Azure CLI használatával.

Az Azure CLI-parancsok futtathatók az Azure Cloud Shellben vagy egy munkaállomáson, amelyen telepítve van az Azure CLI.

Az Azure-erőforrások felügyelt identitásának engedélyezéséhez használt Azure CLI-parancsok formátuma az <command-group> identity --resource-group <resource-group-name> --name <resource-name>. A népszerű Azure-szolgáltatások egyes parancsai alább láthatók.

az webapp identity assign --resource-group <resource-group-name> --name <web-app-name>

A kimenet az alábbihoz hasonlóan fog kinézni.

{
  "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
  "type": "SystemAssigned",
  "userAssignedIdentities": null
}

Az principalId érték a felügyelt identitás egyedi azonosítója. Őrizze meg a kimenet másolatát, mivel a következő lépésben szüksége lesz ezekre az értékekre.

2 – Szerepkörök hozzárendelése a felügyelt identitáshoz

Ezután meg kell határoznia, hogy az alkalmazásnak milyen szerepkörökre (engedélyekre) van szüksége, és hozzá kell rendelnie a felügyelt identitást ezekhez a szerepkörökhöz az Azure-ban. A felügyelt identitások hozzárendelhetők szerepkörökhöz egy erőforrás, erőforráscsoport vagy előfizetés hatókörében. Ez a példa bemutatja, hogyan rendelhet hozzá szerepköröket az erőforráscsoport hatóköréhez, mivel a legtöbb alkalmazás egyetlen erőforráscsoportba csoportosítja az összes Azure-erőforrást.

Az Azure-ban egy szerepkört rendelünk egy felügyelt identitáshoz az az role assignment create paranccsal. For the assignee, use the principalId you copied in step 1.

az role assignment create --assignee <managedIdentityprincipalId> \
    --scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> \
    --role "<roleName>" 

A szolgáltatási főszereplőhöz hozzárendelhető szerepkörök neveinek lekéréséhez használja az az role definition list parancsot.

az role definition list \
    --query "sort_by([].{roleName:roleName, description:description}, &roleName)" \
    --output table

Például, ha azt szeretné, hogy a aaaaaaaa-bbbb-cccc-1111-222222222222 azonosítójú felügyelt identitás rendelkezzen olvasási, írási és törlési hozzáféréssel az Azure Storage blob tárolókhoz és adatokhoz az erőforráscsoportjának összes tárfiókjában, akkor az alkalmazásszolgáltatás nevet hozzá kell rendelnie a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e szerepkörhöz a következő paranccsal.

az role assignment create --assignee aaaaaaaa-bbbb-cccc-1111-222222222222 \
    --scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example \
    --role "Storage Blob Data Contributor"

Az engedélyek erőforrás- vagy előfizetési szinten az Azure CLI-vel való hozzárendeléséről az Azure CLI-vel történő Azure-szerepkörök hozzárendelése című cikk nyújt tájékoztatást.

3 – DefaultAzureCredential implementálása az alkalmazásban

Ha a kód az Azure-ban fut, és a felügyelt identitás engedélyezve van az alkalmazást üzemeltető Azure-erőforráson, a rendszer a DefaultAzureCredential következő sorrendben határozza meg a használni kívánt hitelesítő adatokat:

  1. Ellenőrizze a környezetet a környezeti változók AZURE_CLIENT_ID, AZURE_TENANT_ID, és vagy AZURE_CLIENT_SECRET, vagy AZURE_CLIENT_CERTIFICATE_PATH és (opcionálisan) AZURE_CLIENT_CERTIFICATE_PASSWORD alapján meghatározott szolgáltatás objektum szempontjából.
  2. Ellenőrizze a felhasználó által hozzárendelt felügyelt identitás kulcsszóparamétereit. A felhasználó által hozzárendelt felügyelt identitást úgy adhatja meg, hogy megadja annak ügyfél-azonosítóját a managed_identity_client_id paraméterben.
  3. Ellenőrizze a AZURE_CLIENT_ID környezeti változót a felhasználók által hozzárendelt felügyelt identitás ügyfélazonosítója esetében.
  4. Ha engedélyezve van, használja a rendszer által hozzárendelt felügyelt identitást az Azure-erőforráshoz.

A kulcsszóparaméter exclude_managed_identity_credentialbeállításával kizárhatja a felügyelt identitásokat a True hitelesítő adatokból.

Ebben a cikkben a rendszer által hozzárendelt felügyelt identitást használjuk egy Azure-alkalmazás Service-webalkalmazáshoz, így nem kell konfigurálnunk egy felügyelt identitást a környezetben, és nem kell paraméterként átadnunk. Az alábbi lépések bemutatják a használat módját DefaultAzureCredential.

Először adja hozzá a azure.identity csomagot az alkalmazáshoz.

pip install azure-identity

Ezután az azure SDK-ügyfélobjektumot létrehozó Python-kódok esetében a következőket kell elvégeznie:

  1. Importálja az osztályt DefaultAzureCredential a azure.identity modulból.
  2. Hozzon létre egy objektumot DefaultAzureCredential .
  3. Adja át az DefaultAzureCredential objektumot az Azure SDK ügyfélobjektum-konstruktorának.

Ezekre a lépésekre az alábbi kódszakaszban látható példa.

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

# Acquire a credential object
token_credential = DefaultAzureCredential()

blob_service_client = BlobServiceClient(
        account_url="https://<my_account_name>.blob.core.windows.net",
        credential=token_credential)

Az Azure SDK for Python-hitelesítés áttekintési cikkében leírtak szerint több hitelesítési módszert is támogat, DefaultAzureCredential és meghatározza a futtatókörnyezetben használt hitelesítési módszert. Ennek a megközelítésnek az az előnye, hogy az alkalmazás különböző hitelesítési módszereket használhat különböző környezetekben, környezetspecifikus kód implementálása nélkül. Ha az előző kódot a helyi fejlesztés során futtatja a munkaállomáson, DefaultAzureCredential a környezeti beállításoknak megfelelően egy alkalmazásszolgáltatásnevet vagy a fejlesztői eszköz hitelesítő adatait fogja használni a többi Azure-erőforrással való hitelesítéshez. Így ugyanezzel a kóddal hitelesítheti az alkalmazást az Azure-erőforrásokon a helyi fejlesztés és az Azure-ban való üzembe helyezés során.