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


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.

  1. Hitelesítés Azure-rendszergazdai engedélyekkel.
  2. Klónozza az adattárat a számítógépre.
  3. 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-AzureSubscriptionfuttatá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.

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.

Screenshot that shows Grant admin consent selected on the Azure App registrations blade.

Screenshot that shows the Grant admin consent confirmation with Yes highlighted.

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.

Button to launch the Azure Cloud Shell.

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.

SFX certificate dialog

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>."

SFX reply address doesn't match

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.

Web application reply URL

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.