Aracılığıyla paylaş


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

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 ve subject 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ğlanan issuer ve subject 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 kimlik 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. 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:

  1. 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 ve Kimlik bilgisi ekleöğesini seçin.

  2. Federasyon kimlik bilgileri senaryosu açılan kutusundaAzure kaynaklarını dağıtan GitHub eylemlerini seçin.

  3. GitHub Actions iş akışınız için Kuruluş ve Deposu belirtin.

  4. Varlık türü için Ortam, Dal, Çekme isteğiveya Etiketi 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.

  5. Federe kimlik bilgisi için bir isim ekleyin.

  6. Veren, hedef kitlelerve Konu tanımlayıcısı alanları girdiğiniz değerlere göre otomatik olarak doldurulur.

  7. Federasyon kimlik bilgilerini yapılandırmak için ekle'yi seçin.

    Örnek değerleri gösteren Kimlik bilgisi ekle penceresinin ekran görüntüsü.

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ği

  • AZURE_TENANT_ID Dizini (kiracı) kimliği

    Aşağıdaki ekran görüntüsünde uygulama kimliğinin ve kiracı kimliğinin nasıl kopyalanması gösterilmektedir.

    Microsoft Entra yönetim merkezinden uygulama kimliğinin ve kiracı kimliğinin nasıl kopyalandığını gösteren ekran görüntüsü.

  • 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 ]

Dalı Varlık türü ve "main" GitHub dal adı 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ü ve "üretim" GitHub ortam adı belirtin.

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 seçin ve Federasyon kimlik bilgileri sekmesini seçin. Uygulamanızda yapılandırılan federasyon kimlik bilgileri listelenir.

Federasyon kimlik bilgilerini silmek için, kimlik bilgisi için Sil simgesini seçin.

Esnek Federatif Kimlik Bilgisi oluşturma (önizleme)

  1. Microsoft Entra Id'ye gidin ve federasyon kimliği kimlik bilgilerini yapılandırmak istediğiniz uygulamayı seçin.
  2. Sol gezinti bölmesinde Sertifikalar & gizli anahtarlarseçin.
  3. Birleşik Kimlik Bilgileri sekmesinde + Kimlik Bilgisi Ekleseçeneğini seçin.
  4. Görüntülenen Kimlik bilgisi ekle penceresinde,Federasyon kimlik bilgisi senaryosunun yanındaki açılır menüden Diğer veren seçeneğiniseçin.
  5. 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

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 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 veya repo: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>.

adı, federasyon kimlik bilgilerinin adıdır ve daha sonra değiştirilemez.

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ç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.
  • issuer: 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ı 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

komutunu çalıştırarak uygulamanızdan bir federasyon kimlik bilgisini kaldırmak için az ad app federated-credential delete kullanın.

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:

  1. Henüz yüklemediyseniz Azure PowerShell'nin en son sürümünü yükleyin.

  2. Azure'da oturum açın.

    Connect-AzAccount
    
  3. PowerShellGeten 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.

  4. 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 veya repo: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.
  • 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 çalıştırın.

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 ç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 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ı (), uygulamalarda federatedIdentityCredentials oluşturmak, güncelleştirmek, silmek REST API'lerini kullanıma sunar. Azure Cloud Shell başlatın ve AZ CLI'dan Microsoft Graph komutlarını çalıştırmak için kiracınızda oturum açın.

Uygulamada federe kimlik kimlik bilgisi yapılandırma

GitHub Actions (GitHub İşlemleri)

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). 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 veya repo: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.
  • 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 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'

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 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 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 çalıştırın.

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çinonay biçimi hakkında bilgi edinin.