Microsoft Entra-azonosító beállítása ügyfél-hitelesítéshez
Figyelmeztetés
Jelenleg a Microsoft Entra-ügyfélhitelesítés és a felügyelt identitásjogkivonat-szolgáltatás kölcsönösen nem kompatibilis Linux rendszeren.
Az Azure-ban futó fürtök esetében a Microsoft Entra ID használata ajánlott a felügyeleti végpontokhoz való hozzáférés biztonságossá tételéhez. Ez a cikk bemutatja, hogyan állíthatja be a Microsoft Entra-azonosítót egy Service Fabric-fürt ügyfeleinek hitelesítéséhez.
Linuxon a fürt létrehozása előtt el kell végeznie a következő lépéseket. Windows rendszeren is konfigurálhatja a Microsoft Entra-hitelesítést egy meglévő fürthöz.
Ebben a cikkben az "alkalmazás" kifejezés a Microsoft Entra-alkalmazásokra vonatkozik, nem a Service Fabric-alkalmazásokra; a különbséget szükség esetén meg kell tenni. A Microsoft Entra ID lehetővé teszi, hogy a szervezetek (más néven bérlők) felügyelhessék az alkalmazásokhoz való felhasználói hozzáférést.
A Service Fabric-fürtök számos belépési pontot kínálnak a felügyeleti funkciókhoz, köztük a webalapú Service Fabric Explorert és a Visual Studiót. Ennek eredményeképpen két Microsoft Entra-alkalmazást fog létrehozni a fürthöz való hozzáférés szabályozásához: egy webalkalmazást és egy natív alkalmazást. Az alkalmazások létrehozása után felhasználókat rendel hozzá írásvédett és rendszergazdai szerepkörökhöz.
Feljegyzés
A Service Fabric jelenleg nem támogatja a Microsoft Entra-hitelesítést a tároláshoz.
Feljegyzés
Ismert probléma, hogy a Linux Microsoft Entra ID-kompatibilis fürtökön lévő alkalmazások és csomópontok nem tekinthetők meg az Azure Portalon.
Feljegyzés
A Microsoft Entra-azonosítóhoz mostantól egy alkalmazásregisztrációs közzétevő tartományt kell ellenőrizni vagy alapértelmezett sémát használni. További információkért tekintse meg az alkalmazás közzétevői tartományának és AppId Uri-jának konfigurálását az egybérlős alkalmazásokban.
Feljegyzés
A Service Fabric 11.0-tól kezdődően a Service Fabric Explorer egyoldalas alkalmazás átirányítási URI-ját igényli webes átirányítási URI helyett.
Előfeltételek
Ebben a cikkben feltételezzük, hogy már létrehozott egy bérlőt. Ha még nem tette meg, először olvassa el a Microsoft Entra-bérlő beszerzésének módját. A Microsoft Entra ID Service Fabric-fürttel való konfigurálásának néhány lépésének egyszerűsítése érdekében windowsos PowerShell-szkripteket hoztunk létre. Egyes műveletek rendszergazdai szintű hozzáférést igényelnek a Microsoft Entra-azonosítóhoz. Ha a szkript 401 vagy 403 "Authorization_RequestDenied" hibát tapasztal, a rendszergazdának szkriptet kell végrehajtania.
- Hitelesítés Azure-rendszergazdai engedélyekkel.
- Klónozza az adattárat a számítógépre.
- Győződjön meg arról, hogy a szkriptek minden előfeltétele telepítve van.
Microsoft Entra-alkalmazások létrehozása és felhasználók hozzárendelése szerepkörökhöz
A szkriptekkel két Microsoft Entra-alkalmazást hozunk létre a fürthöz való hozzáférés szabályozásához: egy webalkalmazást és egy natív alkalmazást. Miután létrehozta a fürtöt képviselő alkalmazásokat, felhasználókat fog létrehozni a Service Fabric által támogatott szerepkörökhöz: írásvédett és rendszergazda.
SetupApplications.ps1
Futtassa SetupApplications.ps1
és adja meg paraméterként a bérlőazonosítót, a fürt nevét, a webalkalmazás URI-címét és a webalkalmazás válasz URL-címét. Az -remove használatával eltávolíthatja az alkalmazásregisztrációkat. A -logFile <log file path>
használata átiratnaplót hoz létre. További információt a szkript súgójában (help .\setupApplications.ps1 -full) talál. A szkript létrehozza a web- és natív alkalmazásokat, hogy a Service Fabric-fürtöt képviselje. A két új alkalmazásregisztrációs bejegyzés formátuma a következő:
- ClusterName_Cluster
- ClusterName_Client
Feljegyzés
A nemzeti felhők (például az Azure Government, a 21Vianet által üzemeltetett Microsoft Azure) esetében is meg kell adnia a paramétert -Location
.
Paraméterek
tenantId: A TenantId a PowerShell parancs
Get-AzureSubscription
futtatásával található. A parancs végrehajtása minden előfizetéshez megjeleníti a TenantId azonosítót.clusterName:ClusterName a szkript által létrehozott Microsoft Entra-alkalmazások előtagja. Nem kell pontosan megegyeznie a tényleges fürt nevével. Csak a Microsoft Entra-összetevők leképezésének megkönnyítése a Használt Service Fabric-fürthöz.
A SpaApplicationReplyUrl:SpaApplicationReplyUrl az alapértelmezett végpont, amelyet a Microsoft Entra ID visszaad a felhasználóknak a bejelentkezés befejezése után. Állítsa be ezt a végpontot Service Fabric Explorer-végpontként a fürthöz. Ha Microsoft Entra-alkalmazásokat hoz létre egy meglévő fürt megjelenítéséhez, győződjön meg arról, hogy ez az URL-cím megegyezik a meglévő fürt végpontjával. Ha új fürthöz hoz létre alkalmazásokat, tervezze meg a fürt végpontját, és ne használja a meglévő fürt végpontját. Alapértelmezés szerint a Service Fabric Explorer végpontja a következő:
https://<cluster_domain>:19080/Explorer/index.html
webApplicationUri:A WebApplicationUri egy "ellenőrzött tartomány" vagy URI URI-ja, amely API://{{tenant Id}}/{{cluster name}} API-sémaformátumot használ. További információkért lásd : AppId Uri az egybérlős alkalmazásokban alapértelmezett séma vagy ellenőrzött tartományok használata szükséges.
Példa API-séma: API://0e3d2646-78b3-4711-b8be-74a381d9890c/mysftestcluster
SetupApplications.ps1 példa
# if using cloud shell
# cd clouddrive
# git clone https://github.com/Azure-Samples/service-fabric-aad-helpers
# cd service-fabric-aad-helpers
# code .
$tenantId = '0e3d2646-78b3-4711-b8be-74a381d9890c'
$clusterName = 'mysftestcluster'
$spaApplicationReplyUrl = 'https://mysftestcluster.eastus.cloudapp.azure.com:19080/Explorer/index.html' # <--- client browser redirect url
#$webApplicationUri = 'https://mysftestcluster.contoso.com' # <--- must be verified domain due to AAD changes
$webApplicationUri = "API://$tenantId/$clusterName" # <--- doesn't have to be verified domain
$configObj = .\SetupApplications.ps1 -TenantId $tenantId `
-ClusterName $clusterName `
-SpaApplicationReplyUrl $spaApplicationReplyUrl `
-AddResourceAccess `
-WebApplicationUri $webApplicationUri `
-Verbose
A szkript $configObj változót ad ki a későbbi parancsokhoz, és kinyomtatja az Azure Resource Manager-sablon által igényelt JSON-t. Másolja ki a JSON-kimenetet, és használja meglévő fürt létrehozásakor vagy módosításakor, és hozza létre a Microsoft Entra ID-kompatibilis fürtöt.
SetupApplications.ps1 példakimenet
Name Value
---- -----
WebAppId f263fd84-ec9e-44c0-a419-673b1b9fd345
TenantId 0e3d2646-78b3-4711-b8be-74a381d9890c
ServicePrincipalId 3d10f55b-1876-4a62-87db-189bfc54a9f2
NativeClientAppId b22cc0e2-7c4e-480c-89f5-25f768ecb439
-----ARM template-----
"azureActiveDirectory": {
"tenantId":"0e3d2646-78b3-4711-b8be-74a381d9890c",
"clusterApplication":"f263fd84-ec9e-44c0-a419-673b1b9fd345",
"clientApplication":"b22cc0e2-7c4e-480c-89f5-25f768ecb439"
},
azureActiveDirectory parameters object JSON
"azureActiveDirectory": {
"tenantId":"<guid>",
"clusterApplication":"<guid>",
"clientApplication":"<guid>"
},
SetupUser.ps1
A SetupUser.ps1 használatával felhasználói fiókokat adhat hozzá az újonnan létrehozott alkalmazásregisztrációhoz $configObj fentről származó kimeneti változó használatával. Adja meg az alkalmazásregisztrációval konfigurálni kívánt felhasználói fiók felhasználónevét, és adja meg az "is Rendszergazda" értéket a rendszergazdai engedélyekhez. Ha a felhasználói fiók új, adja meg az új felhasználó ideiglenes jelszavát is. A jelszót az első bejelentkezéskor módosítani kell. Az "-remove" használata esetén nem csak az alkalmazásregisztrációt, hanem a felhasználói fiókot is eltávolítja.
SetupUser.ps1 felhasználó (olvasás) példa
.\SetupUser.ps1 -ConfigObj $configobj `
-UserName 'TestUser' `
-Password 'P@ssword!123' `
-Verbose
SetupUser.ps1 rendszergazda (olvasási/írási) példa
.\SetupUser.ps1 -ConfigObj $configobj `
-UserName 'TestAdmin' `
-Password 'P@ssword!123' `
-IsAdmin `
-Verbose
SetupClusterResource.ps1
A SetupClusterResource.ps1 opcionálisan használható meglévő fürterőforrás ARM-sablonjának exportálására, az "azureActiveDirectory" konfiguráció hozzáadására és módosítására, valamint a sablon ismételt üzembe helyezésére. A "-Whatif" használatával csak sablonokat exportálhat és módosíthat, de nem helyezheti üzembe újra a konfiguráció módosítását. Ehhez a szkripthez szükség van az Azure "Az" moduljára és a fürt erőforráscsoportjának nevére.
SetupClusterResource.ps1 –whatIf példa
# requires azure module 'az'
# install-module az
$resourceGroupName = 'mysftestcluster'
.\SetupClusterResource.ps1 -configObj $configObj `
-resourceGroupName $resourceGroupName `
-WhatIf
Miután a sablont ellenőrizték, és készen áll a feldolgozásra, futtassa újra a szkriptet a "-WhatIf" nélkül, vagy használja a "New-AzResourceGroupDeployment" PowerShell-parancsmagot a sablon üzembe helyezéséhez.
SetupClusterResource.ps1 példa
$resourceGroupName = 'mysftestcluster'
.\SetupClusterResource.ps1 -configObj $configObj `
-resourceGroupName $resourceGroupName
Feljegyzés
Frissítse a fürtkiépítési ARM-sablonokat vagy -szkripteket a Microsoft Entra új fürterőforrás-konfigurációs módosításaival.
Rendszergazdai hozzájárulás megadása
Előfordulhat, hogy rendszergazdai hozzájárulást kell adnia a konfigurált API-engedélyekhez. Lépjen Azure-alkalmazás regisztráció panelre, és adja hozzá a fürt nevét a szűrőhöz. Mindkét regisztráció esetében nyissa meg az "API-engedélyeket", és ha elérhető, válassza a "Rendszergazdai hozzájárulás megadása" lehetőséget.
A Microsoft Entra konfigurációjának ellenőrzése
Lépjen a Service Fabric Explorer (SFX) URL-címére. Ennek meg kell egyeznie a spaApplicationReplyUrl paraméterével. Meg kell jelennie egy Azure-hitelesítési párbeszédpanelnek. Jelentkezzen be az új Microsoft Entra-konfigurációval konfigurált fiókkal. Ellenőrizze, hogy a rendszergazdai fiók rendelkezik-e olvasási/írási hozzáféréssel, és hogy a felhasználó rendelkezik-e olvasási hozzáféréssel. A fürt bármely módosítása, például egy művelet végrehajtása rendszergazdai művelet.
Hibaelhárítási súgó a Microsoft Entra-azonosító beállításához
A Microsoft Entra-azonosító beállítása és használata kihívást jelenthet, ezért az alábbiakban bemutatjuk, hogy mit tehet a probléma hibakereséséhez. A PowerShell-átirat-naplózás a "SetupApplications.ps1" és a "SetupUser.ps1" szkriptek "-logFile" argumentumával engedélyezhető a kimenet áttekintéséhez.
Feljegyzés
Az Identitásplatformok (ADAL-ról MSAL-ra) áttelepítése, az AzureRM elavulása az Azure AZ javára, valamint a PowerShell több verziójának támogatása esetén előfordulhat, hogy a függőségek nem mindig helyesek vagy naprakészek, és hibákat okoznak a szkriptek végrehajtásában. A PowerShell-parancsok és szkriptek Azure Cloud Shellből való futtatása csökkenti a munkamenet automatikus hitelesítésével és felügyelt identitásával kapcsolatos hibák lehetőségét.
Request_BadRequest
Probléma
Nem érvényes hivatkozási frissítés. Http-állapotkód: 400.
VERBOSE: POST with 157-byte payload
VERBOSE: received -byte response of content type application/json
>> TerminatingError(Invoke-WebRequest): "{"error":{"code":"Request_BadRequest","message":"Not a valid reference update.","innerError":{"date":"2022-09-11T22:17:16","request-id":"61fadb2a-478b-4483-8f23-d17e13732104","client-request-id":"61fadb2a-478b-4483-8f23-d17e13732104"}}}"
confirm-graphApiRetry returning:True
VERBOSE: invoke-graphApiCall status: 400
exception:
Response status code doesn't indicate success: 400 (Bad Request).
Invoke-WebRequest: /home/<user>/clouddrive/service-fabric-aad-helpers/Common.ps1:239
Line |
239 | … $result = Invoke-WebRequest $uri -Method $method -Headers $headers …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| {"error":{"code":"Request_BadRequest","message":"Not a valid reference update.","innerError":{"date":"2022-09-11T22:17:16","request-id":"61fadb2a-478b-4483-8f23-d17e13732104","client-request-id":"61fadb2a-478b-4483-8f23-d17e13732104"}}}
at invoke-graphApiCall, /home/<user>/clouddrive/service-fabric-aad-helpers/Common.ps1: line 239
at invoke-graphApi, /home/<user>/clouddrive/service-fabric-aad-helpers/Common.ps1: line 275
at add-roleAssignment, /home/<user>/clouddrive/service-fabric-aad-helpers/SetupUser.ps1: line 193
at add-user, /home/<user>/clouddrive/service-fabric-aad-helpers/SetupUser.ps1: line 244
at enable-AADUser, /home/<user>/clouddrive/service-fabric-aad-helpers/SetupUser.ps1: line 178
at main, /home/<user>/clouddrive/service-fabric-aad-helpers/SetupUser.ps1: line 136
at <ScriptBlock>, /home/<user>/clouddrive/service-fabric-aad-helpers/SetupUser.ps1: line 378
at <ScriptBlock>, /home/<user>/clouddrive/aad-test.ps1: line 43
at <ScriptBlock>, <No file>: line 1
WARNING: invoke-graphApiCall response status: 400
invoke-graphApi count:0 statuscode:400 -uri https://graph.microsoft.com/v1.0/0e3d2646-78b3-4711-b8be-74a381d9890c/servicePrincipals/3d10f55b-1876-4a62-87db-189bfc54a9f2/appRoleAssignedTo -headers System.Collections.Hashtable -body System.Collections.Hashtable -method post
confirm-graphApiRetry returning:True
Ok
A konfigurációs módosítások nem propagáltak. A szkriptek újrapróbálkoznak bizonyos kéréseken a 400- és 404-es HTTP-állapotkóddal.
Megoldás
A szkriptek újrapróbálkoznak bizonyos kéréseken a 400- és 404-ös HTTP-állapotkóddal, és a megadott "-timeoutMin" értéket adják meg, ami alapértelmezés szerint 5 perc. A szkript szükség szerint újra végrehajtható.
A Service Fabric Explorer megkéri, hogy válasszon ki egy tanúsítványt
Probléma
Miután sikeresen bejelentkezett a Microsoft Entra-azonosítóba a Service Fabric Explorerben, a böngésző visszatér a kezdőlapra, de egy üzenet kéri, hogy válasszon ki egy tanúsítványt.
Ok
A felhasználóhoz nincs hozzárendelve szerepkör a Microsoft Entra ID-fürtalkalmazásban. Így a Microsoft Entra-hitelesítés sikertelen a Service Fabric-fürtön. A Service Fabric Explorer visszatér a tanúsítványhitelesítéshez.
Megoldás
Kövesse a Microsoft Entra-azonosító beállításához és a felhasználói szerepkörök hozzárendeléséhez szükséges utasításokat. Azt is javasoljuk, hogy kapcsolja be a "Felhasználói hozzárendelés szükséges az alkalmazás eléréséhez" beállítást, ahogy SetupApplications.ps1
azt is.
Csatlakozás PowerShell-lel való használata a következő hibaüzenettel meghiúsul: "A megadott hitelesítő adatok érvénytelenek"
Probléma
Ha a PowerShell használatával csatlakozik a fürthöz az "AzureActiveDirectory" biztonsági móddal, miután sikeresen bejelentkezett a Microsoft Entra ID azonosítóba, a kapcsolat a következő hibaüzenettel meghiúsul: "A megadott hitelesítő adatok érvénytelenek."
Megoldás
Ez a megoldás megegyezik az előző megoldással.
A Service Fabric Explorer hibát ad vissza, amikor bejelentkezik: "AADSTS50011"
Probléma
Amikor megpróbál bejelentkezni a Microsoft Entra-azonosítóba a Service Fabric Explorerben, a lap hibát ad vissza: "AADSTS50011: A válaszcím URL-címe><nem egyezik az alkalmazáshoz konfigurált válaszcímekkel: <guid>."
Ok
A Service Fabric Explorert képviselő fürtalkalmazás (webalkalmazás) a Microsoft Entra-azonosítóval próbál hitelesítést végezni, és a kérés részeként megadja az átirányítás visszatérési URL-címét. Az URL-cím azonban nem szerepel a Microsoft Entra alkalmazás VÁLASZ URL-listájában .
Megoldás
A fürt Microsoft Entra alkalmazásregisztrációs lapján válassza a Hitelesítés lehetőséget, majd az Átirányítási URI-k szakaszban adja hozzá a Service Fabric Explorer URL-címét a listához. Mentse a módosítást.
Csatlakozás Microsoft Entra-hitelesítéssel a PowerShell-lel való bejelentkezéskor a következő hibaüzenet jelenik meg: "AADSTS50011"
Probléma
Amikor a Microsoft Entra ID használatával próbál csatlakozni egy Service Fabric-fürthöz a PowerShellen keresztül, a bejelentkezési oldal egy hibát ad vissza: "AADSTS50011: A kérelemben megadott válasz URL-cím nem egyezik az alkalmazáshoz konfigurált válasz URL-címekkel: <guid>."
Ok
Az előző problémához hasonlóan a PowerShell a Microsoft Entra-azonosítóval próbál hitelesítést végezni, amely egy átirányítási URL-címet biztosít, amely nem szerepel a Microsoft Entra alkalmazás válasz URL-címeinek listájában.
Megoldás
Használja ugyanazt a folyamatot, mint az előző problémában, de az URL-címet a parancssori hitelesítés speciális átirányítására kell beállítani urn:ietf:wg:oauth:2.0:oob
.
A szkript végrehajtása engedélyezési hibát eredményez
Probléma
Előfordulhat, hogy a PowerShell-szkript nem hajtja végre a Microsoft Entra konfigurálásához szükséges összes REST-parancsot a "Authorization_RequestDenied", "A művelet elvégzéséhez nem megfelelő jogosultságok" hibával. Példahiba:
Invoke-WebRequest: /home/<user>/clouddrive/service-fabric-aad-helpers/Common.ps1:239
Line |
239 | … $result = Invoke-WebRequest $uri -Method $method -Headers $headers …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| {"error":{"code":"Authorization_RequestDenied","message":"Insufficient privileges to complete the
| operation.","innerError":{"date":"2022-08-29T14:46:37","request-id":"c4fd3acc-1558-4950-8028-68bb058f7bf0","client-request-id":"c4fd3acc-1558-4950-8028-68bb058f7bf0"}}}
...
invoke-graphApi count:0 statuscode:403 -uri https://graph.microsoft.com/v1.0/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2PermissionGrants -headers System.Collections.Hashtable -body System.Collections.Hashtable -method post
Write-Error: /home/<user>/clouddrive/service-fabric-aad-helpers/SetupApplications.ps1:364
Line |
364 | assert-notNull $result "aad app service principal oauth permissio …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| aad app service principal oauth permissions User.Read configuration failed
Write-Error: /home/<user>/clouddrive/service-fabric-aad-helpers/SetupApplications.ps1:656
Line |
656 | main
| ~~~~
| exception: exception: assertion failure: object: message:aad app service principal oauth permissions User.Read configuration failed Exception:
| /home/<user>/clouddrive/service-fabric-aad-helpers/Common.ps1:22 Line | 22 | throw "assertion failure: object:$obj message:$msg" |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | assertion failure: object: message:aad app service principal oauth permissions User.Read configuration failed
...
Ok
Ez a hiba akkor jelenik meg, ha a szkriptet végrehajtó felhasználói fiók nem rendelkezik a REST-hívás végrehajtásához szükséges engedélyekkel. Ez akkor fordulhat elő, ha a felhasználó nem rendelkezik Rendszergazda istrator/Manage/Write engedélyekkel a létrehozott vagy módosított objektumokhoz.
Megoldás
Az összes fennmaradó művelet végrehajtásához az Azure-bérlő vagy a Microsoft Entra-azonosító Rendszergazda istratorával dolgozhat. A megadott szkriptek idempotensek, így újra végrehajthatók a folyamat befejezéséhez.
A fürt Csatlakozás a Microsoft Entra-hitelesítéssel a PowerShell használatával
A Service Fabric-fürt csatlakoztatásához használja a következő PowerShell-parancsot:
Connect-ServiceFabricCluster -ConnectionEndpoint <endpoint> -KeepAliveIntervalInSec 10 -AzureActiveDirectory -ServerCertThumbprint <thumbprint>
További információ: Csatlakozás-ServiceFabricCluster parancsmag.
Újra felhasználhatom ugyanazt a Microsoft Entra-bérlőt több fürtben?
Igen. Ne feledje azonban hozzáadni a Service Fabric Explorer URL-címét a fürtalkalmazáshoz (webalkalmazáshoz). Ellenkező esetben a Service Fabric Explorer nem működik.
Miért van szükségem még kiszolgálói tanúsítványra, amíg a Microsoft Entra-azonosító engedélyezve van?
A FabricClient és a FabricGateway kölcsönös hitelesítést végez. A Microsoft Entra-hitelesítés során a Microsoft Entra-integráció egy ügyfélidentitást biztosít a kiszolgálónak, és a kiszolgálótanúsítványt az ügyfél használja a kiszolgáló identitásának ellenőrzésére. További információ a Service Fabric-tanúsítványokról: X.509-tanúsítványok és Service Fabric.
Következő lépések
A Microsoft Entra-alkalmazások beállítása és a felhasználók szerepköreinek beállítása után konfiguráljon és telepítsen egy fürtöt.