Azure Identity-ügyfélkódtár Pythonhoz – 1.14.1-es verzió
Az Azure Identity-kódtár azure Active Directory-jogkivonat-hitelesítést (Azure AD) biztosít az Azure SDK-ban. Implementációk készletét TokenCredential
biztosítja, amelyekkel olyan Azure SDK-ügyfelek hozhatók létre, amelyek támogatják Azure AD jogkivonat-hitelesítést.
Forráskód | Csomag (PyPI) | Csomag (Conda) | API-referenciadokumentáció | Azure AD dokumentációja
Első lépések
A csomag telepítése
Az Azure Identity telepítése pip használatával:
pip install azure-identity
Előfeltételek
- Azure-előfizetés
- Python 3.7 vagy a Python 3 legújabb verziója (ez a kódtár nem támogatja az életciklus végét)
Hitelesítés a helyi fejlesztés során
A kód helyi hibakeresése és végrehajtása során a fejlesztők általában a saját fiókjukat használják az Azure-szolgáltatásokba irányuló hívások hitelesítéséhez. Az Azure Identity-kódtár a helyi fejlesztés egyszerűsítése érdekében támogatja a fejlesztői eszközök hitelesítését.
Hitelesítés a Visual Studio Code-on keresztül
A Visual Studio Code-ot használó fejlesztők az Azure Account bővítményt használhatják a szerkesztőn keresztüli hitelesítéshez. Azok az alkalmazások, amelyek ezt a fiókot használják DefaultAzureCredential
vagy VisualStudioCodeCredential
használhatják, helyi futtatáskor hitelesíthetik a hívásokat az alkalmazásban.
A Visual Studio Code-ban való hitelesítéshez győződjön meg arról, hogy az Azure-fiók bővítmény telepítve van. A telepítés után nyissa meg a parancskatalógust , és futtassa az Azure: Sign In parancsot.
Ismert probléma, amely VisualStudioCodeCredential
nem működik a 0.9.11-nél újabb Azure-fiókbővítmény-verziókkal. A probléma hosszú távú megoldása folyamatban van. Addig is fontolja meg a hitelesítést az Azure CLI-vel.
Hitelesítés az Azure CLI-vel
DefaultAzureCredential
és AzureCliCredential
hitelesítést végezhet az Azure CLI-be bejelentkezett felhasználóként. Az Azure CLI-be való bejelentkezéshez futtassa a parancsot az login
. Az alapértelmezett webböngészővel rendelkező rendszereken az Azure CLI elindítja a böngészőt a felhasználó hitelesítéséhez.
Ha nem érhető el alapértelmezett böngésző, az login
az eszközkód hitelesítési folyamatát fogja használni. Ez a folyamat manuálisan is kiválasztható a futtatásával az login --use-device-code
.
Hitelesítés a Azure Developer CLI
Az IDE-n kívüli kódolást használó fejlesztők az Azure Developer CLI is használhatják a hitelesítéshez. Az vagy a-t használó alkalmazások ezután ezt a DefaultAzureCredential
AzureDeveloperCliCredential
fiókot használhatják az alkalmazáson belüli hívások helyi futtatásakor történő hitelesítéséhez.
A Azure Developer CLI való hitelesítéshez a felhasználók futtathatják a parancsotazd auth login
. Az alapértelmezett webböngészővel rendelkező rendszeren futó felhasználók esetében a Azure Developer CLI elindítja a böngészőt a felhasználó hitelesítéséhez.
Az alapértelmezett webböngészővel nem rendelkező rendszerek esetében a azd auth login --use-device-code
parancs az eszközkód hitelesítési folyamatát fogja használni.
Fő fogalmak
Igazolás
A hitelesítő adatok olyan osztályok, amelyek tartalmazzák vagy lekérhetik a kérések hitelesítéséhez szükséges adatokat a szolgáltatásügyfél számára. A szolgáltatásügyfelek az Azure SDK-ban elfogadják a hitelesítőadat-példányt a létrehozásakor, és ezt a hitelesítő adatot használják a kérések hitelesítéséhez.
Az Azure Identity-kódtár a Azure AD használatával történő OAuth-hitelesítésre összpontosít. Különböző hitelesítőadat-osztályokat kínál, amelyek képesek egy Azure AD hozzáférési jogkivonat beszerzésére. A kódtár hitelesítőadatosztályainak listáját az alábbi szakaszban találja.
AlapértelmezettAzureCredential
DefaultAzureCredential
az Azure-ban futtatott legtöbb alkalmazáshoz megfelelő, mivel a gyakori éles hitelesítő adatokat a fejlesztési hitelesítő adatokkal kombinálja. DefaultAzureCredential
a következő mechanizmusokon keresztül kísérli meg a hitelesítést, ebben a sorrendben leállítva, ha az egyik sikeres:
Megjegyzés:
DefaultAzureCredential
célja, hogy leegyszerűsítse a kódtár használatának első lépéseit az ésszerű alapértelmezett viselkedéssel rendelkező gyakori forgatókönyvek kezelésével. Azoknak a fejlesztőknek, akik több vezérlést szeretnének, vagy akiknek a forgatókönyvét nem szolgálják ki az alapértelmezett beállítások, más hitelesítőadat-típusokat kell használniuk.
- Környezet -
DefaultAzureCredential
megadott fiókadatokat, és hitelesíti azokat. - Számítási feladat identitása – Ha az alkalmazás Azure Kubernetes Service van üzembe helyezve, és engedélyezve van a felügyelt identitás,
DefaultAzureCredential
azzal hitelesíti magát. - Felügyelt identitás – Ha az alkalmazás olyan Azure-gazdagépen van üzembe helyezve, amelyen engedélyezve van a felügyelt identitás,
DefaultAzureCredential
azzal hitelesíti magát. - Azure CLI – Ha egy felhasználó az Azure CLI-paranccsal
az login
jelentkezett be,DefaultAzureCredential
akkor a felhasználóként fog hitelesítést végezni. - Azure PowerShell – Ha egy felhasználó Azure PowerShell parancsán
Connect-AzAccount
keresztül jelentkezett be,DefaultAzureCredential
akkor a felhasználóként fog hitelesíteni. - Azure Developer CLI – Ha a fejlesztő a Azure Developer CLI
azd auth login
paranccsal hitelesített, a rendszer ezzel aDefaultAzureCredential
fiókkal hitelesíti magát. - Interaktív böngésző – Ha engedélyezve van,
DefaultAzureCredential
interaktív módon hitelesíti a felhasználót az alapértelmezett böngészőn keresztül. Ez a hitelesítőadat-típus alapértelmezés szerint le van tiltva.
Megjegyzés a következőről: VisualStudioCodeCredential
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 megoldódik, a rendszer visszaállítja ezt a módosítást.
Példák
Az alábbi példákat találja:
- Hitelesítés a DefaultAzureCredential paranccsal
- Egyéni hitelesítési folyamat definiálása a ChainedTokenCredential használatával
- Aszinkron hitelesítő adatok
Hitelesítés a DefaultAzureCredential
A környezet konfigurálásával kapcsolatos további részletek az DefaultAzureCredential
osztály referenciadokumentációjában találhatók.
Ez a példa az azure-storage-blob kódtárból való hitelesítését BlobServiceClient
mutatja be a használatávalDefaultAzureCredential
.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
default_credential = DefaultAzureCredential()
client = BlobServiceClient(account_url, credential=default_credential)
Interaktív hitelesítés engedélyezése a használatával DefaultAzureCredential
Az interaktív hitelesítés alapértelmezés szerint le van tiltva DefaultAzureCredential
, és egy kulcsszóargumentummal engedélyezhető:
DefaultAzureCredential(exclude_interactive_browser_credential=False)
Ha engedélyezve van, a rendszer alapértelmezett webböngészőjének használatával történő interaktív hitelesítésre kerül vissza, DefaultAzureCredential
ha nem áll rendelkezésre más hitelesítő adat.
Felhasználó által hozzárendelt felügyelt identitás megadása a következőhöz: DefaultAzureCredential
Számos Azure-gazdagép engedélyezi a felhasználó által hozzárendelt felügyelt identitás hozzárendelését. A felhasználó által hozzárendelt identitás hitelesítésének konfigurálásához DefaultAzureCredential
használja a managed_identity_client_id
kulcsszóargumentumot:
DefaultAzureCredential(managed_identity_client_id=client_id)
Másik lehetőségként állítsa a környezeti változót AZURE_CLIENT_ID
az identitás ügyfél-azonosítójára.
Egyéni hitelesítési folyamat definiálása a használatával ChainedTokenCredential
DefaultAzureCredential
Általában ez a leggyorsabb módja az Alkalmazások fejlesztésének az Azure-hoz való fejlesztésének. A speciálisabb forgatókönyvek esetén a ChainedTokenCredential több hitelesítőadat-példányt kapcsol össze, amelyek hitelesítése során egymás után próbálkoznak. Az egyes láncolt hitelesítő adatokat egymás után próbálja ki, amíg egy jogkivonatot nem ad meg, vagy egy hiba miatt nem sikerül a hitelesítés.
Az alábbi példa bemutatja egy hitelesítő adat létrehozását, amely először megkísérel hitelesíteni a felügyelt identitással. Ha egy felügyelt identitás nem érhető el, a hitelesítő adatok visszaállnak az Azure CLI-vel történő hitelesítésre. Ez a példa az EventHubProducerClient
azure-eventhub ügyfélkódtárból származik.
from azure.eventhub import EventHubProducerClient
from azure.identity import AzureCliCredential, ChainedTokenCredential, ManagedIdentityCredential
managed_identity = ManagedIdentityCredential()
azure_cli = AzureCliCredential()
credential_chain = ChainedTokenCredential(managed_identity, azure_cli)
client = EventHubProducerClient(namespace, eventhub_name, credential_chain)
Aszinkron hitelesítő adatok
Ez a kódtár aszinkron API-k készletét tartalmazza. Az azure.identity.aio aszinkron hitelesítő adatainak használatához először telepítenie kell egy aszinkron átvitelt, például az aiohttp-t. További információt az Azure-core dokumentációjában talál.
Az aszinkron hitelesítő adatokat be kell zárni, ha már nincs rájuk szükség. Minden aszinkron hitelesítő adat egy aszinkron környezetkezelő, és definiál egy aszinkron close
metódust. Például:
from azure.identity.aio import DefaultAzureCredential
# call close when the credential is no longer needed
credential = DefaultAzureCredential()
...
await credential.close()
# alternatively, use the credential as an async context manager
credential = DefaultAzureCredential()
async with credential:
...
Ez a példa az azure-keyvault-secrets aszinkron SecretClient
hitelesítését mutatja be aszinkron hitelesítő adatokkal.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient
default_credential = DefaultAzureCredential()
client = SecretClient("https://my-vault.vault.azure.net", default_credential)
Felügyelt identitás támogatása
A felügyelt identitás hitelesítése a következő Azure-szolgáltatások vagy közvetlenül a használatával DefaultAzureCredential
ManagedIdentityCredential
támogatott:
- Azure App Service és Azure Functions
- Azure Arc
- Azure Cloud Shell
- Azure Kubernetes Service
- Azure Service Fabric
- Azure Virtual Machines
- Azure Virtual Machines méretezési csoportok
Példák
Hitelesítés felhasználó által hozzárendelt felügyelt identitással
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credential = ManagedIdentityCredential(client_id=managed_identity_client_id)
client = SecretClient("https://my-vault.vault.azure.net", credential)
Hitelesítés rendszer által hozzárendelt felügyelt identitással
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credential = ManagedIdentityCredential()
client = SecretClient("https://my-vault.vault.azure.net", credential)
Felhő konfigurálása
Az azure-beli nyilvános felhő Azure AD végpontjának hitelesítéséhez használt hitelesítő adatok alapértelmezés szerint. Más felhőkben, például Azure Government vagy magánfelhőben lévő erőforrások eléréséhez konfigurálja a hitelesítő adatokat az authority
argumentummal. Az AzureAuthorityHosts a jól ismert felhők szolgáltatóit határozza meg:
from azure.identity import AzureAuthorityHosts
DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
Ha a felhő szolgáltatója nem szerepel a AzureAuthorityHosts
listában, explicit módon megadhatja annak URL-címét:
DefaultAzureCredential(authority="https://login.partner.microsoftonline.cn")
Az argumentum megadása authority
helyett a környezeti változót AZURE_AUTHORITY_HOST
a felhő szolgáltatójának URL-címére is beállíthatja. Ez a módszer akkor hasznos, ha több hitelesítő adatot konfigurál egy felhőben való hitelesítéshez:
AZURE_AUTHORITY_HOST=https://login.partner.microsoftonline.cn
Nem minden hitelesítő adat igényli ezt a konfigurációt. Az olyan hitelesítő adatok, amelyek egy fejlesztőeszközön (például AzureCliCredential
) keresztül hitelesíthetők, az eszköz konfigurációját használják. Hasonlóképpen elfogad egy authority
argumentumot, VisualStudioCodeCredential
de alapértelmezés szerint a VS Code "Azure: Cloud" beállításának megfelelő szolgáltató.
Hitelesítő adatok osztályai
Az Azure által üzemeltetett alkalmazások hitelesítése
Hitelesítő adat | Használat |
---|---|
DefaultAzureCredential |
Egyszerűsített hitelesítési élményt nyújt az Azure-ban futó alkalmazások fejlesztésének gyors megkezdéséhez. |
ChainedTokenCredential |
Lehetővé teszi, hogy a felhasználók egyéni hitelesítési folyamatokat definiáljanak, amelyek több hitelesítő adatot írnak. |
EnvironmentCredential |
Egy szolgáltatásnevet vagy felhasználót hitelesít a környezeti változókban megadott hitelesítő adatokon keresztül. |
ManagedIdentityCredential |
Hitelesíti egy Azure-erőforrás felügyelt identitását. |
WorkloadIdentityCredential |
Támogatja Azure AD számítási feladatok identitását a Kubernetesben. |
Szolgáltatásnevek hitelesítése
Hitelesítő adat | Használat | Referencia |
---|---|---|
CertificateCredential |
Tanúsítvány használatával hitelesíti a szolgáltatásnevet. | Szolgáltatásnév hitelesítése |
ClientAssertionCredential |
Hitelesíti a szolgáltatásnevet egy aláírt ügyfél-helyességi feltétellel. | |
ClientSecretCredential |
Titkos kóddal hitelesíti a szolgáltatásnevet. | Szolgáltatásnév hitelesítése |
Felhasználók hitelesítése
Hitelesítő adat | Használat | Referencia |
---|---|---|
AuthorizationCodeCredential |
Hitelesíti a felhasználót egy korábban beszerzett engedélyezési kóddal. | OAuth2 hitelesítési kód |
DeviceCodeCredential |
Interaktívan hitelesíti a felhasználókat korlátozott felhasználói felülettel rendelkező eszközökön. | Eszközkód hitelesítése |
InteractiveBrowserCredential |
Interaktívan hitelesíti a felhasználót az alapértelmezett rendszerböngészővel. | OAuth2 hitelesítési kód |
OnBehalfOfCredential |
Propagálja a delegált felhasználói identitást és engedélyeket a kérelemláncon keresztül. | A hitelesítés nevében |
UsernamePasswordCredential |
Felhasználó hitelesítése felhasználónévvel és jelszóval (nem támogatja a többtényezős hitelesítést). | Felhasználónév és jelszó hitelesítése |
Hitelesítés fejlesztői eszközökkel
Hitelesítő adat | Használat | Referencia |
---|---|---|
AzureCliCredential |
Fejlesztési környezetben hitelesíti magát az Azure CLI-vel. | Azure CLI-hitelesítés |
AzureDeveloperCliCredential |
Fejlesztési környezetben hitelesíti magát a Azure Developer CLI. | Azure Developer CLI referencia |
AzurePowerShellCredential |
Fejlesztési környezetben hitelesíti magát a Azure PowerShell. | Azure PowerShell hitelesítés |
VisualStudioCodeCredential |
Hitelesítés a Visual Studio Code Azure-fiókbővítménybe bejelentkezett felhasználóként. | VS Code Azure-fiókbővítmény |
Környezeti változók
AlapértelmezettAzureCredential és EnvironmentCredential környezeti változókkal konfigurálható. Minden hitelesítési típushoz szükség van bizonyos változók értékeire:
Szolgáltatásnév titkos kóddal
Változó neve | Érték |
---|---|
AZURE_CLIENT_ID |
Egy Azure AD-alkalmazás azonosítója |
AZURE_TENANT_ID |
Az alkalmazás Azure AD bérlőjének azonosítója |
AZURE_CLIENT_SECRET |
az alkalmazás egyik titkos ügyfélkulcsa |
Szolgáltatásnév tanúsítvánnyal
Változó neve | Érték |
---|---|
AZURE_CLIENT_ID |
Egy Azure AD-alkalmazás azonosítója |
AZURE_TENANT_ID |
Az alkalmazás Azure AD bérlőjének azonosítója |
AZURE_CLIENT_CERTIFICATE_PATH |
PEM- vagy PKCS12-tanúsítványfájl elérési útja, beleértve a titkos kulcsot |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
a tanúsítványfájl jelszava, ha van ilyen |
Felhasználónév és jelszó
Változó neve | Érték |
---|---|
AZURE_CLIENT_ID |
Egy Azure AD-alkalmazás azonosítója |
AZURE_USERNAME |
felhasználónév (általában egy e-mail-cím) |
AZURE_PASSWORD |
a felhasználó jelszava |
A rendszer a fenti sorrendben kísérli meg a konfigurációt. Ha például egy titkos ügyfélkód és egy tanúsítvány értékei is jelen vannak, a rendszer az ügyfélkulcsot fogja használni.
Jogkivonatok gyorsítótárazása
A jogkivonatok gyorsítótárazása az Azure Identity-kódtár által biztosított szolgáltatás, amely lehetővé teszi az alkalmazások számára a következőket:
- Gyorsítótár-jogkivonatok a memóriában (alapértelmezett) vagy a lemezen (opt-in).
- A rugalmasság és a teljesítmény javítása.
- Csökkentse a hozzáférési jogkivonatok beszerzéséhez Azure AD küldött kérések számát.
Az Azure Identity-kódtár memórián belüli és állandó lemez-gyorsítótárazást is kínál. További részletekért tekintse meg a jogkivonatok gyorsítótárazási dokumentációját.
Hibaelhárítás
A különböző hibaforgatókönyvek diagnosztizálásával kapcsolatos részletekért tekintse meg a hibaelhárítási útmutatót .
Hibakezelés
A hitelesítő adatok akkor keletkeznek CredentialUnavailableError
, ha nem próbálják meg a hitelesítést, mert nem rendelkeznek a szükséges adatokkal vagy állapotokkal. Az EnvironmentCredential például akkor emeli ki ezt a kivételt, ha nem teljes.
A hitelesítő adatok akkor keletkeznek azure.core.exceptions.ClientAuthenticationError
, ha nem tudnak hitelesítést végezni. ClientAuthenticationError
attribútummal message
rendelkezik, amely leírja, hogy miért hiúsult meg a hitelesítés. A vagy ChainedTokenCredential
által DefaultAzureCredential
kiváltott üzenet hibaüzeneteket gyűjt a lánc egyes hitelesítő adataiból.
Az adott Azure AD hibák kezelésével kapcsolatos további információkért tekintse meg az Azure AD hibakód dokumentációját.
Naplózás
Ez a kódtár a szabványos naplózási kódtárat használja a naplózáshoz. A hitelesítő adatok alapvető információkat naplóznak, beleértve a HTTP-munkameneteket (URL-címeket, fejléceket stb.) info szinten. Ezek a naplóbejegyzések nem tartalmaznak hitelesítési titkos kódokat.
A részletes HIBAKERESÉSi szint naplózása, beleértve a kérelem-/választörzseket és a fejlécértékeket, alapértelmezés szerint nincs engedélyezve. Az argumentummal logging_enable
engedélyezhető. Például:
credential = DefaultAzureCredential(logging_enable=True)
FIGYELEM: A hitelesítő adatok hibakeresési szintű naplói bizalmas információkat tartalmaznak. Ezeket a naplókat védeni kell a fiókbiztonság veszélyeztetésének elkerülése érdekében.
Következő lépések
Ügyfélkódtár támogatása
Az Azure SDK kiadási oldalán felsorolt ügyfél- és felügyeleti kódtárak, amelyek támogatják Azure AD hitelesítést, fogadják el a hitelesítő adatokat ebből a kódtárból. A kódtárak használatáról a kiadási oldalról csatolt dokumentációban talál további információt.
Ismert problémák
Ez a kódtár nem támogatja Azure AD B2C-t.
Egyéb nyitott problémák esetén tekintse meg a könyvtár GitHub-adattárát.
Visszajelzés küldése
Ha hibákat tapasztal, vagy javaslatai vannak, nyisson meg egy problémát.
Közreműködés
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.
A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes adattárban a CLA használatával.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért keresse fel a Viselkedési szabályzattal kapcsolatos gyakori kérdések oldalát, illetve küldje el kérdéseit vagy észrevételeit a következő címre: opencode@microsoft.com.