İstemci kimlik doğrulaması için Microsoft Entra Kimliğini ayarlama
Uyarı
Şu anda, Microsoft Entra istemci kimlik doğrulaması ve Yönetilen Kimlik Belirteci Hizmeti Linux üzerinde karşılıklı olarak uyumsuz.
Azure'da çalışan kümeler için yönetim uç noktalarına erişimin güvenliğini sağlamak için Microsoft Entra Id önerilir. Bu makalede, Service Fabric kümesi için istemcilerin kimliğini doğrulamak için Microsoft Entra Id'nin nasıl ayarlanacağı açıklanır.
Linux'ta, kümeyi oluşturmadan önce aşağıdaki adımları tamamlamanız gerekir. Windows'da, mevcut bir küme için Microsoft Entra kimlik doğrulamasını yapılandırma seçeneğiniz de vardır.
Bu makalede,"uygulama" terimi Service Fabric uygulamalarını değil Microsoft Entra uygulamalarını ifade eder; gerektiğinde ayrım yapılır. Microsoft Entra ID, kuruluşların (kiracı olarak bilinir) uygulamalara kullanıcı erişimini yönetmesini sağlar.
Service Fabric kümesi, web tabanlı Service Fabric Explorer ve Visual Studio dahil olmak üzere yönetim işlevselliğine çeşitli giriş noktaları sunar. Sonuç olarak, kümeye erişimi denetlemek için iki Microsoft Entra uygulaması oluşturacaksınız: bir web uygulaması ve bir yerel uygulama. Uygulamalar oluşturulduktan sonra kullanıcıları salt okunur ve yönetici rollerine atayacaksınız.
Not
Service Fabric şu anda depolama için Microsoft Entra kimlik doğrulamasını desteklemez.
Not
Linux Microsoft Entra ID özellikli kümelerdeki uygulamaların ve düğümlerin Azure Portal'da görüntülenememesi bilinen bir sorundur .
Not
Microsoft Entra Id artık bir uygulama (uygulama kaydı) yayımcı etki alanının doğrulanması veya varsayılan düzenin kullanılmasını gerektiriyor. Ek bilgi için bkz . Uygulamanın yayımcı etki alanını ve AppId Uri'sini tek kiracılı uygulamalarda yapılandırma varsayılan düzen veya doğrulanmış etki alanları gerektirir.
Not
Service Fabric 11.0'dan başlayarak Service Fabric Explorer, Web Yeniden Yönlendirme URI'si yerine tek sayfalı uygulama Yeniden Yönlendirme URI'sini gerektirir.
Önkoşullar
Bu makalede, zaten bir kiracı oluşturduğunuz varsayılır. Henüz yapmadıysanız, Microsoft Entra kiracısı alma makalesini okuyarak başlayın. Microsoft Entra ID'yi Service Fabric kümesiyle yapılandırmayla ilgili bazı adımları basitleştirmek için bir Windows PowerShell betikleri kümesi oluşturduk. Bazı eylemler, Microsoft Entra Kimliği'ne yönetici düzeyinde erişim gerektirir. Betik 401 veya 403 'Authorization_RequestDenied' hatasıyla karşılaşırsa, yöneticinin betiği yürütmesi gerekir.
- Azure yönetim izinleriyle kimlik doğrulaması.
- Depoyu bilgisayarınıza kopyalayın.
- Betikler için tüm önkoşulların yüklü olduğundan emin olun.
Microsoft Entra uygulamaları oluşturma ve kullanıcıları rollere atama
Betikleri kullanarak kümeye erişimi denetlemek için iki Microsoft Entra uygulaması oluşturacağız: bir web uygulaması ve bir yerel uygulama. Kümenizi temsil eden uygulamalar oluşturduktan sonra Service Fabric tarafından desteklenen roller için kullanıcılar oluşturacaksınız: salt okunur ve yönetici.
SetupApplications.ps1
Kiracı kimliğini, küme adını, web uygulaması URI'sini ve web uygulaması yanıt URL'sini çalıştırın SetupApplications.ps1
ve parametre olarak sağlayın. Uygulama kayıtlarını kaldırmak için -remove komutunu kullanın. -logFile <log file path>
kullanarak bir transkript günlüğü oluşturur. Ek bilgi için betik yardımına (help .\setupApplications.ps1 -full) bakın. Betik, Service Fabric kümenizi temsil etmek için web ve yerel uygulamalar oluşturur. İki yeni uygulama kaydı girdisi aşağıdaki biçimdedir:
- ClusterName_Cluster
- ClusterName_Client
Not
Ulusal bulutlar için (örneğin Azure Kamu, 21Vianet tarafından sağlanan Microsoft Azure) parametresini -Location
de belirtmeniz gerekir.
Parametreler
tenantId: TenantId değerini PowerShell komutunu
Get-AzureSubscription
yürüterek bulabilirsiniz. Bu komutu yürütürken her abonelik için TenantId değeri görüntülenir.clusterName: ClusterName , betik tarafından oluşturulan Microsoft Entra uygulamalarının ön ekini oluşturmak için kullanılır. Gerçek küme adıyla tam olarak eşleşmesi gerekmez. Yalnızca Microsoft Entra yapıtlarını birlikte kullanıldıkları Service Fabric kümesine eşlemeyi kolaylaştırmak için tasarlanmıştır.
SpaApplicationReplyUrl: SpaApplicationReplyUrl , Microsoft Entra ID'nin oturum açma işlemini tamamladıktan sonra kullanıcılarınıza döndürdüğü varsayılan uç noktadır. Bu uç noktayı kümeniz için Service Fabric Explorer uç noktası olarak ayarlayın. Mevcut bir kümeyi temsil etmek için Microsoft Entra uygulamaları oluşturuyorsanız, bu URL'nin mevcut kümenizin uç noktasıyla eşleştiğinden emin olun. Yeni bir küme için uygulama oluşturuyorsanız kümenizin uç noktasını planlayın ve mevcut kümenin uç noktasını kullanmadığınızdan emin olun. Varsayılan olarak Service Fabric Explorer uç noktası şöyledir:
https://<cluster_domain>:19080/Explorer/index.html
webApplicationUri: WebApplicationUri , API://{{tenant Id}}/{{cluster name}} API düzeni biçimini kullanan bir 'doğrulanmış etki alanının' URI'si veya URI'dir. Ek bilgi için bkz . Tek kiracılı uygulamalarda AppId Uri'sinin kullanılması için varsayılan düzen veya doğrulanmış etki alanları gerekir.
Örnek API düzeni: API://0e3d2646-78b3-4711-b8be-74a381d9890c/mysftestcluster
SetupApplications.ps1 örneği
# 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
Betik, sonraki komutlar için $configObj değişkenin çıktısını alır ve Azure Resource Manager şablonu için gereken JSON'yi yazdırır. JSON çıkışını kopyalayın ve mevcut kümeyi oluştururken veya değiştirirken microsoft Entra ID etkin kümenizi oluştururken kullanın.
SetupApplications.ps1 örnek çıktısı
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 nesnesi JSON
"azureActiveDirectory": {
"tenantId":"<guid>",
"clusterApplication":"<guid>",
"clientApplication":"<guid>"
},
SetupUser.ps1
SetupUser.ps1, yukarıdan $configObj çıkış değişkeni kullanılarak yeni oluşturulan uygulama kaydına kullanıcı hesapları eklemek için kullanılır. Uygulama kaydıyla yapılandırılacak kullanıcı hesabının kullanıcı adını belirtin ve yönetim izinleri için 'isAdmin' değerini belirtin. Kullanıcı hesabı yeniyse, yeni kullanıcı için de geçici parolayı girin. Parolanın ilk oturum açmada değiştirilmesi gerekir. '-remove' kullanırsanız, yalnızca uygulama kaydını değil kullanıcı hesabını da kaldırırsınız.
SetupUser.ps1 kullanıcı (okuma) örneği
.\SetupUser.ps1 -ConfigObj $configobj `
-UserName 'TestUser' `
-Password 'P@ssword!123' `
-Verbose
SetupUser.ps1 admin (okuma/yazma) örneği
.\SetupUser.ps1 -ConfigObj $configobj `
-UserName 'TestAdmin' `
-Password 'P@ssword!123' `
-IsAdmin `
-Verbose
SetupClusterResource.ps1
SetupClusterResource.ps1 isteğe bağlı olarak mevcut küme kaynağı ARM şablonunu dışarı aktarmak, 'azureActiveDirectory' yapılandırmasını eklemek/değiştirmek ve şablonu yeniden dağıtmak için kullanılabilir. '-Whatif' komutunu kullanarak yalnızca şablonu dışarı aktarın ve değiştirin, ancak yapılandırma değişikliğini yeniden dağıtmayın. Bu betik, Azure 'Az' modülünü ve küme kaynak grubunun adını gerektirir.
SetupClusterResource.ps1 -whatIf örneği
# requires azure module 'az'
# install-module az
$resourceGroupName = 'mysftestcluster'
.\SetupClusterResource.ps1 -configObj $configObj `
-resourceGroupName $resourceGroupName `
-WhatIf
Şablon doğrulanıp işlemeye hazır olduktan sonra betiği '-WhatIf' olmadan yeniden çalıştırın veya şablonu dağıtmak için 'New-AzResourceGroupDeployment' powershell komutunu kullanın.
SetupClusterResource.ps1 örneği
$resourceGroupName = 'mysftestcluster'
.\SetupClusterResource.ps1 -configObj $configObj `
-resourceGroupName $resourceGroupName
Not
Yeni küme kaynağı Microsoft Entra yapılandırma değişiklikleriyle küme sağlama ARM şablonlarını veya betiklerini güncelleştirin.
Yönetici onayı verme
Yapılandırılan 'API izinleri' için 'Yönetici onayı verme' gerekebilir. Azure Uygulaması kayıtları dikey penceresine gidin ve filtreye kümenin adını ekleyin. Her iki kayıt için de 'API izinleri'ni açın ve varsa 'Yönetici onayı ver' seçeneğini belirleyin.
Microsoft Entra Yapılandırmasını Doğrulama
Service Fabric Explorer (SFX) URL'sine gidin. Bu, spaApplicationReplyUrl parametresiyle aynı olmalıdır. Bir Azure kimlik doğrulaması iletişim kutusu görüntülenmelidir. Yeni Microsoft Entra yapılandırmasıyla yapılandırılmış bir hesapla oturum açın. Yönetici hesabının okuma/yazma erişimi olduğunu ve kullanıcının okuma erişimi olduğunu doğrulayın. Kümede yapılan herhangi bir değişiklik , örneğin bir eylem gerçekleştirmek, bir yönetim eylemidir.
Microsoft Entra Id'yi ayarlamayla ilgili sorun giderme yardımı
Microsoft Entra Id'yi ayarlamak ve kullanmak zor olabilir, bu nedenle sorunda hata ayıklamak için neler yapabileceğinize ilişkin bazı işaretçiler aşağıda verilmiştir. PowerShell transkript günlüğü, çıkışı gözden geçirmek için 'SetupApplications.ps1' ve 'SetupUser.ps1' betiklerinde '-logFile' bağımsız değişkeni kullanılarak etkinleştirilebilir.
Not
Kimlikler platformlarının (ADAL'dan MSAL'ye) geçirilmesi, Azure AZ'nin lehine AzureRM'nin kullanımdan kaldırılması ve PowerShell'in birden çok sürümünün desteklenmesiyle bağımlılıklar her zaman doğru veya güncel olmayabilir ve betik yürütmede hatalara neden olabilir. Azure Cloud Shell'den PowerShell komutlarını ve betiklerini çalıştırmak, oturum otomatik kimlik doğrulaması ve yönetilen kimlik ile ilgili hata olasılığını azaltır.
Request_BadRequest
Sorun
Geçerli bir başvuru güncelleştirmesi değil. Http durum kodu: 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
Nedeni
Yapılandırma değişiklikleri yayılmadı. Betikler, HTTP durum kodları 400 ve 404 olan belirli isteklerde yeniden dener.
Çözüm
Betikler, varsayılan olarak 5 dakika olan '-timeoutMin' sağlanana kadar HTTP durum kodları 400 ve 404 olan belirli isteklerde yeniden denenir. Betik gerektiğinde yeniden yürütülebilir.
Service Fabric Explorer bir sertifika seçmenizi ister
Sorun
Service Fabric Explorer'da Microsoft Entra Id'de başarıyla oturum açtıktan sonra tarayıcı giriş sayfasına döner, ancak bir ileti sertifika seçmenizi ister.
Nedeni
Kullanıcıya Microsoft Entra Id kümesi uygulamasında bir rol atanmamış. Bu nedenle, Microsoft Entra kimlik doğrulaması Service Fabric kümesinde başarısız olur. Service Fabric Explorer, sertifika kimlik doğrulamasına geri döner.
Çözüm
Microsoft Entra Id'yi ayarlama yönergelerini izleyin ve kullanıcı rolleri atayın. Ayrıca, "Uygulamaya erişmek için kullanıcı ataması gerekiyor" özelliğini de aynı şekilde SetupApplications.ps1
açmanızı öneririz.
PowerShell bağlantısı şu hatayla başarısız oluyor: "Belirtilen kimlik bilgileri geçersiz"
Sorun
"AzureActiveDirectory" güvenlik modunu kullanarak kümeye bağlanmak için PowerShell kullandığınızda, Microsoft Entra Id'de başarıyla oturum açtığınızda bağlantı şu hatayla başarısız olur: "Belirtilen kimlik bilgileri geçersiz."
Çözüm
Bu çözüm, önceki çözümle aynıdır.
Service Fabric Explorer oturum açtığınızda bir hata döndürür: "AADSTS50011"
Sorun
Service Fabric Explorer'da Microsoft Entra Kimliği'nde oturum açmaya çalıştığınızda, sayfa şu hatayı döndürür: "AADSTS50011: Yanıt adresi <URL'si> uygulama için yapılandırılan yanıt adresleriyle eşleşmiyor: <guid>."
Nedeni
Service Fabric Explorer'ı temsil eden küme (web) uygulaması Microsoft Entra Kimliği'ne göre kimlik doğrulaması yapmaya çalışır ve isteğin bir parçası olarak yeniden yönlendirme dönüş URL'sini sağlar. Ancak URL, Microsoft Entra uygulaması YANıT URL'si listesinde yer almıyor.
Çözüm
Kümenizin Microsoft Entra uygulama kaydı sayfasında Kimlik Doğrulaması'nı seçin ve Yeniden Yönlendirme URI'leri bölümünün altında Listeye Service Fabric Explorer URL'sini ekleyin. Değişikliğinizi kaydedin.
PowerShell aracılığıyla Microsoft Entra kimlik doğrulamasını kullanarak kümeye bağlanmak, oturum açtığınızda bir hata verir: "AADSTS50011"
Sorun
PowerShell aracılığıyla Microsoft Entra Id kullanarak bir Service Fabric kümesine bağlanmaya çalıştığınızda, oturum açma sayfası şu hatayı döndürür: "AADSTS50011: İstekte belirtilen yanıt URL'si, uygulama için yapılandırılan yanıt URL'leriyle eşleşmiyor: <guid>."
Nedeni
Önceki soruna benzer şekilde PowerShell, Microsoft Entra uygulaması Yanıt URL'leri listesinde listelenmeyen bir yeniden yönlendirme URL'si sağlayan Microsoft Entra Kimliği'nde kimlik doğrulaması yapmaya çalışır.
Çözüm
Önceki sorundakiyle aynı işlemi kullanın, ancak URL' nin komut satırı kimlik doğrulaması için özel bir yeniden yönlendirme olarak ayarlanması urn:ietf:wg:oauth:2.0:oob
gerekir.
Betiğin yürütülmesi Yetkilendirme hatasında hatayla sonuçlanır
Sorun
PowerShell betiği, Microsoft Entra yapılandırmasını tamamlamak için gereken tüm REST komutlarını "Authorization_RequestDenied","İşlemi tamamlamak için ayrıcalık yetersiz" hatasıyla gerçekleştiremeyebilir. Örnek hata:
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
...
Nedeni
Betiği yürüten kullanıcı hesabının REST çağrısını gerçekleştirme izinleri olmadığında bu hata döndürülür. Kullanıcının oluşturulan veya değiştirilen nesneler için Yönetici/Yönet/Yazma izinleri yoksa bu durum oluşabilir.
Çözüm
Kalan tüm eylemleri tamamlamak için Azure kiracısının yöneticisiyle veya Microsoft Entra Id ile çalışın. Sağlanan betikler bir kez etkili olduğundan işlemi tamamlamak için yeniden yürütülebilir.
PowerShell aracılığıyla Microsoft Entra kimlik doğrulamasını kullanarak kümeyi bağlama
Service Fabric kümesini bağlamak için aşağıdaki PowerShell komut örneğini kullanın:
Connect-ServiceFabricCluster -ConnectionEndpoint <endpoint> -KeepAliveIntervalInSec 10 -AzureActiveDirectory -ServerCertThumbprint <thumbprint>
Daha fazla bilgi edinmek için bkz . Connect-ServiceFabricCluster cmdlet'i.
Aynı Microsoft Entra kiracısını birden çok kümede yeniden kullanabilir miyim?
Evet. Ancak Service Fabric Explorer'ın URL'sini küme (web) uygulamanıza eklemeyi unutmayın. Aksi takdirde Service Fabric Explorer çalışmaz.
Microsoft Entra Id etkinken neden hala bir sunucu sertifikasına ihtiyacım var?
FabricClient ve FabricGateway karşılıklı kimlik doğrulaması gerçekleştirir. Microsoft Entra kimlik doğrulaması sırasında, Microsoft Entra tümleştirmesi sunucuya bir istemci kimliği sağlar ve sunucu sertifikası istemci tarafından sunucunun kimliğini doğrulamak için kullanılır. Service Fabric sertifikaları hakkında daha fazla bilgi için bkz . X.509 sertifikaları ve Service Fabric.
Sonraki adımlar
Microsoft Entra uygulamalarını ayarladıktan ve kullanıcılar için rolleri ayarladıktan sonra kümeyi yapılandırın ve dağıtın.