Udostępnij za pośrednictwem


Elastyczne poświadczenia tożsamości federacyjnej (wersja zapoznawcza)

Elastyczne poświadczenia tożsamości federacyjnej są zaawansowaną funkcją Microsoft Entra Workload ID, które ulepszają istniejący model poświadczeń tożsamości federacyjnej. W tym artykule wyjaśniono, jak działają te poświadczenia, ich korzyści i bieżące ograniczenia.

Elastyczne poświadczenia tożsamości federacyjnej umożliwiają użycie ograniczonego języka wyrażeń do dopasowywania przychodzących roszczeń subject oraz włączania niestandardowych roszczeń, co pomaga zredukować obciążenia zarządzania i rozwiązywać problemy z ograniczeniami skalowania w federacji tożsamości obciążeń. Jeśli chcesz usprawnić uwierzytelnianie obciążeń zewnętrznych za pomocą firmy Microsoft Entra, ten przewodnik zawiera niezbędne szczegółowe informacje i kroki umożliwiające korzystanie z tej zaawansowanej funkcji.

Dlaczego warto używać elastycznych poświadczeń tożsamości federacyjnej?

Bieżące zachowanie poświadczenia tożsamości federacyjnej w ramach federacji tożsamości dla obciążeń roboczych wymaga wyraźnego dopasowania podczas porównywania zdefiniowanych subject, issueri audience w poświadczeniu tożsamości federacyjnej względem subject, issueri audience zawartych w tokenie wysłanym do Microsoft Entra. W połączeniu z bieżącym limitem 20 poświadczeń tożsamości federacyjnej dla danej aplikacji lub tożsamości zarządzanej przypisanej przez użytkownika można szybko osiągnąć limity skalowania.

Elastyczne poświadczenia tożsamości federacyjnej rozszerzają istniejący model poświadczeń tożsamości federacyjnej, umożliwiając używanie ograniczonego języka wyrażeń podczas dopasowywania do przychodzących żądań subject. Można go również użyć do rozszerzenia modelu autoryzacji poświadczeń tożsamości federacyjnej, wykraczając poza oświadczenia subject, issueri audience, poprzez włączenie niektórych dozwolonych oświadczeń niestandardowych w ramach poświadczeń tożsamości federacyjnej.

Elastyczne poświadczenia tożsamości federacyjnej mogą pomóc zmniejszyć obciążenie związane z zarządzaniem podczas próby uwierzytelnienia obciążeń zewnętrznych za pomocą usługi Microsoft Entra i rozwiązać limity skalowania w implementacjach federacji tożsamości obciążenia.

Jak działają elastyczne poświadczenia tożsamości federacyjnej?

Elastyczne poświadczenia tożsamości federacyjnej nie zmieniają funkcji punktu odniesienia zapewnianych przez poświadczenia tożsamości federacyjnej. Te relacje zaufania są nadal używane do wskazywania, który token z zewnętrznego dostawcy tożsamości powinien być zaufany przez Twoją aplikację. Zamiast tego rozszerzają możliwość poświadczeń tożsamości federacyjnej, włączając scenariusze, które wcześniej wymagały zarządzania wieloma poświadczeniami tożsamości federacyjnej, aby zamiast tego były zarządzane w ramach jednego elastycznego poświadczenia tożsamości federacyjnej. Oto kilka przykładów:

  • Repozytoria GitHub z różnymi przepływami pracy, z których każdy działa w innej gałęzi (lub jest używany w różnych gałęziach). Wcześniej wymagane było unikatowe poświadczenie tożsamości federacyjnej dla każdej gałęzi, w której przepływy pracy były uruchamiane. W przypadku elastycznych poświadczeń tożsamości federacyjnej ten scenariusz może być zarządzany w ramach pojedynczego poświadczenia tożsamości federacyjnej.
  • Plany run_phases w chmurze programu Terraform, które wymagają unikatowego poświadczenia tożsamości federacyjnej. Dzięki elastycznym poświadczeniom tożsamości federacyjnej można to zarządzać za pomocą jednego takiego poświadczenia.
  • Przepływy pracy GitHub Actions wielokrotnego użytku, w których można używać symboli wieloznacznych względem niestandardowego roszczenia job_workflow_ref usługi GitHub.

Notatka

Obsługa elastycznych poświadczeń tożsamości federacyjnej jest obecnie dostępna do dopasowywania do tokenów wystawionych w usłudze GitHub, GitLab i Terraform Cloud. Ta obsługa istnieje tylko w przypadku poświadczeń tożsamości federacyjnej skonfigurowanych obecnie w obiektach aplikacji. Możesz tworzyć tylko elastyczne poświadczenia tożsamości federacyjnej i zarządzać nimi za pośrednictwem programu Microsoft Graph lub witryny Azure Portal.

Elastyczna struktura języka poświadczeń tożsamości federacyjnej

Elastyczne wyrażenie poświadczeń tożsamości federacyjnej składa się z trzech części, wyszukiwania oświadczeń, operatora i comparand. Zapoznaj się z poniższą tabelą, aby zapoznać się z podziałem poszczególnych części:

Nazwa Opis Przykład
Wyszukiwanie roszczeń Wyszukiwanie roszczeń musi być zgodne ze wzorcem claims['<claimName>'] claims['sub']
Operator Część operatora musi być wyłącznie nazwą operatora, oddzieloną od wyszukiwania roszczeń i porównywalnej wartości jedną spacją. matches
Comparand Comparand zawiera to, co zamierzasz porównać oświadczenie określone w wyszukiwaniu względem — musi być zawarte w pojedynczych cudzysłowach 'repo:contoso/contoso-repo:ref:refs/heads/*'

Przedstawione razem przykładowe elastyczne wyrażenie poświadczeń tożsamości federacyjnej będzie wyglądać podobnie do następującego obiektu JSON:

"claims['sub'] matches 'repo:contoso/contoso-repo:ref:refs/heads/*'."

Konfigurowanie poświadczeń tożsamości federacyjnej za pomocą programu Microsoft Graph

Aby obsłużyć elastyczne funkcje poświadczeń tożsamości federacyjnej, zasób federatedIdentityCredentials jest rozszerzany o nową właściwość claimsMatchingExpression. Oprócz tego właściwość subject może teraz przyjmować wartość null. Właściwości claimsMatchingExpression i subject wzajemnie się wykluczają, więc nie można zdefiniować obu tych właściwości w ramach poświadczeń tożsamości federacyjnej.

  • audiences: Grupa odbiorców mogących się pojawić w zewnętrznym tokenie. To pole jest obowiązkowe i powinno być ustawione na api://AzureADTokenExchange dla identyfikatora Entra firmy Microsoft. Określa, co platforma tożsamości Microsoft powinna zaakceptować w ramach oświadczenia aud w przychodzącym tokenie. Ta wartość reprezentuje Microsoft Entra ID u zewnętrznego dostawcy tożsamości i nie ma ustalonej wartości u dostawców tożsamości — może być konieczne stworzenie nowej rejestracji aplikacji w Twoim dostawcy tożsamości, aby pełniła rolę odbiorcy tego tokenu.
  • issuer: adres URL zewnętrznego dostawcy tożsamości. Musi być zgodne z oświadczeniem wystawcy wymienianego tokenu zewnętrznego.
  • subject: Identyfikator obciążenia roboczego oprogramowania zewnętrznego w ramach zewnętrznego dostawcy tożsamości. Podobnie jak wartość odbiorcy, nie ma stałego formatu, ponieważ każdy IdP używa własnego identyfikatora — czasami identyfikator GUID, czasami identyfikator rozdzielany dwukropkiem, czasami dowolne ciągi. Wartość tutaj musi być zgodna z roszczeniem sub w tokenie przedstawionym identyfikatorowi Entra firmy Microsoft. Jeśli subject jest zdefiniowana, claimsMatchingExpression musi być ustawiona na wartość null.
  • name: unikatowy ciąg umożliwiający zidentyfikowanie poświadczeń. Ta właściwość jest kluczem alternatywnym, a wartość może być używana do odniesienia się do poświadczeń tożsamości federacyjnej za pomocą operacji GET i UPSERT.
  • claimsMatchingExpression: nowy typ złożony zawierający dwie właściwości, value i languageVersion. Używana wartość definiuje wyrażenie, a languageVersion definiuje wersję używanego elastycznego języka wyrażeń poświadczeń tożsamości federacyjnej (FFL). languageVersion zawsze należy ustawić wartość 1. Jeśli claimsMatchingExpression jest zdefiniowana, subject musi być ustawiona na wartość null.

Elastyczne funkcje języka wyrażeń poświadczeń tożsamości federacyjnej

Elastyczne poświadczenia tożsamości federacyjnej obsługują obecnie korzystanie z kilku operatorów w ramach włączonych wystawców. Pojedyncze cudzysłowy są interpretowane jako znaki ucieczki w elastycznym języku wyrażeń poświadczeń tożsamości federacyjnej.

Operator Opis Przykład
matches Umożliwia korzystanie z jednoznakowego symbolu (oznaczonego przez ?) oraz wieloznakowego symbolu (oznaczonego przez *), które dopasowują się do określonego roszczenia. "claims['sub'] matches 'repo:contoso/contoso-repo:ref:refs/heads/*'"
"claims['sub'] matches 'repo:contoso/contoso-repo-*:ref:refs/heads/????'"
eq Służy do jawnego dopasowywania względem określonego roszczenia "claims['sub'] eq 'repo:contoso/contoso-repo:ref:refs/heads/main'"
and Operator logiczny do łączenia wyrażeń z wieloma roszczeniami "claims['sub'] eq 'repo:contoso/contoso-repo:ref:refs/heads/main' and claims['job_workflow_ref'] matches 'foo-org/bar-repo /.github/workflows/*@refs/heads/main'"

Adresy URL wystawców, wspierane roszczenia i operatory według platformy

W zależności od używanej platformy należy zaimplementować różne adresy URL, oświadczenia i operatory wystawcy. Użyj poniższych kart, aby wybrać wybraną platformę.

Obsługiwane adresy URL wystawcy: https://token.actions.githubusercontent.com

Obsługiwane oświadczenia i operatory dla każdego oświadczenia:

  • Twierdzenie sub wspiera operatory eq i matches
  • Twierdzenie job_workflow_ref wspiera operatory eq i matches

Azure CLI, Azure PowerShell i dostawcy Terraform

Bezpośrednie wsparcie elastycznych poświadczeń tożsamości federacyjnej nie istnieje jeszcze w ramach Azure CLI, Azure PowerShell ani dostawców Terraform. Jeśli spróbujesz skonfigurować elastyczne poświadczenia tożsamości federacyjnej przy użyciu dowolnego z tych narzędzi, zostanie wyświetlony błąd. Ponadto jeśli skonfigurujesz elastyczne poświadczenia tożsamości federacyjnej za pośrednictwem programu Microsoft Graph lub witryny Azure Portal i spróbujesz odczytać te elastyczne poświadczenia tożsamości federacyjnej przy użyciu dowolnego z tych narzędzi, zostanie wyświetlony błąd.

Możesz użyć metody az rest interfejsu wiersza polecenia platformy Azure, aby wysyłać żądania interfejsu API REST na potrzeby elastycznego tworzenia poświadczeń tożsamości federacyjnej i zarządzania nimi.

az rest --method post \
    --url https://graph.microsoft.com/beta/applications/{objectId}/federatedIdentityCredentials
    --body "{'name': 'FlexFic1', 'issuer': 'https://token.actions.githubusercontent.com', 'audiences': ['api://AzureADTokenExchange'], 'claimsMatchingExpression': {'value': 'claims[\'sub\'] matches \'repo:contoso/contoso-org:ref:refs/heads/*\'', 'languageVersion': 1}}"