.NET-alkalmazások hitelesítése Azure-szolgáltatásokba a helyi fejlesztés során szolgáltatásnevek használatával
Cikk
A fejlesztőknek a helyi munkaállomásukon kell hibakeresést végezniük és tesztelniük a felhőalkalmazásokat. Ha egy alkalmazás egy fejlesztő munkaállomásán fut a helyi fejlesztés során, akkor is hitelesítenie kell az alkalmazás által használt Azure-szolgáltatásokban. Ez a cikk bemutatja, hogyan állíthat be dedikált alkalmazásszolgáltatás-egyszerű objektumokat a helyi fejlesztés során.
A helyi fejlesztéshez szükséges dedikált alkalmazásszolgáltatás-tagok lehetővé teszik a minimális jogosultság elvét az alkalmazásfejlesztés során. Mivel az engedélyek hatóköre pontosan az alkalmazáshoz szükséges a fejlesztés során, az alkalmazáskód nem fér hozzá véletlenül egy másik alkalmazás általi használatra szánt Azure-erőforráshoz. Ez azt is megakadályozza, hogy hibák lépjenek fel az alkalmazás éles környezetbe való áthelyezésekor, mert az alkalmazás túljogosított volt a fejlesztői környezetben.
Amikor az alkalmazás regisztrálva van az Azure-ban, az alkalmazáshoz egy alkalmazás-szolgáltatásnév van beállítva. Ha helyi fejlesztésre regisztrál egy alkalmazást, a következőket javasoljuk:
Hozzon létre egy külön alkalmazásregisztrációt az alkalmazáson dolgozó minden fejlesztő számára. Ez külön alkalmazásszolgáltatás-tagokat hoz létre az egyes fejlesztők számára, hogy a helyi fejlesztés során használják, és ne kelljen a fejlesztőknek megosztanak hitelesítő adatokat egyetlen alkalmazás-szolgáltatásnévhez.
Alkalmazásonként külön alkalmazásregisztráció létrehozása. Ez csak az alkalmazás által igényelt engedélyekre terjed ki.
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, és ezeket az információkat felhasználva hitelesíti az alkalmazást a szükséges Azure-erőforrásokon.
1 – Az alkalmazás regisztrálása az Azure-ban
Az alkalmazásszolgáltatás egyszerű objektumai alkalmazásregisztrációval jönnek létre az Azure-ban. Ez az Azure Portal vagy az Azure CLI használatával végezhető el.
Jelentkezzen be az Azure Portalra , és kövesse az alábbi lépéseket.
Utasítások
Képernyőkép
Az Azure Portalon:
Adja meg az alkalmazásregisztrációkat az Azure Portal tetején található keresősávban.
A keresősáv alatt megjelenő menü Szolgáltatások fejléce alatt válassza ki a Alkalmazásregisztrációk címkével ellátott elemet.
A Alkalmazásregisztrációk lapon válassza az + Új regisztráció lehetőséget.
Az Alkalmazás regisztrálása lapon töltse ki az űrlapot az alábbiak szerint.
Név → Adja meg az alkalmazásregisztráció nevét az Azure-ban. Javasoljuk, hogy ez a név tartalmazza az alkalmazás nevét, az alkalmazásregisztráció felhasználóját, és egy olyan azonosítót, mint a "dev", amely jelzi, hogy ez az alkalmazásregisztráció a helyi fejlesztésben használható.
A támogatott fióktípusok csak ebben a szervezeti címtárban → fiókokat.
Válassza a Regisztráció lehetőséget az alkalmazás regisztrálásához és az alkalmazás-szolgáltatásnév létrehozásához.
Az alkalmazás alkalmazásregisztrációs oldalán:
Alkalmazás (ügyfél) azonosítója → Ez az az alkalmazásazonosító, amelyet az alkalmazás a helyi fejlesztés során az Azure-hoz való hozzáféréshez használ. Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mivel egy későbbi lépésben szüksége lesz rá.
Címtár (bérlő) azonosítója → Az alkalmazásnak erre az értékre is szüksége lesz az Azure-ban való hitelesítéskor. Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mivel egy későbbi lépésben is szüksége lesz rá.
Ügyfél-hitelesítő adatok → Be kell állítania az alkalmazás ügyfél-hitelesítő adatait, mielőtt az alkalmazás hitelesítést végezhet az Azure-ban, és használhatja az Azure-szolgáltatásokat. Válassza a Tanúsítvány vagy titkos kód hozzáadása lehetőséget az alkalmazás hitelesítő adatainak hozzáadásához.
A Tanúsítványok > titkos kódok lapon válassza az + Új ügyfélkód lehetőséget.
Az Ügyfélkód hozzáadása párbeszédpanel a lap jobb oldalán jelenik meg. Ebben a párbeszédpanelen:
Leírás → Adja meg az Aktuális értéket.
Lejár → Válasszon egy 24 hónapos értéket.
Válassza a Hozzáadás lehetőséget a titkos kód hozzáadásához.
A Tanúsítványok > titkos kódok lapon megjelenik az ügyfél titkos kódjának értéke.
Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mivel egy későbbi lépésben szüksége lesz rá.
FONTOS: Ez az egyetlen alkalom, amikor megjelenik ez az érték. A lap elhagyása vagy frissítése után nem fogja tudni újra látni ezt az értéket. Hozzáadhat egy további ügyfélkulcsot anélkül, hogy érvénytelenítenék ezt az ügyféltitkot, de ez az érték többé nem jelenik meg.
Az Azure CLI-parancsok futtathatók az Azure Cloud Shellben vagy egy munkaállomáson, amelyen telepítve van az Azure CLI.
Először az az ad sp create-for-rbac paranccsal hozzon létre egy új szolgáltatásnevet az alkalmazáshoz. Ezzel egyidejűleg létre fogja hozni az alkalmazás regisztrációját is.
az ad sp create-for-rbac \
--name {service-principal-name}
Másolja ezt a kimenetet egy szövegszerkesztő ideiglenes fájljába, mivel egy későbbi lépésben szüksége lesz ezekre az értékekre. Ez az egyetlen hely, ahol a szolgáltatásnév ügyféltitkát (jelszavát) láthatja. Később azonban hozzáadhat egy új jelszót anélkül, hogy érvénytelenítenék a szolgáltatásnevet vagy a meglévő jelszavakat, ha szükséges.
2 – Microsoft Entra-csoport létrehozása helyi fejlesztéshez
Mivel egy alkalmazáson általában több fejlesztő dolgozik, javasoljuk, hogy 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, nem pedig az egyes szolgáltatásnév-objektumokhoz rendeli hozzá a szerepköröket. Ez a megközelítés a következő előnyöket kínálja:
Minden fejlesztőnek ugyanazok a szerepkörök lesznek hozzárendelve, mivel a szerepkörök csoportszinten vannak hozzárendelve.
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.
Lépjen a Microsoft Entra ID lapjára az Azure Portalon, és írja be a Microsoft Entra-azonosítót a lap tetején található keresőmezőbe. Válassza a Microsoft Entra-azonosítót a Szolgáltatások szakaszban.
A Microsoft Entra ID lapján válassza a Csoportok lehetőséget a bal oldali menüben.
A Minden csoport lapon válassza az Új csoportot.
Az Új csoport lapon:
Csoporttípus → Security
A csoport neve → A biztonsági csoport neve, amely általában az alkalmazás nevéből jön létre. Hasznos lehet egy olyan sztringet is befoglalni a csoport nevében, mint a local-dev , hogy jelezze a csoport célját.
A csoport leírása → A csoport céljának leírása.
A Tagok csoportban válassza a Nem kijelölt tagok hivatkozást, ha tagokat szeretne hozzáadni a csoporthoz.
A Tagok hozzáadása párbeszédpanelen:
A keresőmezővel szűrheti a lista egyszerű neveit.
Válassza ki az alkalmazás helyi fejlesztéséhez szükséges alkalmazásszolgáltatás-tagokat. A kijelölt objektumok szürkén jelennek meg, és a párbeszédpanel alján található Kijelölt elemek listára kerülnek.
Ha végzett, válassza a Kiválasztás gombot.
Az Új csoport lapon válassza a Létrehozás lehetőséget a csoport létrehozásához.
A rendszer létrehozza a csoportot, és visszavesz a Minden csoport lapra. A csoport megjelenése akár 30 másodpercet is igénybe vehet. Előfordulhat, hogy frissítenie kell a lapot az Azure Portal gyorsítótárazása miatt.
Az az ad group create paranccsal csoportokat hozhat létre a Microsoft Entra ID-ban. A --display-name és a --mail-nickname paraméterek kötelezőek. A csoportnak adott névnek az alkalmazás nevére kell épülnie. Az is hasznos, ha a csoport nevében szerepel egy "local-dev" kifejezés, amely jelzi a csoport célját.
az ad group create \
--display-name MyDisplay \
--mail-nickname MyDisplay \
--description {group-description}
Ha tagokat szeretne hozzáadni a csoporthoz, szüksége van az alkalmazás-szolgáltatásnév objektumazonosítójára, amely eltér az alkalmazásazonosítótól. Az az ad sp list paranccsal listázhatja az elérhető szolgáltatásnevek listáját. A --filter paraméterparancs elfogadja az OData-stílusú szűrőket, és a lista szűrésére használható az ábrán látható módon. A --query paraméter csak a fontos oszlopokra korlátozza az oszlopokat.
az ad sp list \
--filter "startswith(displayName, 'msdocs')" \
--query "[].{objectId:objectId, displayName:displayName}" \
--output table
az ad group member add \
--group {group-name} \
--member-id {object-id}
3 – Szerepkörök hozzárendelése az alkalmazáshoz
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 az alkalmazáshoz. Ebben a példában a szerepkörök a 2. lépésben létrehozott Microsoft Entra-csoporthoz lesznek hozzárendelve. A csoportok szerepkört rendelhetnek egy erőforráshoz, erőforráscsoporthoz vagy előfizetési hatókörhöz. 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.
Keresse meg az alkalmazás erőforráscsoportját az erőforráscsoport nevére az Azure Portal tetején található keresőmező használatával. Lépjen az erőforráscsoportra a párbeszédpanel Erőforráscsoportok fejléce alatt található erőforráscsoport nevére kattintva.
Az erőforráscsoport oldalán válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.
A Hozzáférés-vezérlés (IAM) lapon:
Válassza a Szerepkiosztások lapot.
Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.
A Szerepkör-hozzárendelés hozzáadása lap felsorolja az erőforráscsoporthoz hozzárendelhető összes szerepkört.
A keresőmezővel kezelhetőbb méretre szűrheti a listát. Ez a példa bemutatja, hogyan szűrhet a Storage Blob-szerepkörökre.
Válassza ki a hozzárendelni kívánt szerepkört.
A Tovább gombra kattintva lépjen a következő képernyőre.
A következő Szerepkör-hozzárendelés hozzáadása lapon megadhatja, hogy melyik felhasználóhoz rendelje hozzá a szerepkört.
Válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget a Hozzáférés hozzárendelése területen.
Válassza a + Tagok kijelölése lehetőséget.
Megnyílik egy párbeszédpanel az Azure Portal jobb oldalán.
A Tagok kiválasztása párbeszédpanelen:
A Kijelölés szövegmezővel szűrheti az előfizetésben lévő felhasználók és csoportok listáját. Szükség esetén írja be az alkalmazáshoz létrehozott helyi fejlesztési Microsoft Entra-csoport első néhány karakterét.
Válassza ki az alkalmazáshoz társított helyi fejlesztési Microsoft Entra-csoportot.
A folytatáshoz válassza a Párbeszédpanel alján található Kijelölés lehetőséget.
A Microsoft Entra csoport a Szerepkör-hozzárendelés hozzáadása képernyőn kiválasztott módon jelenik meg. A folyamat befejezéséhez válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a Véleményezés + hozzárendelés lehetőséget.
Az alkalmazásszolgáltatás-tag szerepkört rendel az Azure-hoz az az role assignment create paranccsal:
az role assignment create --assignee "{appId}" \
--role "{roleName}" \
--resource-group "{resourceGroupName}"
A szolgáltatásnévhez hozzárendelhető szerepkörnevek lekéréséhez használja az az role definition list parancsot:
az role definition list \
--query "sort_by([].{roleName:roleName, description:description}, &roleName)" \
--output table
Ha például engedélyezni szeretné, hogy az alkalmazásszolgáltatásnév olvasási, írási és törlési hozzáféréssel appId00000000-0000-0000-0000-000000000000 rendelkezik az Azure Storage-blobtárolókhoz és -adatokhoz az msdocs-dotnet-sdk-auth-example erőforráscsoport összes tárfiókjában, rendelje hozzá az alkalmazásszolgáltatásnevet a Storage Blob Data Közreműködő szerepkörhöz az alábbi paranccsal:
az role assignment create --assignee "00000000-0000-0000-0000-000000000000" \
--role "Storage Blob Data Contributor" \
--resource-group "msdocs-dotnet-sdk-auth-example"
Az engedélyek erőforrás- vagy előfizetési szinten az Azure CLI használatával történő hozzárendeléséről további információt az Azure-szerepkörök hozzárendelése az Azure CLI használatával című témakörben talál.
4 – Alkalmazáskörnyezet változóinak beállítása
Futásidőben DefaultAzureCredential megkeresi a szolgáltatásnév adatait a környezeti változók gyűjteményében. 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 a szolgáltatásnév használatakor:
AZURE_CLIENT_ID → Az alkalmazásazonosító értéke.
AZURE_TENANT_ID → a bérlőazonosító értékét.
AZURE_CLIENT_SECRET → Az alkalmazáshoz létrehozott jelszó/hitelesítő adatok.
Ha helyileg dolgozik a Visual Studióval, a környezeti változók a launchsettings.json projekt mappájában lévő fájlban Properties állíthatók be. Az alkalmazás indításakor ezek az értékek automatikusan be lesznek állítva. Ne feledje, hogy ezek a konfigurációk nem járnak az alkalmazással az üzembe helyezéskor, ezért környezeti változókat kell beállítania a célüzemeltetési környezetben.
Ha helyileg dolgozik a Visual Studio Code-ban, a környezeti változók a launch.json projekt fájljában állíthatók be. Az alkalmazás indításakor ezek az értékek automatikusan be lesznek állítva. Ne feledje, hogy ezek a konfigurációk nem járnak az alkalmazással az üzembe helyezéskor, ezért környezeti változókat kell beállítania a célüzemeltetési környezetben.
A windowsos környezeti változókat a parancssorból állíthatja be. Ha azonban ezt a módszert használja, az értékek elérhetők az adott operációs rendszeren futó összes alkalmazás számára, és ütközéseket okozhat, ha nem körültekintő. A környezeti változók felhasználói vagy rendszerszinten állíthatók be.
# Set user environment variables
setx ASPNETCORE_ENVIRONMENT "Development"
setx AZURE_CLIENT_ID "00000000-0000-0000-0000-000000000000"
setx AZURE_TENANT_ID "11111111-1111-1111-1111-111111111111"
setx AZURE_CLIENT_SECRET "=abcdefghijklmnopqrstuvwxyz"
# Set system environment variables - requires running as admin
setx ASPNETCORE_ENVIRONMENT "Development"
setx AZURE_CLIENT_ID "00000000-0000-0000-0000-000000000000" /m
setx AZURE_TENANT_ID "11111111-1111-1111-1111-111111111111" /m
setx AZURE_CLIENT_SECRET "=abcdefghijklmnopqrstuvwxyz" /m
A PowerShell a környezeti változók felhasználói vagy gépi szintű beállítására is használható:
# Set user environment variables
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development", "User")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000", "User")
[Environment]::SetEnvironmentVariable("AZURE_TENANT_ID", "11111111-1111-1111-1111-111111111111", "User")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_SECRET", "=abcdefghijklmnopqrstuvwxyz", "User")
# Set system environment variables - requires running as admin
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development", "Machine")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000", "Machine")
[Environment]::SetEnvironmentVariable("AZURE_TENANT_ID", "11111111-1111-1111-1111-111111111111", "Machine")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_SECRET", "=abcdefghijklmnopqrstuvwxyz", "Machine")
5 – DefaultAzureCredential implementálása az alkalmazásban
A DefaultAzureCredential a Microsoft Entra-nak való hitelesítéshez szükséges, véleményezett, rendezett folyamat. Minden hitelesítési mechanizmus a TokenCredential osztályból származó osztály, amelyet hitelesítő adatnak neveznek. 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.
A hitelesítő adatokat kereső sorrend és helyek DefaultAzureCredential a DefaultAzureCredential helyen találhatók.
Kattintson a jobb gombbal a projektre a Visual Studio Megoldáskezelő ablakában, és válassza a NuGet-csomagok kezelése lehetőséget. Keressen rá az Azure.Identity-ra, és telepítse a megfelelő csomagot. Ismételje meg ezt a folyamatot a Microsoft.Extensions.Azure-csomag esetében.
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, hogy függőséginjektálással elérhetők legyenek az alkalmazáson belül. Ebben Program.csa lépésben hajtsa végre az alábbi lépéseket egy ügyfélosztály regisztrálásához, és DefaultAzureCredentialtegye a következőket:
Adja meg az irányelvekkel a névtereket és Microsoft.Extensions.Azure a Azure.Identity névtereketusing.
Regisztrálja az Azure-szolgáltatásügyfélt a megfelelő Addelőtagú bővítménymetódus használatával.
Adjon át egy példányt DefaultAzureCredential a UseCredential metódusnak.
Példa:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Alternatív megoldás a UseCredential közvetlen példányosítás DefaultAzureCredential :
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
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 a Visual Studióban) keresi a fejlesztői hitelesítő adatok készletét. 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 más Azure-erőforrásokon is hitelesítheti az alkalmazást. DefaultAzureCredential lekérheti a környezeti beállításokat és a felügyelt identitáskonfigurációkat a többi szolgáltatás automatikus hitelesítéséhez.
Dolgozzon együtt velünk a GitHubon
A tartalom forrása a GitHubon található, ahol létrehozhat és áttekinthet problémákat és lekéréses kérelmeket is. További információért tekintse meg a közreműködői útmutatónkat.