Bir uygulamayı dış kimlik sağlayıcısına güvenecek şekilde yapılandırma
Bu makalede, Microsoft Entra Id'de bir uygulamada federasyon kimliği kimlik bilgilerinin nasıl yönetileceğini açıklanmaktadır. Federasyon kimliği kimlik bilgileri, bir uygulama ile dış kimlik sağlayıcısı (IdP) arasında bir güven ilişkisi oluşturur.
Daha sonra, harici bir kimlik sağlayıcısından alınan belirteci Microsoft kimlik platformundan bir erişim belirteci ile değiştirmek için harici yazılım iş yükünü yapılandırabilirsiniz. Dış iş yükü, gizli bilgileri yönetmeye gerek kalmadan (desteklenen senaryolarda) Microsoft Entra korumalı kaynaklara erişebilir. Jeton değişimi iş akışı hakkında daha fazla bilgi edinmek için iş yükü kimlik federasyonuhakkında okuyun.
Bu makalede, Microsoft Entra Id'de bir uygulamada federasyon kimlik bilgilerini oluşturmayı, listelemeyi ve silmeyi öğreneceksiniz.
Önemli noktalar ve kısıtlamalar
Federasyon kimliği kimlik bilgilerini oluşturmak, güncelleştirmek veya silmek için, eylemi gerçekleştiren hesabın Uygulama Yöneticisi, Uygulama Geliştirici, Bulut Uygulama Yöneticisiveya Uygulama Sahibi rolü olmalıdır. Federasyon kimliği kimlik bilgilerini güncelleştirmek için microsoft.directory/applications/credentials/update izni
Bir uygulamaya veya kullanıcı tarafından atanan yönetilen kimliğe en fazla 20 federasyon kimliği kimlik bilgisi eklenebilir.
Federasyon kimliği kimlik bilgilerini yapılandırdığınızda, sağlamanız gereken birkaç önemli bilgi vardır:
veren ve konu güven ilişkisini ayarlamak için gereken önemli bilgi parçalarıdır.
issuer
vesubject
birleşimi uygulamada benzersiz olmalıdır. Dış yazılım iş yükü, Microsoft kimlik platformundan bir erişim belirteci için dış belirtecin değişimini istediğinde, federasyon kimlik bilgilerinin veren ve konu değerleri, dış belirteçte sağlananissuer
vesubject
taleplerine karşı denetlenir. Bu doğrulama denetimi geçerse, Microsoft kimlik platformu dış yazılım iş yüküne bir erişim belirteci oluşturur.veren, dış kimlik sağlayıcısının URL'sidir ve değiştirilmekte olan dış belirtecin
issuer
talebiyle eşleşmelidir. Gerekli.issuer
talebinin değerinin başında veya sonunda boşluk varsa, belirteç alışverişi engellenir. Bu alanın karakter sınırı 600 karakterdir.konu, dış yazılım iş yükünün tanımlayıcısıdır ve değiştirilmekte olan dış belirtecin
sub
(subject
) talebiyle eşleşmelidir. konu sabit bir biçime sahip değildir, çünkü her IdP kendi biçimini kullanır - bazen GUID, bazen iki nokta üst üste ile ayrılmış tanımlayıcı, bazen de rastgele dizeler. Bu alanın karakter sınırı 600 karakterdir.Önemli
konu ayar değerleri GitHub iş akışı yapılandırmasındaki yapılandırmayla tam olarak eşleşmelidir. Aksi takdirde, Microsoft kimlik platformu gelen dış belirteci arar ve erişim belirteci değişimini reddeder. Hata almazsınız, değişim hata olmadan başarısız olur.
Önemli
yanlış dış iş yükü bilgilerini yanlışlıkla konusuna eklerseniz federasyon kimliği kimlik bilgileri hatasız başarıyla oluşturulur. Belirteç değişimi başarısız olana kadar hata görünür olmaz.
hedef kitleleri dış belirteçte gösterilebilen hedef kitleleri listeler. Gerekli. 600 karakter sınırı olan tek bir hedef kitle değeri eklemeniz gerekir. Önerilen değer "api://AzureADTokenExchange"dir. Gelen belirteçteki
aud
talebinde Microsoft kimlik platformunun kabul etmesi gerekenleri belirtir.ad, federe kimlik bilgisinin benzersiz tanımlayıcısıdır. Gerekli. Bu alanın karakter sınırı 3 ile 120 arasında olmalıdır ve URL dostu olmalıdır. Alfasayısal, tire veya alt çizgi karakterleri desteklenir, ilk karakter yalnızca alfasayısal olmalıdır. Oluşturulduktan sonra değişmezdir.
açıklama, federasyon kimliği kimlik bilgilerinin kullanıcı tarafından sağlanan açıklamasıdır. Opsiyonel. Açıklama Microsoft Entra Id tarafından doğrulanmaz veya denetlenmiyor. Bu alanın sınırı 600 karakterdir.
Joker karakterler hiçbir birleşik kimlik doğrulama bilgisi özellik değerinde desteklenmez.
Desteklenen bölgeler, federasyon kimlik bilgileri güncelleştirmelerini yayma zamanı, desteklenen verenler ve daha fazlası hakkında daha fazla bilgi edinmek için federasyon kimlik bilgileri için önemli noktalar ve kısıtlamalar konusunu okuyun.
Önkoşullar
Microsoft Entra Id'de uygulama kayıt veya yönetilen kimlikoluşturun. Uygulamanıza dış yazılım iş yükünüz tarafından hedeflenen Azure kaynaklarına erişim izni verin. - Aşağıdaki adımlarda ihtiyacınız olan uygulamanın nesne kimliğini (uygulama (istemci) kimliği değil) bulun. Uygulamanın nesne kimliğini Microsoft Entra yönetim merkezindebulabilirsiniz. Uygulama kayıtları listesine gidin ve uygulama kaydınızı seçin. Genel Bakışbölümünde Nesne Kimliği'ni bulabilirsiniz.
- Aşağıdaki adımlarda ihtiyaç duyacağınız dış IdP ve yazılım iş yükünüz için konusuyla ilgili ve sağlayıcı bilgilerini edinin.
Bir uygulamada federe kimlik doğrulama bilgisini yapılandırma
GitHub Actions
GitHub eylemleri için federasyon kimliği eklemek için şu adımları izleyin:
Microsoft Entra yönetim merkeziuygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar & gizli diziler
seçin, Federasyon kimlik bilgileri sekmesini veKimlik bilgisi ekle öğesini seçin.Federasyon kimlik bilgileri senaryosu açılan kutusundaAzure kaynaklarını dağıtan GitHub eylemleriniseçin. GitHub Actions iş akışınız için Kuruluş ve Deposu belirtin.
Varlık türü için Ortam ,Dal ,Çekme isteği veyaEtiketi seçin ve değeri belirtin. DeğerlerinGitHub iş akışındaki yapılandırmayla tam olarak eşleşmesi gerekir. Desen eşleştirme dallar ve etiketler için desteklenmez. İtme iş akışınız birçok dal veya etikete karşı çalışıyorsa bir çalışma ortamı belirtin. Daha fazla bilgi için örneklerini okuyun. Federe kimlik bilgisi için bir isim ekleyin.
Veren , hedef kitlelerve Konu tanımlayıcısı alanları girdiğiniz değerlere göre otomatik olarak doldurulur.Federasyon kimlik bilgilerini yapılandırmak için ekle'yi seçin.
GitHub iş akışınız için Microsoft Entra uygulama kaydınızdan aşağıdaki değerleri kullanın:
AZURE_CLIENT_ID
Uygulama (istemci) kimliğiAZURE_TENANT_ID
Dizini (kiracı) kimliğiAşağıdaki ekran görüntüsünde uygulama kimliğinin ve kiracı kimliğinin nasıl kopyalanması gösterilmektedir.
AZURE_SUBSCRIPTION_ID
abonelik Kimliğiniz. Abonelik kimliğini almak için Azure portalAbonelikler açın ve aboneliğinizi bulun. Ardından Abonelik Kimliğinikopyalayın.
Varlık türü örnekleri
Dal örneği
Ana dalda bir gönderme veya çekme isteği olayı tarafından tetiklenen bir iş akışı için:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Ortam örneği
"production" adlı bir ortama bağlı işler için:
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Etiket örneği
Örneğin, "v2" etiketi adı verilen bir etikete yapılan gönderimle tetiklenen bir iş akışı için:
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Varlık türü olarak Etiketi ve "v2" olarak GitHub etiket adını belirtin.
Çekme isteği örneği
Çekme isteği olayının tetiklediği bir iş akışı için Varlık türü olarak Çekme isteği belirtin
Kubernetes
Microsoft Entra yönetim merkeziuygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinme bölmesinde Sertifikalar & gizli diziler seçin, Federasyon kimlik bilgileri sekmesini seçin ve Kimlik bilgisi ekleöğesini seçin.
Açılan menüden Azure kaynaklarına erişim sağlayan Kubernetes senaryosunu seçin.
Küme Issuer URL'sini, Ad Alanı, Hizmet Hesabı Adıve İsmi alanlarını doldurun.
- Küme verici URL'si, yönetilen küme için OIDC verici URL'si veya öz yönetimli bir küme için OIDC verici URL'si.
- Hizmet hesabı adı, Bir Pod'da çalışan işlemler için kimlik sağlayan Kubernetes hizmet hesabının adıdır.
- Ad Alanı hizmet hesabı ad alanıdır.
- Adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
Diğer kimlik sağlayıcıları
Microsoft Entra yönetim merkeziuygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar & anahtarlar seçeneğini, Federasyon kimlik bilgileri sekmesini seçin ve Kimlik bilgisi ekleöğesini seçin.
Açılır menüden Diğer ihraç eden senaryosunu seçin.
Aşağıdaki alanları belirtin (örnek olarak Google Cloud'da çalışan bir yazılım iş yükü kullanarak):
- Adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
-
Konu tanımlayıcısı: dış kimlik sağlayıcısınca verilen belirteçteki
sub
talebiyle uyumlu olmalıdır. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliğidir. -
Veren: dış kimlik sağlayıcısı tarafından verilen belirteçteki
iss
talebiyle eşleşmelidir. OIDC Bulma belirtimiyle uyumlu bir URL. Microsoft Entra ID, belirteci doğrulamak için gerekli anahtarları almak için bu sağlayıcı URL'sini kullanır. Google Cloud'un ihraç eden kuruluşu ,,https://accounts.google.com
'dir.
Bir uygulamada federe kimlik bilgilerini listele
Microsoft Entra yönetim merkeziuygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar & gizli diziler seçin ve Federasyon kimlik bilgileri sekmesini seçin. Uygulamanızda yapılandırılmış federasyon kimlik bilgileri listelenmektedir.
Bir uygulamadan federatif kimlik bilgilerini silme
Microsoft Entra yönetim merkeziuygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde sertifikalar & gizli diziler
Federasyon kimlik bilgilerini silmek için, kimlik bilgisi için Sil simgesini seçin.
Esnek Federatif Kimlik Bilgisi oluşturma (önizleme)
- Microsoft Entra Id'ye gidin ve federasyon kimliği kimlik bilgilerini yapılandırmak istediğiniz uygulamayı seçin.
- Sol gezinti bölmesinde Sertifikalar & gizli anahtarlarseçin.
- Birleşik Kimlik Bilgileri sekmesinde + Kimlik Bilgisi Ekleseçeneğini seçin.
- Görüntülenen
Kimlik bilgisi ekle penceresinde,Federasyon kimlik bilgisi senaryosunun yanındaki açılır menüden Diğer veren seçeneğini seçin. - Değer kullanmak istediğiniz talep eşleştirme ifadesini girin.
Önkoşullar
- Henüz bir Azure hesabınız yoksa devam etmeden önce ücretsiz bir hesap oluşturmak için kaydolun.
Azure Cloud Shellbash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'de Bash için Hızlı Başlangıç.
CLI referans komutlarını yerelde çalıştırmak istiyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalıştırıyorsanız Azure CLI'yi bir Docker kapsayıcısında çalıştırmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Azure CLI'yi docker kapsayıcısında çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI'da oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için Azure CLI ile oturum açma'a bakın.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLIile uzantıları kullanma
. Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version
çalıştırın. En son sürüme yükseltmek için az upgradeçalıştırın.
- Microsoft Entra ID'de uygulama kaydı oluşturun. Uygulamanıza dış yazılım iş yükünüz tarafından hedeflenen Azure kaynaklarına erişim izni verin.
- Aşağıdaki adımlarda ihtiyacınız olan nesne kimliğini, uygulama (istemci) kimliğini veya uygulamanın tanımlayıcı URI'sini bulun. Bu değerleri Microsoft Entra yönetim merkezindebulabilirsiniz. Kayıtlı uygulamalar listesine gidin ve uygulama kaydınızı seçin. Genel Bakış->Temel Parçalarbölümünde, aşağıdaki adımlarda ihtiyacınız olan Nesne Kimliği, Uygulama (istemci) kimliğiveya Uygulama Kimliği URI'si değerini alın.
- Aşağıdaki adımlarda ihtiyaç duyacağınız dış IdP'niz ve yazılım iş yükünüz için konusunun ve vereni olan bilgilerini edinin.
Uygulamada federe kimlik bilgisini yapılandırın
Uygulamanızda yeni bir federasyon kimlik bilgisi oluşturmak için az ad app federated-credential create komutunu çalıştırın.
id
parametresi, uygulamanın tanımlayıcı URI'sini, uygulama kimliğini veya nesne kimliğini belirtir.
parameters
parametresi, federasyon kimliği kimlik bilgilerini oluşturmaya yönelik parametreleri JSON biçiminde belirtir.
GitHub Actions örneği
veren GitHub OIDC sağlayıcısının yolunu tanımlar: https://token.actions.githubusercontent.com/
. Bu veren, Azure uygulamanız tarafından güvenilir hale gelir.
konusu GitHub Actions iş akışınızın GitHub kuruluşunu, deposunu ve ortamını tanımlar. GitHub Actions iş akışı, Microsoft kimlik platformundan erişim belirteci için GitHub belirteci değişimi isteğinde bulunduğunda, federasyon kimliği kimlik bilgilerindeki değerler sağlanan GitHub belirtecine göre denetleniyor. Azure bir erişim belirteci vermeden önce isteğin burada tanımlanan koşullarla eşleşmesi gerekir.
- Bir ortama bağlı işler için:
repo:< Organization/Repository >:environment:< Name >
- Ortamla bağlantılı olmayan görevler için, iş akışını tetiklemek amacıyla kullanılan referans yoluna göre dal/etiket için referans yolunu ekleyin:
repo:< Organization/Repository >:ref:< ref path>
. Örneğin,repo:n-username/ node_express:ref:refs/heads/my-branch
veyarepo:n-username/ node_express:ref:refs/tags/my-tag
. - Çekme isteği etkinliği tarafından tetiklenen iş akışları için:
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Kubernetes örneği
düzenleyici, hizmet hesabı düzenleyici URL'nizdir (yönetilen küme için OIDC düzenleyici URL'si veya kendi kendine yönetilen küme için OIDC düzenleyici URL'si).
konu, hizmet hesabına verilen belirteçlerdeki konu adıdır. Kubernetes, konu adları için aşağıdaki biçimi kullanır: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
hedef kitleleri dış belirteçte gösterilebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer api://AzureADTokenExchange
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Diğer kimlik sağlayıcıları örneği
Bir uygulamada federasyon kimliği kimlik bilgilerini yapılandırabilir ve diğer dış kimlik sağlayıcılarıyla güven ilişkisi oluşturabilirsiniz. Aşağıdaki örnekte, örnek olarak Google Cloud'da çalışan bir yazılım iş yükü kullanılır:
-
name
, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez. -
id
: nesne kimliği, uygulama (istemci) kimliği veya uygulamanın tanımlayıcı URI'si. -
subject
: dış kimlik sağlayıcısı tarafından verilen belirteçtekisub
talebiyle eşleşmelidir. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliğidir. -
issuer
: dış kimlik sağlayıcısı tarafından verilen belirteçtekiiss
talebiyle eşleşmelidir. OIDC Bulma belirtimiyle uyumlu bir URL. Microsoft Entra ID, belirteci doğrulamak için gereken anahtarları almak için bu issuer URL'sini kullanır. Google Cloud için çıkaranhttps://accounts.google.com
'dir. -
audiences
: dış belirteçte görüntülenebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer "api://AzureADTokenExchange"dir.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Bir uygulamada federe kimlik bilgilerini listele
Uygulamanızdaki federasyon kimlik bilgilerini listelemek için az ad app federated-credential list komutunu çalıştırın.
id
parametresi, uygulamanın tanımlayıcı URI'sini, uygulama kimliğini veya nesne kimliğini belirtir.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Bir uygulamada federe kimlik bilgisi alma
Uygulamanızda bir federasyon kimlik bilgisi almak için az ad app federated-credential show komutunu çalıştırın.
id
parametresi, uygulamanın tanımlayıcı URI'sini, uygulama kimliğini veya nesne kimliğini belirtir.
federated-credential-id
, federe kimlik belgesinin kimliğini veya adını belirtir.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Bir uygulamadan federasyon kimlik bilgisi silme
id
parametresi, uygulamanın tanımlayıcı URI'sini, uygulama kimliğini veya nesne kimliğini belirtir.
federated-credential-id
, federasyon kimliği kimlik bilgilerinin kimliğini veya adını belirtir.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Önkoşullar
- Örnek betikleri çalıştırmak için iki seçeneğiniz vardır:
- Kod bloklarının sağ üst köşesindeki Deneyin düğmesini kullanarak açabileceğiniz Azure Cloud Shellkullanın.
- Sonraki bölümde açıklandığı gibi betikleri Azure PowerShell ile yerel olarak çalıştırın.
- Microsoft Entra ID'de uygulama kaydı oluşturun. Uygulamanıza dış yazılım iş yükünüz tarafından hedeflenen Azure kaynaklarına erişim izni verin.
- Aşağıdaki adımlarda ihtiyacınız olan uygulamanın nesne kimliğini (uygulama (istemci) kimliği değil) bulun. Uygulamanın nesne kimliğini Microsoft Entra yönetim merkezindebulabilirsiniz. Kayıtlı uygulamalar listesine gidin ve uygulama kaydınızı seçin. Genel Bakış->Temel Bilgilerbölümünde Nesne Kimliğibulunur.
- Aşağıdaki adımlarda ihtiyaç duyacağınız dış IdP'niz ve yazılım iş yükü için konusu ve sağlayıcı bilgilerini edinin.
Azure PowerShell'i yerel olarak yapılandırma
Cloud Shell kullanmak yerine bu makalede Azure PowerShell'i yerel olarak kullanmak için:
Henüz yüklemediyseniz Azure PowerShell'nin en son sürümünü
yükleyin. Azure'da oturum açın.
Connect-AzAccount
PowerShellGet
en son sürümünü yükleyin. Install-Module -Name PowerShellGet -AllowPrerelease
Sonraki adım için bu komutu çalıştırdıktan sonra geçerli PowerShell oturumundan
Exit
gerekebilir.Bu makaledeki federasyon kimliği kimlik bilgileri işlemlerini gerçekleştirmek için
Az.Resources
modülünün yayın öncesi sürümünü yükleyin.Install-Module -Name Az.Resources -AllowPrerelease
Bir uygulamada federe kimlik bilgisi yapılandırma
Yeni bir federasyon kimlik bilgisi oluşturmak için New-AzADAppFederatedCredential cmdlet'ini bir uygulamada çalıştırın.
GitHub Actions örneği
- ApplicationObjectId: Daha önce Microsoft Entra ID'ye kaydettiğiniz uygulamanın nesne kimliği (uygulama (istemci) kimliği değil).
- Sağlayıcı, GitHub'ı dış belirteç sağlayıcısı olarak tanımlar.
-
Konu, GitHub Actions iş akışınızın GitHub kuruluşunu, deposunu ve ortamını tanımlar. GitHub Actions iş akışı, Microsoft kimlik platformundan bir erişim belirteci karşılığında bir GitHub belirteci değişimi isteğinde bulunduğunda, federasyon kimliği kimlik bilgilerindeki değerler sağlanan GitHub belirteciyle karşılaştırılarak denetleniyor.
- Bir ortama bağlı işler için:
repo:< Organization/Repository >:environment:< Name >
- Bir ortama bağlı olmayan işler için, iş akışını tetiklerken kullanılan referans yoluna dayalı dal/etiket için referans yolunu ekleyin:
repo:< Organization/Repository >:ref:< ref path>
. Örneğin,repo:n-username/ node_express:ref:refs/heads/my-branch
veyarepo:n-username/ node_express:ref:refs/tags/my-tag
. - Çekme isteği olayı tarafından tetiklenen iş akışları için:
repo:< Organization/Repository >:pull-request
.
- Bir ortama bağlı işler için:
- Adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
-
Hedef Kitle, dış belirteçte gösterilebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer
api://AzureADTokenExchange
.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Kubernetes örneği
- ApplicationObjectId: Daha önce Microsoft Entra ID'ye kaydettiğiniz uygulamanın nesne kimliği (uygulama (istemci) kimliği değil).
- Issuer, sizin hizmet hesabı veren URL'nizdir (yönetilen küme için OIDC veren URL'si veya öz-yönetimli küme için OIDC veren URL'si).
-
Konu, hizmet hesabına verilen belirteçlerdeki konu adıdır. Kubernetes, konu adları için aşağıdaki biçimi kullanır:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
-
Hedef Kitle, dış belirtecin
aud
talepte gösterilebilen hedef kitleleri listeler.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Diğer kimlik sağlayıcıları örneği
Aşağıdaki parametreleri belirtin (örnek olarak Google Cloud'da çalışan bir yazılım iş yükü kullanarak):
- ObjectID: Daha önce Microsoft Entra ID'ye kaydettiğiniz uygulamanın nesne kimliği (uygulama (istemci) kimliği değil).
- Adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
-
Konu, dış kimlik sağlayıcısı tarafından verilen belirteçteki
sub
talebiyle eşleşmelidir. Google Cloud'un kullanıldığı bu örnekte, konu , kullanmayı planladığınız hizmet hesabının Benzersiz Kimliğidir. -
Veren: dış kimlik sağlayıcısı tarafından verilen belirteçteki
iss
talebiyle eşleşmelidir. OIDC Bulma belirtimiyle uyumlu bir URL. Microsoft Entra Id, belirteci doğrulamak için gereken anahtarları getirmek için bu veren URL'sini kullanır. Google Cloud için ihraççıhttps://accounts.google.com
'dır. -
İzleyiciler: dış belirteçteki
aud
talebiyle eşleşmelidir. Güvenlik nedenleriyle, Microsoft Entra Kimliği'ne yönelik belirteçler için benzersiz bir değer seçmelisiniz. Önerilen değer "api://AzureADTokenExchange"dir.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Bir uygulamadaki federasyon kimlik bilgilerini listeleme
Bir uygulamanın federasyon kimlik bilgilerini listelemek için Get-AzADAppFederatedCredential cmdlet'ini
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Bir uygulamada federasyon kimlik bilgisi al
Bir uygulamadan kimlik numarasına göre federe kimlik kimlik bilgilerini almak amacıyla Get-AzADAppFederatedCredential cmdlet'ini çalıştırarak çalıştırın.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Bir uygulamadan bir federasyon kimlik bilgisi silme
Bir uygulamadan federasyon kimliği kimlik bilgilerini silmek için Remove-AzADAppFederatedCredential cmdlet'ini
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Önkoşullar
Microsoft Entra ID'de bir uygulama kaydı oluşturun. Uygulamanıza dış yazılım iş yükünüz tarafından hedeflenen Azure kaynaklarına erişim izni verin.
Aşağıdaki adımlarda ihtiyacınız olan uygulamanın nesne kimliğini (uygulama (istemci) kimliği değil) bulun. Uygulamanın nesne kimliğini Microsoft Entra yönetim merkezindebulabilirsiniz. Kayıtlı uygulamalar listesine gidin ve uygulama kaydınızı seçin. Genel Bakış->Temel Parçalarbölümünde Nesne Kimliğibulun.
Dış Kimlik Sağlayıcınız (IdP) ve yazılım iş yükünüz için, aşağıdaki adımlarda ihtiyaç duyduğunuz konu ve düzenleyici bilgilerini edinin.
Microsoft Graph uç noktası (
Uygulamada federe kimlik kimlik bilgisi yapılandırma
GitHub Actions (GitHub İşlemleri)
Uygulamanızda yeni bir federasyon kimliği kimlik bilgisi oluşturmak issuer
, GitHub'ı dış belirteç sağlayıcısı olarak tanımlar.
subject
GitHub Actions iş akışınızın GitHub kuruluşunu, deposunu ve ortamını tanımlar. GitHub Actions iş akışı, Microsoft kimlik platformundan bir GitHub belirtecini erişim belirteciyle değiştirme isteğinde bulunduğunda, birleştirilmiş kimlik kimlik bilgilerindeki değerler sağlanan GitHub belirtecine karşı kontrol edilir.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Ve yanıtı alırsınız:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
Kod parçacığında parametreler aşağıdaki gibidir:
-
name
: Azure uygulamanızın adı. -
issuer
: GitHub OIDC sağlayıcısının yolu:https://token.actions.githubusercontent.com
. Bu veren, Azure uygulamanız tarafından güvenilir hale gelir. -
subject
: Azure erişim belirteci vermeden önce isteğin burada tanımlanan koşullarla eşleşmesi gerekir.- Bir ortama bağlı işler için:
repo:< Organization/Repository >:environment:< Name >
- Bir ortama bağlı olmayan işlemler için, iş akışını tetiklemek amacıyla kullanılan referans yoluna göre dal/etiket için referans yolunu ekleyin:
repo:< Organization/Repository >:ref:< ref path>
. Örneğin,repo:n-username/ node_express:ref:refs/heads/my-branch
veyarepo:n-username/ node_express:ref:refs/tags/my-tag
. - Çekme isteği olayı tarafından tetiklenen iş akışları için:
repo:< Organization/Repository >:pull-request
.
- Bir ortama bağlı işler için:
-
audiences
, dış belirteçte görüntülenebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer "api://AzureADTokenExchange"dir.
Kubernetes örneği
Bir uygulamada federasyon kimliği kimlik bilgilerini yapılandırmak ve Kubernetes hizmet hesabıyla güven ilişkisi oluşturmak için aşağıdaki yöntemi çalıştırın. Aşağıdaki parametreleri belirtin:
-
issuer
, hizmet hesabı sağlayıcı URL'nizdir (yönetilen küme için OIDC sağlayıcı URL veya kendi kendine yönetilen küme için OIDC sağlayıcı URL'si). -
subject
, hizmet hesabına verilen belirteçlerdeki konu adıdır. Kubernetes, konu adları için aşağıdaki biçimi kullanır:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. -
name
, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez. -
audiences
, dış belirteçte görüntülenebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer "api://AzureADTokenExchange"dir.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
Ve yanıtı alırsınız:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Diğer kimlik sağlayıcıları örneği
Bir uygulamada federasyon kimliği kimlik bilgilerini yapılandırmak ve dış kimlik sağlayıcısıyla güven ilişkisi oluşturmak için aşağıdaki yöntemi çalıştırın. Aşağıdaki parametreleri belirtin (örnek olarak Google Cloud'da çalışan bir yazılım iş yükü kullanarak):
- adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
- ObjectID: Daha önce Microsoft Entra ID'ye kaydettiğiniz uygulamanın nesne kimliği (uygulama (istemci) kimliği değil).
-
konu: dış kimlik sağlayıcısı tarafından verilen belirteçteki
sub
talebiyle eşleşmelidir. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliğidir. -
veren: dış kimlik sağlayıcısı tarafından verilen belirteçteki
iss
talebiyle eşleşmelidir. OIDC Discovery belirtimiyle uyumlu bir URL. Microsoft Entra ID, jetonu doğrulamak için gereken anahtarları almak üzere bu verici URL'yi kullanır. Google Cloud için kimliği veren" ";. - hedef kitleleri dış belirteçte gösterilebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer "api://AzureADTokenExchange"dir.
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Ve yanıtı alırsınız:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Bir uygulamada federe kimlik bilgilerini listeleme
Bir uygulamanın federasyon kimlik bilgilerini listelemek
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
Aşağıdakine benzer bir yanıt alırsınız:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Bir uygulamada federasyon kimlik bilgilerini al
Bir uygulama için federasyon kimlik bilgisi almak
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Aşağıdakine benzer bir yanıt alırsınız:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Bir uygulamadan federasyon kimlik bilgisi silme
Bir uygulamadan (uygulamanın nesne kimliği tarafından belirtilen) bir federasyon kimlik bilgisi silmek için aşağıdaki yöntemi
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Ayrıca bkz.
- Kubernetes için iş yükü kimlik federasyonu kullanmayı öğrenmek için bkz. Kubernetes açık kaynak projesi için Microsoft Entra İş Yükü Kimliği.
- GitHub Actions için iş yükü kimliği federasyonu kullanmayı öğrenmek için bkz. Erişim belirteci almak için GitHub Actions iş akışını yapılandırma.
- Microsoft kimlik sağlayıcısından erişim belirteci almak ve Azure kaynaklarına erişmek için GitHub Actions iş akışınızı yapılandırma hakkında daha fazla bilgi edinmek için github actions
belgelerini okuyun. - Daha fazla bilgi için Microsoft Entra ID'nin OAuth 2.0 istemci kimlik bilgilerini nasıl kullandığı hakkında bilgi edinin ve belirteç almak için başka bir IdP tarafından verilen bir istemci onayı.
- Dış kimlik sağlayıcıları tarafından oluşturulan gerekli JWT biçimi hakkında bilgi için
onay biçimi hakkında bilgi edinin.