Python-alkalmazások hitelesítése Az Azure-szolgáltatásokban a Pythonhoz készült Azure SDK használatával

Ha egy alkalmazásnak hozzá kell férnie egy Azure-erőforráshoz, például az Azure Storage-hoz, az Azure Key Vaulthoz vagy az Azure AI-szolgáltatásokhoz, az alkalmazást hitelesíteni kell az Azure-ban. Ez a követelmény minden alkalmazásra érvényes, legyen szó az Azure-ban történő üzembe helyezésről, a helyszíni üzembe helyezésről vagy a helyi fejlesztői munkaállomáson történő fejlesztés alatt álló alkalmazásokról. Ez a cikk azokat a módszereket ismerteti, hogyan hitelesítheti az alkalmazásokat az Azure-ban a Pythonhoz készült Azure SDK használatakor.

Használjon jogkivonatalapú hitelesítést az alkalmazások kapcsolati sztring helyett, amikor az Azure-erőforrásokon való hitelesítést elvégzik. A Pythonhoz készült Azure SDK olyan osztályokat biztosít, amelyek támogatják a jogkivonatalapú hitelesítést. Az alkalmazások zökkenőmentesen hitelesíthetik az Azure-erőforrásokat, függetlenül attól, hogy az alkalmazás helyi fejlesztés alatt áll, üzembe van helyezve az Azure-ban vagy egy helyszíni kiszolgálón.

Az alkalmazás által az Azure-erőforrásokon való hitelesítéshez használt jogkivonatalapú hitelesítés konkrét típusa attól függ, hogy hol fut az alkalmazás. A jogkivonatalapú hitelesítés típusai az alábbi ábrán láthatók.

A diagram that shows the recommended token-based authentication strategies for an app depending on where it's running.

  • Ha egy fejlesztő a helyi fejlesztés során futtat egy alkalmazást: Az alkalmazás egy alkalmazásszolgáltatás-tag használatával hitelesíti az Azure-t a helyi fejlesztéshez, vagy a fejlesztő Azure-beli hitelesítő adataival. Ezeket a beállításokat a hitelesítés a helyi fejlesztés során című szakaszban tárgyaljuk.
  • Amikor egy alkalmazást az Azure-ban üzemeltetnek: Az alkalmazás felügyelt identitás használatával hitelesíti az Azure-erőforrásokat. Ezt a lehetőséget a kiszolgálói környezetek hitelesítése című szakasz ismerteti.
  • Amikor egy alkalmazást üzemeltetnek és üzembe helyeznek a helyszínen: Az alkalmazás egy alkalmazás-szolgáltatásnév használatával hitelesíti az Azure-erőforrásokat. Ezt a lehetőséget a kiszolgálói környezetek hitelesítése című szakasz ismerteti.

DefaultAzureCredential

Az Azure SDK által biztosított DefaultAzureCredential osztály lehetővé teszi, hogy az alkalmazások a futtatásuk környezetétől függően különböző hitelesítési módszereket használjanak. Ily módon az alkalmazások előléptethetők a helyi fejlesztéstől a tesztelési környezeteken át az éles környezetekig kódmódosítások nélkül.

Konfigurálja a megfelelő hitelesítési módszert az egyes környezetekhez, és DefaultAzureCredential automatikusan észleli és használja ezt a hitelesítési módszert. A használatát DefaultAzureCredential előnyben részesíti a feltételes logika vagy a funkciójelzők manuális kódolása, hogy különböző hitelesítési módszereket használjon különböző környezetekben.

Az osztály használatáról a DefaultAzureCredential DefaultAzureCredential használata az alkalmazásban című szakaszban olvashat.

A jogkivonatalapú hitelesítés előnyei

Az Azure-hoz készült alkalmazások létrehozásakor használjon jogkivonatalapú hitelesítést kapcsolati sztring helyett. A jogkivonatalapú hitelesítés a következő előnyöket nyújtja a kapcsolati sztring hitelesítésével szemben:

  • A cikkben ismertetett jogkivonatalapú hitelesítési módszerek lehetővé teszik az alkalmazás által az Azure-erőforráson szükséges konkrét engedélyek létrehozását. Ez a gyakorlat a minimális jogosultság elvét követi. Ezzel szemben egy kapcsolati sztring teljes jogokat biztosít az Azure-erőforrás számára.
  • Bárki vagy bármely kapcsolati sztring rendelkező alkalmazás csatlakozhat egy Azure-erőforráshoz, de a jogkivonatalapú hitelesítési módszerek csak az erőforrás eléréséhez használni kívánt alkalmazásokhoz férnek hozzá.
  • Felügyelt identitás esetén nincs tárolandó alkalmazáskulcs. Az alkalmazás biztonságosabb, mert nincs kapcsolati sztring vagy alkalmazáskulcs, amely feltörhető.
  • Az Azure SDK azure.identity csomagja a színfalak mögött kezeli a jogkivonatokat. A felügyelt jogkivonatok megkönnyítik a jogkivonatalapú hitelesítés használatát kapcsolati sztring.

A kapcsolati sztring használatának korlátozása olyan kezdeti megvalósíthatósági igazolási alkalmazásokra vagy fejlesztési prototípusokra, amelyek nem férnek hozzá éles vagy bizalmas adatokhoz. Ellenkező esetben az Azure SDK-ban elérhető jogkivonatalapú hitelesítési osztályok mindig előnyben részesülnek, amikor az Azure-erőforrásokhoz való hitelesítést elvégzik.

Hitelesítés kiszolgálói környezetekben

Amikor kiszolgálókörnyezetben üzemel, minden alkalmazáshoz egyedi alkalmazásidentitás lesz hozzárendelve minden olyan környezetben, ahol az alkalmazás fut. Az Azure-ban az alkalmazásidentitást egy szolgáltatásnév képviseli. Ez a speciális biztonsági egyszerű típus azonosítja és hitelesíti az alkalmazásokat az Azure-ban. Az alkalmazáshoz használandó szolgáltatásnév típusa attól függ, hogy az alkalmazás hol fut:

Hitelesítési módszer Leírás
Az Azure-ban üzemeltetett alkalmazások Az Azure-ban üzemeltetett alkalmazásoknak felügyelt identitásszolgáltatásnevet kell használniuk. A felügyelt identitások az Azure-ban üzemeltetett alkalmazások identitásának megjelenítésére szolgálnak, és csak az Azure által üzemeltetett alkalmazásokkal használhatók.

A Azure-alkalmazás Szolgáltatásban üzemeltetett Django-webalkalmazáshoz például felügyelt identitás lesz hozzárendelve. Az alkalmazáshoz rendelt felügyelt identitás ezután az alkalmazás más Azure-szolgáltatásokban való hitelesítésére szolgál.

Az Azure Kubernetes Service-ben (AKS) futó alkalmazások számítási feladatok identitásának hitelesítő adatait használhatják. Ez a hitelesítő adat egy felügyelt identitáson alapul, amely megbízhatósági kapcsolatban áll egy AKS-szolgáltatásfiókkal.
,
Az Azure-on kívül üzemeltetett alkalmazások
(például helyszíni alkalmazások)
Az Azure-on kívül üzemeltetett alkalmazásoknak (például helyszíni alkalmazásoknak) az Azure-szolgáltatásokhoz való csatlakozáshoz egy alkalmazásszolgáltatás-egyszerű szolgáltatást kell használniuk. Az alkalmazás-szolgáltatásnév az alkalmazás identitását jelöli az Azure-ban, és az alkalmazásregisztrációs folyamaton keresztül jön létre.

Vegyük például egy helyszíni django-webalkalmazást, amely az Azure Blob Storage-t használja. Az alkalmazásregisztrációs folyamattal létrehozna egy alkalmazás-szolgáltatásnevet az alkalmazáshoz. A AZURE_CLIENT_ID, AZURE_TENANT_IDés AZURE_CLIENT_SECRET mind környezeti változókként lesz tárolva, amelyeket az alkalmazás futásidőben olvas be, és lehetővé teszi az alkalmazás számára az Azure-ban való hitelesítést az alkalmazás szolgáltatásnévvel.

Hitelesítés a helyi fejlesztés során

Ha egy alkalmazás egy fejlesztő munkaállomásán fut a helyi fejlesztés során, akkor is hitelesítenie kell az alkalmazás által használt Azure-szolgáltatásokban. Két fő stratégia létezik az alkalmazások Azure-ba történő hitelesítésére a helyi fejlesztés során:

Hitelesítési módszer Leírás
Hozzon létre dedikált alkalmazásszolgáltatás-egyszerű objektumokat, amelyeket a helyi fejlesztés során kell használni. Ebben a módszerben a dedikált alkalmazásszolgáltatás-egyszerű objektumok az alkalmazásregisztrációs folyamat használatával vannak beállítva a helyi fejlesztés során való használatra. A szolgáltatásnév identitása ezután környezeti változókként lesz tárolva, amelyeket az alkalmazás a helyi fejlesztésben való futtatáskor érhet el.

Ez a módszer lehetővé teszi az alkalmazás által igényelt erőforrás-engedélyek hozzárendelését a fejlesztők által a helyi fejlesztés során használt egyszerű szolgáltatásobjektumokhoz. Ez a gyakorlat biztosítja, hogy az alkalmazás csak azokhoz az erőforrásokhoz fér hozzá, amelyekre szüksége van, és replikálja azokat az engedélyeket, amelyeket az alkalmazás éles környezetben fog biztosítani.

Ennek a megközelítésnek a hátránya, hogy külön szolgáltatásnév-objektumokat kell létrehozni minden olyan fejlesztő számára, aki egy alkalmazáson dolgozik.

Hitelesítse az alkalmazást az Azure-ban a fejlesztő hitelesítő adataival a helyi fejlesztés során. Ebben a módszerben egy fejlesztőnek be kell jelentkeznie az Azure CLI-ből, az Azure PowerShellből vagy az Azure Developer CLI-ből az Azure-ba a helyi munkaállomáson. Az alkalmazás ezután hozzáférhet a fejlesztői hitelesítő adatokhoz a hitelesítőadat-tárolóból, és ezekkel a hitelesítő adatokkal elérheti az Azure-erőforrásokat az alkalmazásból.

Ez a módszer a könnyebb beállítás előnye, mivel a fejlesztőknek csak a fent említett fejlesztői eszközök egyikével kell bejelentkezniük az Azure-fiókjukba. Ennek a módszernek a hátránya, hogy a fejlesztő fiókja valószínűleg több engedéllyel rendelkezik, mint amennyit az alkalmazás igényel. Ennek eredményeképpen az alkalmazás nem replikálja pontosan az éles környezetben futtatott engedélyeket.

DefaultAzureCredential használata egy alkalmazásban

A DefaultAzureCredential Python-alkalmazásokban való használatához adja hozzá az azure.identity csomagot az alkalmazáshoz.

pip install azure-identity

Az alábbi példakód bemutatja, hogyan lehet példányosítani egy DefaultAzureCredential objektumot, és hogyan használhatja azt egy Azure SDK-ügyfélosztálysal. Ebben az esetben BlobServiceClient az Azure Blob Storage eléréséhez használt objektum.

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

# Acquire a credential object
credential = DefaultAzureCredential()

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

Az DefaultAzureCredential objektum automatikusan észleli az alkalmazáshoz konfigurált hitelesítési mechanizmust, és beszerezi az alkalmazás Azure-ba történő hitelesítéséhez szükséges jogkivonatokat. Ha egy alkalmazás több SDK-ügyfelet használ, ugyanazt a hitelesítő objektumot használhatja minden egyes SDK-ügyfélobjektummal.

Hitelesítési módszerek sorrendje a DefaultAzureCredential használatakor

Belsőleg DefaultAzureCredential hitelesítőadat-szolgáltatók láncát valósítja meg az alkalmazások Azure-erőforrásokhoz való hitelesítéséhez. Minden hitelesítőadat-szolgáltató képes észlelni, hogy az adott típusú hitelesítő adatok konfigurálva vannak-e az alkalmazáshoz. Az DefaultAzureCredential objektum sorrendben ellenőrzi az egyes szolgáltatókat, és az első, hitelesítő adatokat konfigurált szolgáltatótól származó hitelesítő adatokat használja.

A hitelesítő adatok megadásának DefaultAzureCredential sorrendje az alábbi ábrán és táblázatban látható:

A diagram that shows the sequence in which DefaultAzureCredential checks to see what authentication source is configured for an application.

Hitelesítő adatok típusa Leírás
Környezet Az DefaultAzureCredential objektum beolvassa a környezeti változók egy készletét annak megállapításához, hogy az alkalmazáshoz be van-e állítva egy alkalmazás-szolgáltatásnév (alkalmazásfelhasználó). Ha igen, DefaultAzureCredential ezeket az értékeket használva hitelesítheti az alkalmazást az Azure-ban.

Ezt a módszert leggyakrabban kiszolgálókörnyezetekben használják, de helyi fejlesztéskor is használhatja.
Számítási feladatok identitása Ha az alkalmazás az Azure Kubernetes Service-ben (AKS) van üzembe helyezve, és engedélyezve van a felügyelt identitás, DefaultAzureCredential azzal hitelesíti az alkalmazást az Azure-ban ezzel a felügyelt identitással. A számítási feladatok identitása egy, a felhasználó által hozzárendelt felügyelt identitás és egy AKS-szolgáltatásfiók közötti megbízhatósági relációs kapcsolatot jelöl. A számítási feladatok identitásával végzett hitelesítésről az AKS-cikkben, a Microsoft Entra Számítási feladat ID használata az Azure Kubernetes Service-ben című cikk foglalkozik.
Felügyelt identitás Ha az alkalmazást olyan Azure-gazdagépen helyezi üzembe, amelyen engedélyezve van a felügyelt identitás, DefaultAzureCredential azzal hitelesíti az alkalmazást az Azure-ban a felügyelt identitás használatával. A felügyelt identitással történő hitelesítésről a kiszolgálói környezetekben történő hitelesítés című szakaszban olvashat.

Ez a módszer csak akkor érhető el, ha egy alkalmazást az Azure-ban üzemeltet egy olyan szolgáltatás használatával, mint a Azure-alkalmazás Szolgáltatás, az Azure Functions vagy az Azure Virtual Machines.
Azure CLI Ha az Azure CLI-ben található paranccsal hitelesítette az az login Azure-t, DefaultAzureCredential ugyanazzal a fiókkal hitelesíti az alkalmazást az Azure-ban.
Azure PowerShell Ha az Azure-ban az Azure PowerShell parancsmagjának használatával hitelesítette az Connect-AzAccount Azure-t, DefaultAzureCredential azzal a fiókkal hitelesíti az alkalmazást az Azure-ban.
Azure Developer CLI Ha az Azure Developer CLI-ben található paranccsal hitelesítette az azd auth login Azure-t, DefaultAzureCredential azzal a fiókkal hitelesíti az alkalmazást az Azure-ban.
Interaktív Ha engedélyezve van, DefaultAzureCredential interaktívan hitelesíti Önt az aktuális rendszer alapértelmezett böngészőjén keresztül. Alapértelmezés szerint ez a beállítás le van tiltva.

Feljegyzés

Egy ismert problémaVisualStudioCodeCredential miatt a rendszer eltávolította a DefaultAzureCredential jogkivonatláncból. Ha a probléma egy későbbi kiadásban lesz megoldva, a rendszer visszaállítja ezt a módosítást. További információt a Pythonhoz készült Azure Identity ügyfélkódtárában talál.