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, Microsoft kimlik platformu erişim belirteci için dış IdP'den belirteç değişimi yapmak üzere bir dış yazılım iş yükü yapılandırabilirsiniz. Dış iş yükü, gizli dizileri yönetmeye gerek kalmadan (desteklenen senaryolarda) Microsoft Entra korumalı kaynaklara erişebilir. Belirteç değişimi iş akışı hakkında daha fazla bilgi edinmek için iş yükü kimlik federasyonu hakkında bilgi edinin.
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önetici oluşturucusu, Uygulama Geliştiricisi, Bulut Uygulaması Yönetici oluşturucusu veya Uygulama Sahibi rolü olmalıdır. Federasyon kimliği kimlik bilgilerini güncelleştirmek için microsoft.directory/applications/credentials/update izni gereklidir.
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. ve
subject
bileşimiissuer
uygulamada benzersiz olmalıdır. Dış yazılım iş yükü bir erişim belirteci için dış belirteci değiştirmek Microsoft kimlik platformu istediğinde, federasyon kimliği kimlik bilgilerinin veren ve konu değerleri dış belirteçte sağlanan vesubject
taleplerine göreissuer
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 talebiyle eşleşmelidir
issuer
. Gerekli. Talepteissuer
değerde baştaki veya sondaki boşluk varsa belirteç değişimi 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
sub
dış belirtecin (subject
) talebiyle eşleşmelidir. her IdP kendi biçimini kullandığı için özne sabit bir biçime sahip değildir. Bazen GUID, bazen iki nokta üst üste ayrılmış tanımlayıcı, bazen 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 hatasız başarısız olur.
Önemli
Konu ayarına yanlışlıkla yanlış dış iş yükü bilgileri 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örüntülenebilen hedef kitleleri listeler. Gerekli. 600 karakter sınırı olan tek bir hedef kitle değeri eklemeniz gerekir. Önerilen değer "api://AzureADTokenExchange"dir. Microsoft kimlik platformu gelen belirteçteki talepte neleri
aud
kabul etmesi gerektiğini söyler.name , federasyon kimliği kimlik bilgilerinin benzersiz tanımlayıcısıdır. Gerekli. Bu alanın karakter sınırı 3-120 karakterdir ve URL kolay olmalıdır. Alfasayısal, tire veya alt çizgi karakterleri desteklenir, ilk karakter yalnızca alfasayısal olmalıdır. Oluşturulduktan sonra sabittir.
description , federasyon kimliği kimlik bilgilerinin kullanıcı tarafından sağlanan açıklamasıdır. isteğe bağlı. Açıklama Microsoft Entra Id tarafından doğrulanmaz veya denetlenmiyor. Bu alanın sınırı 600 karakterdir.
Joker karakterler hiçbir federasyon kimliği kimlik 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 Bkz . Federasyon kimlik bilgileri için önemli noktalar ve kısıtlamalar.
Ö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 merkezinde bulabilirsiniz. Uygulama kayıtları listesine gidin ve uygulama kaydınızı seçin. Genel Bakış-Temel Parçalar'da Nesne Kimliğini bulun.>
Aşağıdaki adımlarda ihtiyacınız olan dış IdP ve yazılım iş yükünüz için konu ve veren bilgilerini alın.
Uygulamada federasyon kimliği kimlik bilgilerini yapılandırma
GitHub Actions
GitHub eylemleri için federasyon kimliği eklemek için şu adımları izleyin:
Microsoft Entra yönetim merkezinin uygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar ve gizli diziler'i seçin, Federasyon kimlik bilgileri sekmesini ve kimlik bilgisi ekle'yi seçin.
Federasyon kimlik bilgisi senaryosu açılan kutusunda Azure kaynaklarını dağıtan GitHub eylemleri'ni seçin.
GitHub Actions iş akışınız için Kuruluş ve Depo'yu belirtin.
Varlık türü için Ortam, Dal, Çekme isteği veya Etiket'i seçin ve değeri belirtin. Değerlerin GitHub iş akışındaki yapılandırmayla tam olarak eşleşmesi gerekir. Desen eşleştirme dallar ve etiketler için desteklenmez. Anında iletme iş akışınız birçok dalda veya etikette çalışıyorsa bir ortam belirtin. Daha fazla bilgi için örnekleri okuyun.
Federasyon kimlik bilgileri için bir Ad ekleyin.
Veren, hedef kitleler ve 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
Dizin (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 portalında Abonelikler'i açın ve aboneliğinizi bulun. Ardından Abonelik Kimliğini kopyalayı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 ]
Bir Dal Varlık türüve gitHub dal adı olarak "main" belirtin.
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
Ortam varlık türünüve GitHub ortam adını "production" olarak belirtin.
Etiket örneği
Örneğin, "v2" adlı etikete gönderilerek 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.*
Bir Etiket Varlık türüve "v2" GitHub etiket adı belirtin.
Çekme isteği örneği
Çekme isteği olayı tarafından tetiklenen bir iş akışı için Bir Çekme isteği Varlık türü belirtin
Kubernetes
Microsoft Entra yönetim merkezinin uygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar ve gizli diziler'i seçin, Federasyon kimlik bilgileri sekmesini ve kimlik bilgisi ekle'yi seçin.
Açılan menüden Azure kaynaklarına erişen Kubernetes senaryounu seçin.
Küme veren URL'si, Ad Alanı, Hizmet hesabı adı ve Ad alanlarını doldurun:
- Kümeyi veren URL , yönetilen küme için OIDC veren URL'si veya kendi kendine yönetilen bir küme için OIDC Veren URL'sidir .
- Hizmet hesabı adı , Bir Pod'da çalışan işlemler için bir 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 merkezinin uygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar ve gizli diziler'i seçin, Federasyon kimlik bilgileri sekmesini ve kimlik bilgisi ekle'yi seçin.
Açılan menüden Diğer veren senaryoyu 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ı tarafından verilen belirteçteki taleple eşleşmelidir
sub
. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliği'dir. - Veren: Dış kimlik sağlayıcısı tarafından verilen belirteçteki taleple eşleşmelidir
iss
. 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 veren "https://accounts.google.com".
Bir uygulamadaki federasyon kimliği kimlik bilgilerini listeleme
Microsoft Entra yönetim merkezinin uygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar ve gizli diziler'i seçin ve Federasyon kimlik bilgileri sekmesini seçin. Uygulamanızda yapılandırılan federasyon kimlik bilgileri listelenir.
Bir uygulamadan federasyon kimliği kimlik bilgilerini silme
Microsoft Entra yönetim merkezinin uygulama kayıtları deneyiminde uygulama kaydınızı bulun. Sol gezinti bölmesinde Sertifikalar ve gizli diziler'i seçin ve Federasyon kimlik bilgileri sekmesini seçin. Uygulamanızda yapılandırılan federasyon kimlik bilgileri listelenir.
Federasyon kimliği kimlik bilgilerini silmek için kimlik bilgisi için Sil simgesini seçin.
Önkoşullar
- Henüz bir Azure hesabınız yoksa devam etmeden önce ücretsiz bir hesaba kaydolun.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile 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 bkz . Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- 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 nesne kimliğini, uygulama (istemci) kimliğini veya uygulamanın tanımlayıcı URI'sini bulun. Bu değerleri Microsoft Entra yönetim merkezinde bulabilirsiniz. Kayıtlı uygulamalar listesine gidin ve uygulama kaydınızı seçin. Overview-Essentials bölümünde, aşağıdaki adımlarda ihtiyacınız olan Nesne Kimliği, Uygulama (istemci) Kimliği veya Uygulama Kimliği URI'si değerini alın.>
- Aşağıdaki adımlarda ihtiyacınız olan dış IdP ve yazılım iş yükünüz için konu ve veren bilgilerini alın.
Uygulamada federasyon kimliği kimlik bilgilerini yapılandırma
Uygulamanızda yeni bir federasyon kimliği kimlik bilgisi oluşturmak için az ad app federated-credential create komutunu çalıştırın.
parametresi, id
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
Ad, federasyon kimliği kimlik bilgilerinizin adını belirtir.
Veren, GitHub OIDC sağlayıcısının yolunu tanımlar: https://token.actions.githubusercontent.com/
. Bu verene Azure uygulamanız tarafından güvenilecek.
konu, GitHub Actions iş akışınızın GitHub kuruluşunu, deposunu ve ortamını tanımlar. GitHub Actions iş akışı Microsoft kimlik platformu erişim belirteci için GitHub belirtecini değiştirme isteğinde bulunduğunda, federasyon kimliği kimlik bilgilerindeki değerler sağlanan GitHub belirtecine göre denetleniyor. 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şler için, iş akışını tetiklerken kullanılan başvuru yolunu temel alan dal/etiket için başvuru 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
.
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
veren , hizmet hesabı veren URL'nizdir ( yönetilen küme için OIDC veren URL'si veya kendi kendine yönetilen 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 kitleleri , 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": "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:
ad , federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.
id: uygulamanın nesne kimliği, uygulama (istemci) kimliği veya tanımlayıcı URI'si.
konu: dış kimlik sağlayıcısı tarafından verilen belirteçteki taleple eşleşmelidir sub
. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliği'dir.
veren: dış kimlik sağlayıcısı tarafından verilen belirteçteki taleple eşleşmelidir iss
. 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 veren "https://accounts.google.com".
hedef kitleler: Dış belirteçte gösterilebilen 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 uygulamadaki federasyon kimliği kimlik bilgilerini listeleme
Uygulamanızdaki federasyon kimliği 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 federasyon kimliği kimlik bilgilerini alma
Uygulamanızda federasyon kimliği kimlik bilgilerini 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.
federe-credential-id, federasyon kimliği kimlik bilgilerinin 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 kimliği kimlik bilgilerini silme
Uygulamanızdan federasyon kimliği kimlik bilgilerini kaldırmak için az ad app federated-credential delete komutunu çalıştırın.
id parametresi, uygulamanın tanımlayıcı URI'sini, uygulama kimliğini veya nesne kimliğini belirtir.
federe-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 Shell'i kullanın.
- Sonraki bölümde açıklandığı gibi betikleri Azure PowerShell ile yerel olarak çalıştırın.
- 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 merkezinde bulabilirsiniz. Kayıtlı uygulamalar listesine gidin ve uygulama kaydınızı seçin. Genel Bakış-Temel Parçalar'da Nesne Kimliğini bulun.>
- Aşağıdaki adımlarda ihtiyacınız olan dış IdP ve yazılım iş yükünüz için konu ve veren bilgilerini alın.
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'in en son sürümünü yükleyin.
Azure'da oturum açın.
Connect-AzAccount
PowerShellGet'in en son sürümünü yükleyin.
Install-Module -Name PowerShellGet -AllowPrerelease
Sonraki adım için
Exit
bu komutu çalıştırdıktan sonra geçerli PowerShell oturumunu kapatmanız gerekebilir.Bu makaledeki federasyon kimliği kimlik bilgileri işlemlerini gerçekleştirmek için modülün yayın öncesi sürümünü
Az.Resources
yükleyin.Install-Module -Name Az.Resources -AllowPrerelease
Uygulamada federasyon kimliği kimlik bilgilerini yapılandırma
Bir uygulamada yeni bir federasyon kimliği kimlik bilgisi oluşturmak için New-AzADAppFederatedCredential cmdlet'ini çalıştırın.
GitHub Actions örneği
- ApplicationObjectId: Daha önce Microsoft Entra Kimliği'ne kaydettiğiniz uygulamanın nesne kimliği (uygulama (istemci) kimliği değil.
- Veren , GitHub'ı dış belirteç veren 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 platformu erişim belirteci için GitHub belirtecini değiştirme isteğinde bulunduğunda, federasyon kimliği kimlik bilgilerindeki değerler sağlanan GitHub belirtecine göre 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 başvuru yolunu temel alan dal/etiket için başvuru 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örüntülenebilen hedef kitleleri listeler. Bu alan zorunludur. Önerilen değer "api://AzureADTokenExchange"dir.
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 Kimliği'ne kaydettiğiniz uygulamanın nesne kimliği (uygulama (istemci) kimliği değil.
- Veren , hizmet hesabı veren URL'nizdir ( yönetilen küme için OIDC veren URL'si veya kendi kendine yönetilen 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 talebi içinde
aud
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 Kimliği'ne 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 taleple eşleşmelidir
sub
. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliği'dir. - Veren: Dış kimlik sağlayıcısı tarafından verilen belirteçteki taleple eşleşmelidir
iss
. 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 veren "https://accounts.google.com". - İzleyiciler: dış belirteçteki
aud
taleple 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 kimliği kimlik bilgilerini listeleme
Bir uygulamanın federasyon kimlik bilgilerini listelemek için Get-AzADAppFederatedCredential cmdlet'ini çalıştırın.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Bir uygulamada federasyon kimliği kimlik bilgilerini alma
Bir uygulamadan kimliğine göre federasyon kimliği kimlik bilgilerini almak için Get-AzADAppFederatedCredential cmdlet'ini çalıştırın.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Bir uygulamadan federasyon kimliği kimlik bilgilerini silme
Bir uygulamadan federasyon kimliği kimlik bilgilerini silmek için Remove-AzADAppFederatedCredential cmdlet'ini çalıştırın.
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 merkezinde bulabilirsiniz. Kayıtlı uygulamalar listesine gidin ve uygulama kaydınızı seçin. Genel Bakış-Temel Parçalar'da Nesne Kimliğini bulun.>
Aşağıdaki adımlarda ihtiyacınız olan dış IdP ve yazılım iş yükünüz için konu ve veren bilgilerini alın.
Microsoft Graph uç noktası (https://graph.microsoft.com
), uygulamalarda federatedIdentityCredentials oluşturmak, güncelleştirmek, silmek için REST API'lerini kullanıma sunar. AZ CLI'dan Microsoft Graph komutlarını çalıştırmak için Azure Cloud Shell'i başlatın ve kiracınızda oturum açın.
Uygulamada federasyon kimliği kimlik bilgilerini yapılandırma
GitHub Actions
Uygulamanızda yeni bir federasyon kimliği kimlik bilgisi oluşturmak için aşağıdaki yöntemi çalıştırın (uygulamanın nesne kimliği tarafından belirtilir). Veren, GitHub'ı dış belirteç veren 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 platformu erişim belirteci için GitHub belirtecini değiştirme isteğinde bulunduğunda, federasyon kimliği kimlik bilgilerindeki değerler sağlanan GitHub belirtecine göre denetleniyor.
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"
}
name: Azure uygulamanızın adı.
veren: GitHub OIDC sağlayıcısının yolu: https://token.actions.githubusercontent.com
. Bu verene Azure uygulamanız tarafından güvenilecek.
konu: 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şler için, iş akışını tetiklerken kullanılan başvuru yolunu temel alan dal/etiket için başvuru 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
.
hedef kitleleri , 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:
- veren , hizmet hesabı veren URL'nizdir ( yönetilen küme için OIDC veren URL'si veya kendi kendine yönetilen 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 kitleleri , 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 Kimliği'ne 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 taleple eşleşmelidir
sub
. Google Cloud'un kullanıldığı bu örnekte konu, kullanmayı planladığınız hizmet hesabının Benzersiz Kimliği'dir. - veren: dış kimlik sağlayıcısı tarafından verilen belirteçteki taleple eşleşmelidir
iss
. 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 veren "https://accounts.google.com". - hedef kitleleri , 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/<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 uygulamadaki federasyon kimliği kimlik bilgilerini listeleme
Bir uygulamanın federasyon kimlik bilgilerini (uygulamanın nesne kimliği tarafından belirtilen) listelemek için aşağıdaki yöntemi çalıştırın:
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 kimliği kimlik bilgilerini alma
Bir uygulama için federasyon kimliği kimlik bilgilerini almak için aşağıdaki yöntemi çalıştırın (uygulamanın nesne kimliği tarafından belirtilir):
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 kimliği kimlik bilgilerini silme
Bir uygulamadan federasyon kimliği kimlik bilgilerini silmek için aşağıdaki yöntemi çalıştırın (uygulamanın nesne kimliğiyle belirtilir):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Sonraki adımlar
- 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ü kimlik federasyonu kullanmayı öğrenmek için bkz . Erişim belirteci almak için GitHub Actions iş akışı 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 belirteç almak için OAuth 2.0 istemci kimlik bilgileri verme ve başka bir IdP tarafından verilen istemci onayını nasıl kullandığı hakkında bilgi edinin.
- 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.