Megosztás a következőn keresztül:


.NET-alkalmazások hitelesítése Azure-szolgáltatásokba a helyi fejlesztés során szolgáltatásnevek használatával

A helyi fejlesztés során az alkalmazásoknak hitelesíteni kell magukat az Azure-ban a különböző Azure-szolgáltatások eléréséhez. A helyi hitelesítés két gyakori módszere a fejlesztői fiók vagy a szolgáltatási azonosító használata. Ez a cikk az alkalmazás-szolgáltatásnév használatát ismerteti. Az alábbi szakaszokban a következő ismereteket ismerheti meg:

  • Alkalmazás regisztrálása a Microsoft Entra-ban egy szolgáltatási főszereplő létrehozásához
  • A Microsoft Entra-csoportok használata az engedélyek hatékony kezeléséhez
  • 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álatával betarthatja a minimális jogosultság elvét az 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ásokhoz való véletlen hozzáférést. 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.

Egy diagram, amely bemutatja, hogy egy helyi .NET-alkalmazás hogyan használ szolgáltatásnevet az Azure-erőforrásokhoz való csatlakozáshoz.

Amikor az alkalmazás regisztrálva van az Azure-ban, létrejön egy alkalmazás-szolgáltatásnév. Helyi fejlesztéshez:

  • Hozzon létre egy külön alkalmazásregisztrációt minden fejlesztő számára, aki az alkalmazáson dolgozik, hogy minden fejlesztő rendelkezzen saját alkalmazásszolgáltatásnévvel, elkerülve a hitelesítő adatok megosztásának szükségességét.
  • Hozzon létre egy külön alkalmazásregisztrációt minden alkalmazáshoz, hogy az alkalmazás engedélyeit csak a szükségesre korlátozza.

A helyi fejlesztés során a környezeti változók az application service principal identitásával vannak beállítva. Az Azure Identity-kódtár felolvassa ezeket a környezeti változókat, hogy hitelesítse az alkalmazást a szükséges Azure-erőforrásokon.

Az alkalmazás regisztrálása az Azure-ban

Az alkalmazásszolgáltatás fő objektumai egy azure-beli alkalmazásregisztráción keresztül jönnek létre az Azure Portal vagy az Azure CLI használatával.

  • Azure portál
  • Azure CLI
  1. Az Azure portálon a keresősáv segítségével lépjen az alkalmazásregisztrációk lapra.

  2. A Alkalmazásregisztrációk lapon válassza az + Ú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.

    Képernyőkép arról, hogyan hozhat létre alkalmazásregisztrációt az Azure Portalon.

  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.

    Jegyzet

    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.

Microsoft Entra-csoport létrehozása helyi fejlesztéshez

Hozzon létre egy Microsoft Entra-csoportot, amely az alkalmazás által igényelt szerepköröket (engedélyeket) foglalja magában a helyi fejlesztés során, és nem rendeli hozzá a szerepköröket az egyes szolgáltatásnév-objektumokhoz. Ez a megközelítés a következő előnyöket kínálja:

  • Minden fejlesztőhöz ugyanazok a szerepkörök vannak hozzárendelve a csoport szintjén.
  • Ha új szerepkörre van szükség az alkalmazáshoz, azt csak az alkalmazás csoportához kell hozzáadni.
  • Ha egy új fejlesztő csatlakozik a csapathoz, egy új alkalmazásszolgáltatás-tag jön létre a fejlesztő számára, és hozzáadódik a csoporthoz, biztosítva, hogy a fejlesztő megfelelő engedélyekkel rendelkezik az alkalmazás használatához.
  • Azure portál
  • Azure CLI
  1. Lépjen a Microsoft Entra ID áttekintési lapjára az Azure portálon.

  2. A bal oldali menüben válassza Minden csoport lehetőséget.

  3. A Csoportok lapon válassza Új csoportlehetőséget.

  4. Az Új csoport lapon töltse ki az alábbi űrlapmezőket:

    • Csoporttípus: Válassza Biztonságilehetőséget.
    • csoportnév: Adja meg annak a csoportnak a nevét, amely az alkalmazás vagy a környezet nevére mutató hivatkozást tartalmaz.
    • csoport leírása: Adjon meg egy leírást, amely ismerteti a csoport célját.

    Egy képernyőkép, amely bemutatja, hogyan hozhat létre csoportot az Azure Portalon.

  5. A Tagok alatt válassza a Nincsenek tagok kiválasztva hivatkozást, hogy tagokat adjon a csoporthoz.

  6. A megnyíló legördülő panelen keresse meg a korábban létrehozott szolgáltatási objektumot, és válassza ki a szűrt eredmények közül. A kijelölés megerősítéséhez válassza a kiválasztása gombot a panel alján.

  7. Válassza a Új csoport lap alján található létrehozása lehetőséget a csoport létrehozásához és a Minden csoport lapra való visszatéréshez. Ha nem látja az új csoportot a listában, várjon egy kis időt, és frissítse a lapot.

Szerepkörök hozzárendelése a csoporthoz

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 Microsoft Entra-csoporthoz. A csoportok szerepkörhöz rendelhetők az erőforrás, az erőforráscsoport vagy az előfizetés hatókörében. 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.

  • Azure portál
  • Azure CLI
  1. Az Azure Portalon keresse meg az alkalmazást tartalmazó erőforráscsoport Áttekintés lapját.

  2. Válassza Hozzáférés-vezérlés (IAM) a bal oldali navigációs sávból.

  3. A Hozzáférés-vezérlés (IAM) lapon válassza a + hozzáadása 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 lapon számos lap található a szerepkörök konfigurálásához és hozzárendeléséhez.

  4. A Szerepkör lapon keresse meg a hozzárendelni kívánt szerepkört a keresőmezővel. Jelölje ki a szerepkört, majd válassza a Következőlehetőséget.

  5. A Tagok lapon:

    • A Hozzáférés hozzárendelése értékhez, válassza 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, ezzel megnyílik a Tagok kijelölése úszó panel.
    • Keresse meg a korábban létrehozott Microsoft Entra-csoportot, é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 Véleményezés + hozzárendelés a Tagok lap alján.

    Képernyőkép arról, hogyan rendelhet szerepkört a Microsoft Entra csoporthoz.

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

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

Futásidőben az Azure Identity Librarybizonyos hitelesítő adatai – például DefaultAzureCredential, EnvironmentCredentialés ClientSecretCredential– konvenció szerint keresnek szolgáltatásnév-információkat a környezeti változókban. A környezeti változók többféleképpen konfigurálhatók a .NET 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: Az Azure-ban regisztrált alkalmazás azonosítására szolgál.
  • AZURE_TENANT_ID: A Microsoft Entra tenant azonosítója.
  • AZURE_CLIENT_SECRET: Az alkalmazáshoz létrehozott titkos hitelesítő adatok.

A Visual Studióban a környezeti változók a projekt launchsettings.json mappájának Properties fájljában á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.

"profiles": {
    "SampleProject": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7177;http://localhost:5177",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "<your-client-id>",
        "AZURE_TENANT_ID":"<your-tenant-id>",
        "AZURE_CLIENT_SECRET": "<your-client-secret>"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "<your-client-id>",
        "AZURE_TENANT_ID":"<your-tenant-id>",
        "AZURE_CLIENT_SECRET": "<your-client-secret>"
      }
    }
  }

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

A Azure Identity-kódtár különböző hitelesítő adatokat biztosít– a különböző forgatókönyvekhez és a Microsoft Entra-hitelesítési folyamatokhoz igazított TokenCredential implementációit. Az alábbi lépések bemutatják, hogyan használható ClientSecretCredential a szolgáltatásnevek helyi és éles környezetben történő használata során.

A kód implementálása

Adja hozzá a Azure.Identity csomagot. Egy ASP.NET Core-projektben telepítse a Microsoft.Extensions.Azure csomagot is:

  • Parancssor
  • NuGet-csomagkezelő

Keresse meg az alkalmazásprojekt könyvtárát egy tetszőleges terminálon, és futtassa a következő parancsokat:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

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. Ezeket az osztályokat és a saját egyéni szolgáltatásokat regisztrálni kell a függőséginjektáláshoz, hogy azok az alkalmazás teljes területén használhatók legyenek. A Program.cs-ban végezze el a következő lépéseket az ügyfélosztály konfigurálásához függőséginjektálással és jogkivonatalapú hitelesítéssel:

  1. Adja hozzá a Azure.Identity és Microsoft.Extensions.Azure névtereket a using irányelvekkel.
  2. Regisztrálja az Azure szolgáltatási ügyfelet a megfelelő Add-előtagú kiterjesztési metódus használatával.
  3. Konfigurálja az ClientSecretCredential-t a tenantId-t, clientId-t és clientSecret-t.
  4. Adja át a ClientSecretCredential példányt a UseCredential metódusnak.
builder.Services.AddAzureClients(clientBuilder =>
{
    var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
    var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
    var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");

    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));

    clientBuilder.UseCredential(new ClientSecretCredential(tenantId, clientId, clientSecret));
});

A UseCredential módszer alternatíva a hitelesítő adatok közvetlen biztosítása a szolgáltatásügyfél számára:

var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new ClientSecretCredential(tenantId, clientId, clientSecret)));