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

Ha egy alkalmazásnak hozzá kell férnie egy Azure-erőforráshoz, például a tárolóhoz, a kulcstartóhoz vagy a kognitív szolgáltatásokhoz, az alkalmazást hitelesíteni kell az Azure-ban. Ez minden alkalmazásra érvényes, legyen szó az Azure-ban üzembe helyezett, a helyszínen vagy egy helyi fejlesztői munkaállomáson végzett fejlesztés alatt álló alkalmazásokról. Ez a cikk azokat az ajánlott módszereket ismerteti, hogyan hitelesíthet egy alkalmazást az Azure-ban a Pythonhoz készült Azure SDK használata során.

Az Azure-erőforrásokhoz való hitelesítéskor ajánlott jogkivonat-alapú hitelesítést használni a kapcsolati sztringek helyett. A Pythonhoz készült Azure SDK olyan osztályokat biztosít, amelyek támogatják a jogkivonat-alapú hitelesítést, és lehetővé teszik, hogy az alkalmazások zökkenőmentesen hitelesítsék magukat az Azure-erőforrásokon, 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, hogy az alkalmazásnak milyen típusú jogkivonat-alapú hitelesítést kell használnia az Azure-erőforrásokon való hitelesítéshez, attól függ, hogy az alkalmazás hol fut, és az alábbi ábrán látható.

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

DefaultAzureCredential

Az Azure SDK által biztosított DefaultAzureCredential osztály lehetővé teszi, hogy az alkalmazások különböző hitelesítési módszereket használjanak attól függően, hogy milyen környezetben futnak. Ez lehetővé teszi az alkalmazások előléptetését 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 feltételes logika vagy funkciójelölők manuális kódolása DefaultAzureCredential helyett érdemesebb különböző hitelesítési módszereket használni a különböző környezetekben.

A DefaultAzureCredential osztály használatával kapcsolatos részleteket a cikk későbbi részében, a DefaultAzureCredential használata egy alkalmazásban című szakaszban ismertetjük.

A jogkivonat-alapú hitelesítés előnyei

A jogkivonat-alapú hitelesítés erősen ajánlott a kapcsolati sztringek használata esetén az Azure-alkalmazások létrehozásakor. A jogkivonat-alapú hitelesítés a következő előnyöket nyújtja a kapcsolati sztringekkel való hitelesítéssel szemben.

  • Az alább ismertetett jogkivonat-alapú hitelesítési módszerek lehetővé teszik, hogy meghatározza az alkalmazás által az Azure-erőforráson szükséges konkrét engedélyeket. Ez a minimális jogosultság elvét követi. Ezzel szemben a kapcsolati sztring teljes jogokat biztosít az Azure-erőforráshoz.
  • Míg bárki vagy bármely kapcsolati sztring rendelkező alkalmazás csatlakozhat egy Azure-erőforráshoz, a jogkivonat-alapú hitelesítési módszerek az erőforráshoz való hozzáférést csak az erőforrás eléréséhez használni kívánt alkalmazás(ok)ra terjednek ki.
  • Felügyelt identitás esetén nincs tárolandó titkos alkalmazáskulcs. Ez biztonságosabbá teszi az alkalmazást, mert nincs kapcsolati sztring vagy titkos alkalmazáskulcs, mint ami sérülhet.
  • Az Azure SDK azure.identity csomagja a háttérben kezeli a jogkivonatokat. Ez megkönnyíti a jogkivonat-alapú hitelesítés használatát kapcsolati sztring.

A kapcsolati sztringek használatát a koncepcióalapú alkalmazások vagy fejlesztési prototípusok kezdeti ellenőrzésére kell korlátozni, amelyek nem férnek hozzá az éles vagy bizalmas adatokhoz. Ellenkező esetben az Azure SDK-ban elérhető jogkivonat-alapú hitelesítési osztályokat mindig előnyben kell részesíteni az Azure-erőforrásokhoz való hitelesítéskor.

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

Kiszolgálói környezetben való üzemeltetés esetén minden alkalmazáshoz egyedi alkalmazásidentitást kell hozzárendelni minden olyan környezetben, amelyben az alkalmazás fut. Az Azure-ban az alkalmazásidentitást egy szolgáltatásnév képviseli, amely egy speciális típusú rendszerbiztonsági tag , amely az azure-beli alkalmazások azonosítására és hitelesítésére szolgál. 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 Description
Az Azure-ban üzemeltetett alkalmazások Az Azure-ban üzemeltetett alkalmazásoknak felügyelt identitás szolgáltatásnevet kell használniuk. A felügyelt identitások az Azure-ban üzemeltetett alkalmazások identitását képviselik, és csak azure-ban üzemeltetett alkalmazásokkal használhatók.

Például egy Azure App Service üzemeltetett Django-webalkalmazáshoz felügyelt identitás lesz hozzárendelve. Ezután az alkalmazáshoz rendelt felügyelt identitással hitelesítheti az alkalmazást más Azure-szolgáltatásokban.

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), amelyeknek csatlakozniuk kell az Azure-szolgáltatásokhoz, alkalmazás-szolgáltatásnevet 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ünk például egy helyszínen üzemeltetett Django-webalkalmazást, amely Azure Blob Storage használ. 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 beolvashat, és lehetővé teszi, hogy az alkalmazás az Alkalmazás szolgáltatásnévvel hitelesítse magát az Azure-ban.

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 magát az alkalmazás által használt Azure-szolgáltatásokban. Az alkalmazások Azure-beli hitelesítésének két fő stratégiája a helyi fejlesztés során:

Hitelesítési módszer Description
A helyi fejlesztés során használandó dedikált alkalmazás-szolgáltatásnév-objektumok létrehozása Ebben a módszerben a dedikált alkalmazásszolgáltatás egyszerű objektumai az alkalmazásregisztrációs folyamattal vannak beállítva a helyi fejlesztés során való használatra. A szolgáltatásnév identitását ezután környezeti változókként tárolja a rendszer, amelyeket az alkalmazás helyi fejlesztésben való futtatáskor érhet el.

Ezzel a módszerrel hozzárendelheti az alkalmazás által igényelt erőforrás-engedélyeket a fejlesztők által a helyi fejlesztés során használt szolgáltatásnév-objektumokhoz. Ez biztosítja, hogy az alkalmazás csak azokhoz az erőforrásokhoz férhessen 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 az, hogy külön szolgáltatásnév-objektumokat kell létrehozni minden olyan fejlesztő számára, aki egy alkalmazáson dolgozik.

Az alkalmazás hitelesítése az Azure-ban a fejlesztő hitelesítő adataival a helyi fejlesztés során Ebben a módszerben a fejlesztőknek be kell jelentkezniük az Azure-ba a VS Code-hoz készült Azure Tools bővítményből, az Azure CLI-ből vagy a helyi munkaállomásukon Azure PowerShell. 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 hozzáférhet az Azure-erőforrásokhoz az alkalmazásból.

Ez a módszer a könnyebb beállítás előnye, mivel a fejlesztőknek csak a VS Code-ból vagy az Azure CLI-ből kell bejelentkezniük az Azure-fiókjukba. Ennek a megközelítésnek az 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, ezért nem replikálja megfelelően azokat az engedélyeket, amelyekkel az alkalmazás éles környezetben fog futni.

DefaultAzureCredential használata egy alkalmazásban

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

pip install azure-identity

Ezután a következő példakód bemutatja, hogyan példányosíthat egy DefaultAzureCredential objektumot, és használhatja azt egy Azure SDK ügyfélosztálysal, ebben az esetben egy BlobServiceClienttel, amely a Blob Storage eléréséhez használatos.

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)

DefaultAzureCredential automatikusan észleli az alkalmazáshoz konfigurált hitelesítési mechanizmust, és beszerezi az alkalmazás Azure-beli hitelesítéséhez szükséges jogkivonatokat. Ha egy alkalmazás több SDK-ügyfelet használ, ugyanaz a hitelesítő objektum használható minden SDK-ügyfélobjektummal.

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

Belsőleg DefaultAzureCredential megvalósítja a hitelesítőadat-szolgáltatók láncát 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. DefaultAzureCredential 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 megjelenési sorrendje DefaultAzureCredential az alábbi ábrán és táblázatban látható.

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

Hitelesítő adatok típusa Description
Alkalmazás-szolgáltatásnév A DefaultAzureCredential beolvassa a környezeti változók egy halmazát annak megállapításához, hogy be van-e állítva alkalmazás-szolgáltatásnév (alkalmazásfelhasználó) az alkalmazáshoz. Ha igen, DefaultAzureCredential ezekkel az értékekkel hitelesíti az alkalmazást az Azure-ban.

Ezt a módszert leggyakrabban kiszolgálói környezetekben használják, de helyi fejlesztéskor is használható.
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 a felügyelt identitással hitelesíti az alkalmazást az Azure-ban. A felügyelt identitással történő hitelesítésről a jelen dokumentum Kiszolgálói környezetekben történő hitelesítés című szakaszában olvashat.

Ez a módszer csak akkor érhető el, ha egy alkalmazást olyan szolgáltatással üzemeltetnek az Azure-ban, mint a Azure App Service, a Azure Functions vagy az Azure Virtual Machines.
Visual Studio Code Ha a fejlesztő a Visual Studio Code Azure-fiók beépülő modullal hitelesítette az Azure-t, DefaultAzureCredential az alkalmazást ugyanazzal a fiókkal fogja hitelesíteni az Azure-ban.
Azure CLI Ha egy fejlesztő az Azure CLI-ben található paranccsal hitelesítette az az login Azure-t, DefaultAzureCredential az alkalmazást ugyanazzal a fiókkal hitelesíti az Azure-ban.
Azure PowerShell Ha egy fejlesztő a Azure PowerShell parancsmagjának használatával hitelesítette az Connect-AzAccount Azure-ban, DefaultAzureCredential az alkalmazást ugyanazzal a fiókkal fogja hitelesíteni az Azure-ban.
Interaktív Ha engedélyezve van, a DefaultAzureCredential interaktívan hitelesíti a fejlesztőt az aktuális rendszer alapértelmezett böngészőjén keresztül. Ez a beállítás alapértelmezés szerint le van tiltva.