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şimi issuer 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 ve subject taleplerine göre issuer 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. Talepte issuer 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:

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

  2. Federasyon kimlik bilgisi senaryosu açılan kutusunda Azure kaynaklarını dağıtan GitHub eylemleri'ni seçin.

  3. GitHub Actions iş akışınız için Kuruluş ve Depo'yu belirtin.

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

  5. Federasyon kimlik bilgileri için bir Ad ekleyin.

  6. Veren, hedef kitleler ve 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.

    Screenshot of the Add a credential window, showing sample values.

GitHub iş akışınız için Microsoft Entra uygulama kaydınızdan aşağıdaki değerleri kullanın:

  • AZURE_CLIENT_IDUygulama (istemci) kimliği

  • AZURE_TENANT_IDDizin (kiracı) Kimliği

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

    Screenshot that demonstrates how to copy the application ID and tenant ID from Microsoft Entra admin center.

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

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

  • 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 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.
az ad app federated-credential create --id f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Kubernetes-federated-credential",
    "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
    "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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c

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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c --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:

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

  2. Azure'da oturum açın.

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

  4. 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 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ö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/9d80a3e1-2a87-46ea-ab16-e629589c541c/' -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/f6475511-fd81-4965-a00e-41e7792b7b9c/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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
  "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 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.

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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/","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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Kubernetes service account federated credential",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
  "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('f6475511-fd81-4965-a00e-41e7792b7b9c')/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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials'

Aşağıdakine benzer bir yanıt alırsınız:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": [
    {
      "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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/f6475511-fd81-4965-a00e-41e7792b7b9c//federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Aşağıdakine benzer bir yanıt alırsınız:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": {
      "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
      "@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials('f6475511-fd81-4965-a00e-41e7792b7b9c')/f6475511-fd81-4965-a00e-41e7792b7b9c",
    "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Sonraki adımlar