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 végzett fejlesztésrő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.
Ajánlott alkalmazáshitelesítési módszer
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 Identity ügyfélkódtár olyan osztályokat biztosít, amelyek támogatják a jogkivonatalapú hitelesítést, és lehetővé teszik az alkalmazások számára, hogy 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 helyezve az Azure-ban vagy egy helyszíni kiszolgálón van üzembe helyezve.
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.
- 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 Identity ügyfélkódtár á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-identity csomag microsoft Entra-jogkivonatokat szerez be és kezel Önnek. Ez megkönnyíti 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 Identity-ügyfélkódtárban 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 a helyi fejlesztés során egy fejlesztő munkaállomásán fut, 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 a Microsoft Entra-azonosítóhoz való hitelesítéshez szükséges, véleményezett, rendezett mechanizmussorozat. Minden hitelesítési mechanizmus egy osztály, amely implementálja a TokenCredential protokollt, és hitelesítő adatként ismert. Futásidőben DefaultAzureCredential
megkísérli a hitelesítést az első hitelesítő adatok használatával. Ha a hitelesítő adatok nem szereznek be hozzáférési jogkivonatot, a rendszer megkísérli a következő hitelesítő adatot a sorozatban, és így tovább, amíg egy hozzáférési jogkivonatot nem szerez be sikeresen. Ily módon az alkalmazás különböző hitelesítő adatokat használhat különböző környezetekben anélkül, hogy környezetspecifikus kódot ír.
Python-alkalmazásban való használathoz DefaultAzureCredential
adja hozzá az azure-identity csomagot az alkalmazáshoz.
pip install azure-identity
Az Azure-szolgáltatások speciális ügyfélosztályokkal érhetők el a különböző Azure SDK-ügyfélkódtárakból. 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)
Amikor az előző kód a helyi fejlesztői munkaállomáson fut, az alkalmazásszolgáltatásnév környezeti változóiban vagy a helyileg telepített fejlesztői eszközökben, például az Azure CLI-ben keres egy fejlesztői hitelesítő adatokat. Bármelyik módszer használható az alkalmazás Azure-erőforrásokon való hitelesítésére a helyi fejlesztés során.
Az Azure-ban való üzembe helyezéskor ugyanez a kód hitelesítheti az alkalmazást az Azure-erőforrásokban is. DefaultAzureCredential
lekérheti a környezeti beállításokat és a felügyelt identitáskonfigurációkat az Azure-szolgáltatások automatikus hitelesítéséhez.