Azure-erőforrások hitelesítése helyszíni üzemeltetésű Python-alkalmazásokból

A Azure kívül üzemeltetett alkalmazásoknak, például a helyszínen vagy egy külső adatközpontban, Microsoft Entra ID kell használniuk egy alkalmazásszolgáltatásnevet a Azure szolgáltatások hitelesítéséhez. Az alábbi szakaszokban a következő ismereteket ismerheti meg:

  • Microsoft Entra alkalmazás regisztrálása szolgáltatás főfelhasználó létrehozásához
  • Szerepkörök hozzárendelése hatókörengedélyekhez
  • Hogyan hitelesítsünk szolgáltatás főnév alkalmazásával az alkalmazásod kódjából

A dedikált alkalmazásszolgáltatás-tagok használata lehetővé teszi, hogy betartsa a minimális jogosultság elvét Azure erőforrások elérésekor. Az engedélyek az alkalmazás adott követelményeire korlátozódnak a fejlesztés során, megakadályozva a más alkalmazásokhoz vagy szolgáltatásokhoz szánt Azure erőforrások véletlen elérését. Ez a megközelítés segít elkerülni azokat a problémákat is, amikor az alkalmazást éles környezetbe helyezik át, mivel biztosítja, hogy a fejlesztési környezetben ne rendelkezzen túlzott jogosultságokkal.

Minden olyan környezethez létre kell hozni egy másik alkalmazásregisztrációt, amelyben az alkalmazás üzemel. Ez lehetővé teszi a környezetspecifikus erőforrás-engedélyek konfigurálását minden egyes szolgáltatásnévhez, és győződjön meg arról, hogy egy adott környezetben üzembe helyezett alkalmazás nem beszél Azure olyan erőforrásokkal, amelyek egy másik környezet részét képezik.

Az alkalmazás regisztrálása a Azure

Az alkalmazásszolgáltatási szolgáltatásfő objektumai az Azure-ban egy alkalmazásregisztráción keresztül jönnek létre, az Azure portál vagy az Azure CLI használatával.

  1. A Azure portál keresősávján lépjen a App registrations lapra.

  2. A App registrations lapon válassza a + Új regisztráció lehetőséget.

  3. Az alkalmazás regisztrálása oldalon:

    • A Név mezőben adjon meg egy leíró értéket, amely tartalmazza az alkalmazás nevét és a célkörnyezetet.
    • A Támogatott fióktípusokesetén válassza csak ebben a szervezeti címtárban lévő fiókokat (csak Microsoft Ügyfél által vezetett – Egyetlen bérlő), vagy amelyik a legjobban megfelel a követelményeknek.
  4. Az alkalmazás regisztrálásához és a szolgáltatásfőfelhasználó létrehozásához válassza a Regisztrálás lehetőséget.

    Az Azure portálon egy alkalmazásregisztráció létrehozását bemutató képernyőkép.

  5. Az alkalmazás alkalmazásregisztrációs lapján másolja ki a alkalmazás (ügyfél) azonosítóját és címtár (bérlő) azonosítóját, majd illessze be őket egy ideiglenes helyre, hogy később használhassa őket az alkalmazáskód-konfigurációkban.

  6. Válassza Tanúsítvány vagy titkos hozzáadása lehetőséget az alkalmazás hitelesítő adatainak beállításához.

  7. A Tanúsítványok > titkos kódok lapon válassza az + Új ügyfélkód lehetőséget.

  8. A megnyíló Ügyfélkód hozzáadása legördülő panelen:

    • A Leírásmezőben adja meg az Aktuális értéket.
    • A Lejárat értéknél hagyja meg az alapértelmezett 180 napos ajánlott értéket.
    • Válassza az Hozzáadás lehetőséget a titkos kód hozzáadásához.
  9. A Tanúsítványok & titkos kulcsok lapon másolja ki az ügyfél titkos kódjának Érték tulajdonságát egy későbbi lépésben való használatra.

    Megjegyzés:

    Az ügyfél titkos kódjának értéke csak egyszer jelenik meg az alkalmazásregisztráció létrehozása után. Több ügyféltitkot is hozzáadhat anélkül, hogy érvénytelenítené ezt az ügyféltitkot, de ennek az értékét többé nem lehet megjeleníteni.

Szerepkörök hozzárendelése az application service principalhez

Ezután határozza meg, hogy az alkalmazásnak milyen szerepkörökre (engedélyekre) van szüksége az erőforrásokhoz, és rendelje hozzá ezeket a szerepköröket a létrehozott szolgáltatásnévhez. A szerepkörök az erőforrás, az erőforráscsoport vagy az előfizetés hatókörében rendelhetők hozzá. 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.

  1. A Azure portálon keresse meg az alkalmazást tartalmazó erőforráscsoport Overview lapját.

  2. A bal oldali navigációs sávon válassza a Hozzáférés-vezérlés (IAM) lehetőséget.

  3. A Hozzáférés-vezérlés (IAM) lapon válassza a + Hozzáadás lehetőséget, majd a legördülő menüben válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget. A Szerepkör-hozzárendelés hozzáadása lap számos lapot biztosít a szerepkörök konfigurálásához és hozzárendeléséhez.

  4. A Szerepkör lapon a keresőmezővel keresse meg a hozzárendelni kívánt szerepkört. Jelölje ki a szerepkört, majd kattintson a Tovább gombra.

  5. A Tagok lapon:

    • Az értékhez való hozzáférés hozzárendeléséhez válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget.
    • A Tagok értéknél válassza a + Tagok kijelölése lehetőséget a Tagok kijelölése úszó panel megnyitásához.
    • Keresse meg a korábban létrehozott szolgáltatásnevet, és válassza ki a szűrt eredmények közül. Válassza a , majd a lehetőséget a csoport kijelöléséhez és a lebegő panel bezárásához.
    • Válassza a Véleményezés + hozzárendelés lehetőséget a Tagok lap alján.

    Képernyőkép arról, hogyan rendelhet szerepkört a szolgáltatástulajdonoshoz.

  6. A Véleményezés + hozzárendelés lapon válassza a Véleményezés + hozzárendelés lehetőséget a lap alján.


Az alkalmazáskörnyezet változóinak beállítása

Futtatási időben az Azure Identity könyvtár bizonyos hitelesítő adatai, mint például a DefaultAzureCredential, EnvironmentCredential és ClientSecretCredential, konvenció szerint keresik a szolgáltatás főgazda információkat a környezeti változókban. A környezeti változók többféleképpen konfigurálhatók a Python használata során, az eszköztől és a környezettől függően.

A választott megközelítéstől függetlenül konfigurálja a következő környezeti változókat egy szolgáltatásnévhez:

  • AZURE_CLIENT_ID: A regisztrált alkalmazás azonosítására szolgál a Azure.
  • AZURE_TENANT_ID: A Microsoft Entra bérlő azonosítója.
  • AZURE_CLIENT_SECRET: Az alkalmazáshoz létrehozott titkos hitelesítő adatok.

A Visual Studio Code környezeti változók a projekt launch.json mappájában található .vscode fájlban állíthatók be. Ezeket az értékeket a rendszer automatikusan beszedi az alkalmazás indításakor. Ezek a konfigurációk azonban nem utaznak az alkalmazással az üzembe helyezés során, ezért környezeti változókat kell beállítania a célüzemeltetési környezetben.

{
    "configurations": [
        {
            "env": {
                "AZURE_CLIENT_ID": "<your-client-id>",
                "AZURE_TENANT_ID": "<your-tenant-id>",
                "AZURE_CLIENT_SECRET": "<your-client-secret>"
            }
        }
    ]
}

Hitelesítés Azure szolgáltatásokhoz az alkalmazásból

A azure-identity kódtár különböző hitelesítő adatokat – a különböző forgatókönyvek és Microsoft Entra hitelesítési folyamatok támogatásához igazított TokenCredential implementációit biztosítja. Az alábbi lépések bemutatják, hogyan használható a ClientSecretCredential a szolgáltatás-alapelvek helyben és termelési környezetben történő használata során.

A kód implementálása

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

pip install azure-identity

Ezután minden olyan Python kód esetében, amely létrehoz egy Azure SDK ügyfélobjektumot az alkalmazásban, a következőket kell tenni:

  1. Importálja az osztályt ClientSecretCredential a azure.identity modulból.
  2. Importálja a modult a os környezeti változók olvasásához.
  3. Olvassa el a környezeti változókat az ügyfélazonosító, a bérlőazonosító és az ügyfél titkos kódjának lekéréséhez.
  4. Hozzon létre egy ClientSecretCredential objektumot, amely megfelel a bérlőazonosítónak, az ügyfélazonosítónak és az ügyfél titkos kódjának.
  5. Adja át a ClientSecretCredential objektumot a Azure SDK ügyfélobjektum-konstruktornak.

Erre a megközelítésre az alábbi kódszegmensben mutatunk be példát.

import os
from azure.identity import ClientSecretCredential
from azure.storage.blob import BlobServiceClient

tenant_id = os.environ.get("AZURE_TENANT_ID")
client_id = os.environ.get("AZURE_CLIENT_ID")
client_secret = os.environ.get("AZURE_CLIENT_SECRET")

credential = ClientSecretCredential(tenant_id, client_id, client_secret)

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