다음을 통해 공유


외부 ID 공급자를 신뢰하도록 앱 구성

이 문서에서는 Microsoft Entra ID의 애플리케이션에서 페더레이션 ID 자격 증명을 관리하는 방법을 설명합니다. 페더레이션 ID 자격 증명은 애플리케이션과 IdP(외부 ID 공급자) 간에 트러스트 관계를 만듭니다.

그런 다음 외부 IdP에서 Microsoft ID 플랫폼의 액세스 토큰에 대한 토큰을 교환하도록 외부 소프트웨어 워크로드를 구성할 수 있습니다. 외부 워크로드는 비밀(지원되는 시나리오)을 관리할 필요 없이 Microsoft Entra로 보호된 리소스에 액세스할 수 있습니다. 토큰 교환 워크플로에 대해 더 알아보려면 워크로드 ID 페더레이션읽으세요.

이 문서에서는 Microsoft Entra ID의 애플리케이션에서 페더레이션 ID 자격 증명을 만들고 나열하고 삭제하는 방법을 알아봅니다.

중요한 고려 사항 및 제한 사항

페더레이션 ID 자격 증명을 만들거나 업데이트하거나 삭제하려면 작업을 수행하는 계정에 애플리케이션 관리자, 애플리케이션 개발자, 클라우드 애플리케이션 관리자또는 애플리케이션 소유자 역할이 있어야 합니다. 페더레이션 ID 자격 증명을 업데이트하려면 microsoft.directory/applications/credentials/update 권한이 필요합니다.

애플리케이션 또는 사용자 할당 관리 ID에 최대 20개 페더레이션 ID 자격 증명을 추가할 수 있습니다.

페더레이션 ID 자격 증명을 구성할 때 제공해야 하는 몇 가지 중요한 정보가 있습니다.

  • 발급자주체는 신뢰 관계를 구축하는 데 필요한 핵심 정보입니다. issuersubject 조합은 앱에서 고유해야 합니다. 외부 소프트웨어 워크로드가 Microsoft ID 플랫폼에 액세스 토큰을 교환하도록 요청하면 발급자가 외부 토큰에 제공된 클레임에 대해 페더레이션 ID 자격 증명의 주체주체 값을 확인합니다. 유효성 검사에 통과하면 Microsoft ID 플랫폼이 외부 소프트웨어 워크로드에 대한 액세스 토큰을 발급합니다.

  • 발급자 외부 ID 공급자의 URL이며 교환되는 외부 토큰의 issuer 클레임과 일치해야 합니다. 필수. issuer 클레임 값에 선행 또는 후행 공백이 있으면 토큰 교환이 차단됩니다. 이 필드의 문자 제한은 600자입니다.

  • 주체 외부 소프트웨어 워크로드의 식별자이며 교환되는 외부 토큰의 sub(subject) 클레임과 일치해야 합니다. 주체 고정 형식이 없습니다. 각 IdP는 고유한 형식을 사용하며, 때로는 GUID, 때로는 콜론으로 구분된 식별자, 때로는 임의의 문자열을 사용합니다. 이 필드의 문자 제한은 600자입니다.

    중요하다

    주체 설정 값은 GitHub 워크플로 구성의 구성과 정확히 일치해야 합니다. 그렇지 않으면 Microsoft ID 플랫폼이 들어오는 외부 토큰을 살펴보고 액세스 토큰에 대한 교환을 거부합니다. 오류는 발생하지 않지만, 교환이 오류 없이 실패합니다.

    중요하다

    실수로 주체에 잘못된 외부 워크로드 정보를 추가하는 경우 페더레이션 ID 자격 증명을 설정하는 오류 없이 성공적으로 생성됩니다. 토큰 교환이 실패할 때까지 오류가 표시되지 않습니다.

  • 대상 그룹 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 필수. 600자로 제한되는 단일 대상 그룹 값을 추가해야 합니다. 권장되는 값은 "api://AzureADTokenExchange"입니다. 들어오는 토큰의 aud 클레임에서 Microsoft ID 플랫폼이 수락해야 하는 내용을 설명합니다.

  • 이름은 페더레이티드 ID 자격 증명의 고유 식별자입니다. 필수. 이 필드는 문자 제한이 3~120자이며 URL에 친숙해야 합니다. 영숫자, 대시 또는 밑줄 문자가 지원되며 첫 번째 문자는 영숫자여야 합니다. 만든 후에는 변경할 수 없습니다.

  • 설명 페더레이션 ID 자격 증명에 대한 사용자 제공 설명입니다. 선택적. 설명은 Microsoft Entra ID에서 확인되거나 유효성 검증을 받지 않았습니다. 이 필드는 600자로 제한합니다.

와일드카드 문자는 페더레이션 ID 자격 증명 속성 값에서 지원되지 않습니다.

지원되는 지역, 페더레이션 자격 증명 업데이트 전파 시간, 지원되는 발급자 등에 대한 자세한 내용은 페더레이션 ID 자격 증명대한 중요한 고려 사항 및 제한 사항을 읽어보세요.

필수 구성 요소

  • Microsoft Entra ID에서 앱 등록 만들거나 관리 ID . 외부 소프트웨어 워크로드가 대상으로 하는 Azure 리소스에 대한 액세스 권한을 앱에 부여합니다.
  • 다음 단계에서 필요한 애플리케이션(클라이언트) ID가 아닌 앱의 개체 ID를 찾습니다. Microsoft Entra 관리 센터 에서앱의 개체 ID를 찾을 수 있습니다. 앱 등록 목록으로 이동하여 앱 등록을 선택합니다. 개요에서 개체 ID를 찾을 수 있습니다.
  • 다음 단계에서 필요한 외부 IdP 및 소프트웨어 워크로드에 대한 주체발급자 정보를 가져옵니다.

앱에서 페더레이션 ID 자격 증명 구성

GitHub Actions

GitHub 작업에 대한 페더레이션 ID를 추가하려면 다음 단계를 수행합니다.

  1. Microsoft Entra 관리 센터의 앱 등록 환경에서 앱 등록을 찾습니다. 왼쪽 탐색 창에서 인증서 & 비밀을 선택한 다음, 페더레이션 자격 증명 탭을 선택한 후, 자격 증명추가를 선택합니다.

  2. 페더레이션 자격 증명 시나리오 드롭다운 상자에서Azure 리소스를 배포하는 GitHub 작업을 선택합니다.

  3. GitHub Actions 워크플로에 대한 조직리포지토리 지정합니다.

  4. 엔터티 형식의 경우, 환경, 분기, 끌어오기 요청, 또는 태그을 선택하고 값을 지정합니다. 값은 GitHub 워크플로구성과 정확히 일치해야 합니다. 브랜치 및 태그에는 패턴 매칭이 지원되지 않습니다. 푸시형 워크플로가 여러 브랜치 또는 태그에 대해 실행되는 경우, 환경을 지정합니다. 자세한 내용은 예제을 참조하세요.

  5. 페더레이션 자격 증명에 이름을 추가합니다.

  6. 발급자, 대상 그룹주체 식별자 필드는 입력한 값에 따라 자동으로 채워져 있습니다.

  7. 을 선택하고을 추가하여 페더레이션 자격 증명을 설정합니다.

    샘플 값을 보여 주는 자격 증명 추가 창의 스크린샷

GitHub 워크플로에 대한 Microsoft Entra 애플리케이션 등록에서 다음 값을 사용합니다.

  • AZURE_CLIENT_ID 애플리케이션(클라이언트) ID

  • 디렉터리(테넌트) IDAZURE_TENANT_ID

    다음 스크린샷은 애플리케이션 ID 및 테넌트 ID를 복사하는 방법을 보여 줍니다.

    Microsoft Entra 관리 센터에서 애플리케이션 ID 및 테넌트 ID를 복사하는 방법을 보여 주는 스크린샷

  • 구독 ID AZURE_SUBSCRIPTION_ID을 사용하세요. 구독 ID를 가져오려면 azure Portal 구독 열고 구독을 찾습니다. 그런 다음 구독 아이디를 복사합니다.

엔터티 형식 예제

브랜치 예제

메인 브랜치에서 푸시 또는 풀 리퀘스트 이벤트로 트리거되는 워크플로의 경우:

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

분기엔터티 형식 "main"의 GitHub 분기 이름 지정합니다.

환경 예제

"프로덕션"이라는 환경에 연결된 작업의 경우:

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

엔터티 형식환경 및 "프로덕션"의 GitHub 환경 이름을 지정합니다.

태그 예제

예를 들어 "v2"라는 태그에 푸시하여 트리거되는 워크플로의 경우:

on:
  push:
    # Sequence of patterns matched against refs/heads
    branches:
      - main
      - 'mona/octocat'
      - 'releases/**'
    # Sequence of patterns matched against refs/tags
    tags:
      - v2
      - v1.*

엔터티 형식태그 및 "v2"의 GitHub 태그 이름을 지정하십시오.

끌어오기 요청 예제

끌어오기 요청 이벤트에 의해 트리거되는 워크플로의 경우 끌어오기 요청엔터티 형식 지정합니다.

Kubernetes

Microsoft Entra 관리 센터의 앱 등록 환경에서앱 등록을 찾으세요. 왼쪽 탐색 창에서 인증서 & 비밀 을 선택하고, 페더레이션 자격 증명 탭을 선택하고, 자격 증명 추가을 선택합니다.

드롭다운 메뉴에서 Azure 리소스에 액세스하는 Kubernetes 시나리오를 선택합니다.

클러스터 발급자 URL, 네임스페이스, 서비스 계정 이름이름 필드를 입력합니다.

  • 클러스터 발급자 URL은 관리형 클러스터의 OIDC 발급자 URL이거나 자체 관리형 클러스터의 OIDC 발급자 URL입니다.
  • 서비스 계정 이름 Pod에서 실행되는 프로세스에 대한 ID를 제공하는 Kubernetes 서비스 계정의 이름입니다.
  • 네임스페이스 서비스 계정 네임스페이스입니다.
  • 이름 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.

기타 ID 공급자

Microsoft Entra 관리 센터의 앱 등록 기능에서 앱 등록을 찾습니다. 왼쪽 탐색 창에서 인증서 &, 비밀을 선택하고, 연합 자격 증명 탭을 선택하고, 자격 증명추가를 선택합니다.

드롭다운 메뉴에서 기타 발급자 시나리오를 선택합니다.

다음 필드를 지정합니다(예: Google Cloud에서 실행되는 소프트웨어 워크로드 사용).

  • 이름 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.
  • 주체 식별자: 외부 ID 공급자가 발급한 토큰의 sub 클레임과 일치해야 합니다. Google Cloud를 사용하는 이 예제에서, 주체는 사용하려는 서비스 계정의 고유 ID인입니다.
  • 발급자: 외부 ID 공급자가 발급한 토큰의 iss 클레임과 일치해야 합니다. OIDC 검색 사양을 준수하는 URL입니다. Microsoft Entra ID는 이 발급자 URL을 사용하여 토큰의 유효성을 검사하는 데 필요한 키를 가져옵니다. Google Cloud의 경우, 발급자는https://accounts.google.com입니다.

앱에서 연합 신원 자격 증명을 목록에 표시

Microsoft Entra 관리 센터의 앱 등록 탭에서앱 등록을 찾습니다. 왼쪽 탐색 창에서 인증서 & 비밀 선택하고 페더레이션 자격 증명 탭을 선택합니다. 앱에 구성된 페더레이션된 자격 증명이 나열됩니다.

앱에서 페더레이션 ID 자격 증명 삭제

microsoft Entra 관리 센터앱 등록 환경에서 앱 등록을 찾습니다. 왼쪽 탐색 창에서 인증서 & 비밀 선택하고 페더레이션 자격 증명 탭을 선택합니다. 앱에 구성된 페더레이션된 자격 증명이 나열됩니다.

페더레이션 ID 자격 증명을 삭제하려면 자격 증명의 삭제 아이콘을 선택합니다.

유연한 페더레이션 ID 자격 증명 설정(미리 보기)

  1. Microsoft Entra ID로 이동하여 페더레이션 ID 자격 증명을 구성할 애플리케이션을 선택합니다.
  2. 왼쪽 탐색 창에서 인증서 & 비밀선택합니다.
  3. 페더레이션 자격 증명 탭에서 + 자격 증명추가를 선택합니다.
  4. 표시되는 자격 증명 추가 창의 페더레이션 자격 증명 시나리오옆의 드롭다운 메뉴에서, 다른 발급자를 선택합니다.
  5. 클레임과 일치하는 표현식을 입력합니다.

필수 구성 요소

  • Bash 환경을 Azure Cloud Shell에서 사용합니다. 자세한 내용은 Azure Cloud ShellBash에 대한 빠른 시작을 참조하세요.

  • CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치하십시오. Windows 또는 macOS에서 실행하는 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너Azure CLI를 실행하는 방법을 참조하세요.

    • 로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI로 로그인을 참조하세요.

    • 메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI확장 사용을 참조하세요.

    • az version 실행하여 설치된 버전 및 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade실행합니다.

  • Microsoft Entra ID에서 앱 등록 만듭니다. 외부 소프트웨어 워크로드가 대상으로 하는 Azure 리소스에 대한 액세스 권한을 앱에 부여합니다.
  • 다음 단계에서 필요한 앱의 개체 ID, 앱(클라이언트) ID 또는 식별자 URI를 찾습니다. Microsoft Entra 관리 센터 에서 이러한 값을 찾을 수 있습니다. 등록된 애플리케이션 목록으로 이동하여 앱 등록을 선택합니다. 개요->Essentials에서 다음 단계에 필요한 개체 ID, 애플리케이션(클라이언트) ID또는 애플리케이션 ID URI 값을 얻으십시오.
  • 다음 단계에서 필요한 외부 IdP 및 소프트웨어 워크로드에 대한 주체발급자 정보를 가져옵니다.

앱에서 페더레이션 ID 자격 증명 구성

az ad app federated-credential create 명령을 실행하여 앱에 새 페더레이션 ID 자격 증명을 만듭니다.

id 매개 변수는 애플리케이션의 식별자 URI, 애플리케이션 ID 또는 개체 ID를 지정합니다. parameters 매개 변수는 페더레이션 ID 자격 증명을 만들기 위한 매개 변수를 JSON 형식으로 지정합니다.

GitHub Actions 예제

이름은 페더레이션 ID 자격 증명의 이름을 나타냅니다.

발급자는 GitHub OIDC 공급자 https://token.actions.githubusercontent.com/에 대한 경로를 식별합니다. 이 발급자는 Azure 애플리케이션에 의해 신뢰받게 됩니다.

GitHub Actions 워크플로에서 항목이 GitHub 조직, 리포지토리 및 환경을 식별합니다. GitHub Actions 워크플로가 Microsoft ID 플랫폼에 접근해 GitHub 토큰을 액세스 토큰으로 교환을 요청하면, 연합된 ID 자격 증명의 값이 제공된 GitHub 토큰과 대조됩니다. Azure에서 액세스 토큰을 부여하기 전에 요청은 여기에 정의된 조건과 일치해야 합니다.

  • 환경에 연결된 작업의 경우: repo:< Organization/Repository >:environment:< Name >
  • 환경에 연결되지 않은 작업의 경우 워크플로를 트리거하는 데 사용되는 ref 경로를 기반으로 분기/태그에 대한 ref 경로를 포함합니다. repo:< Organization/Repository >:ref:< ref path>. 예를 들어 repo:n-username/ node_express:ref:refs/heads/my-branch 또는 repo:n-username/ node_express:ref:refs/tags/my-tag.
  • 풀 리퀘스트 이벤트로 인해 트리거되는 워크플로의 경우: 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 예제

발급자은 서비스 계정 발급자 URL입니다(관리형 클러스터에 대한 OIDC 발급자 URL 또는 자체 관리형 클러스터에 대한 OIDC 발급자 URL).

주체 서비스 계정에 발급된 토큰의 주체 이름입니다. Kubernetes는 주체 이름에 다음 형식을 사용합니다. system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.

이름은 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.

대상 그룹은 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 이 필드는 필수입니다. 권장되는 값은 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"
    ]
}

기타 ID 공급자 예제

앱에서 페더레이션 ID 자격 증명을 구성하고 다른 외부 ID 공급자와 트러스트 관계를 만들 수 있습니다. 다음 예제에서는 Google Cloud에서 실행되는 소프트웨어 워크로드를 예로 사용합니다.

  • name 나중에 변경할 수 없는 페더레이션 자격 증명의 이름입니다.
  • id: 앱의 개체 ID, 애플리케이션(클라이언트) ID 또는 식별자 URI입니다.
  • subject: 외부 ID 공급자가 발급한 토큰의 sub 클레임과 일치해야 합니다. Google Cloud를 사용하는 이 예제에서 주체 사용하려는 서비스 계정의 고유 ID입니다.
  • issuer: 외부 ID 공급자가 발급한 토큰의 iss 클레임과 일치해야 합니다. OIDC 검색 사양을 준수하는 URL입니다. Microsoft Entra ID는 이 발급자 URL을 사용하여 토큰의 유효성을 검사하는 데 필요한 키를 가져옵니다. Google Cloud의 경우 발급자는https://accounts.google.com입니다.
  • audiences: 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 이 필드는 필수입니다. 권장되는 값은 "api://AzureADTokenExchange"입니다.
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"
    ]
}

앱에서 페더레이션 ID 자격 증명 나열

az ad app federated-credential list 명령을 실행하여 앱에서 페더레이션 ID 자격 증명을 나열합니다.

id 매개 변수는 애플리케이션의 식별자 URI, 애플리케이션 ID 또는 개체 ID를 지정합니다.

az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444

앱에서 페더레이션 ID 자격 증명 가져오기

az ad app federated-credential show 명령을 실행하여 앱에서 페더레이션 ID 자격 증명을 가져옵니다.

id 매개 변수는 애플리케이션의 식별자 URI, 애플리케이션 ID 또는 개체 ID를 지정합니다.

federated-credential-id 페더레이션 ID 자격 증명의 ID 또는 이름을 지정합니다.

az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

앱에서 페더레이션 ID 자격 증명 삭제

az ad app federated-credential delete 명령을 실행하여 앱에서 페더레이션 ID 자격 증명을 제거합니다.

id 매개 변수는 애플리케이션의 식별자 URI, 애플리케이션 ID 또는 개체 ID를 지정합니다.

federated-credential-id 페더레이션 ID 자격 증명의 ID 또는 이름을 지정합니다.

az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

필수 구성 요소

  • 예제 스크립트를 실행하려면 다음 두 가지 옵션이 있습니다.
    • 코드 블록의 오른쪽 위 모서리에 있는 사용해 보기 단추를 사용하여 열 수 있는 Azure Cloud Shell사용합니다.
    • 다음 섹션에 설명된 대로 Azure PowerShell을 사용하여 로컬로 스크립트를 실행합니다.
  • Microsoft Entra ID에서 앱 등록을 만듭니다. 외부 소프트웨어 워크로드가 대상으로 하는 Azure 리소스에 대한 액세스 권한을 앱에 부여합니다.
  • 다음 단계에서 필요한 애플리케이션(클라이언트) ID가 아닌 앱의 개체 ID를 찾습니다. Microsoft Entra 관리 센터 에서 앱의 개체 ID를 찾을 수 있습니다. 등록된 애플리케이션 목록으로 이동하여 앱 등록을 선택합니다. 개요->필수 사항에서 개체 ID을 찾으세요.
  • 다음 단계에서 필요한 외부 IdP 및 소프트웨어 워크로드에 대한 주체발급자 정보를 가져옵니다.

로컬로 Azure PowerShell 구성

Cloud Shell을 사용하는 대신 이 문서에 Azure PowerShell을 로컬로 사용하려면 다음을 수행합니다.

  1. 아직 설치하지 않은 경우 최신 버전의 Azure PowerShell 설치합니다.

  2. Azure에 로그인합니다.

    Connect-AzAccount
    
  3. PowerShellGet의 최신 버전 을 설치합니다.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    다음 단계를 수행하기 위해 이 명령을 실행한 후 현재 PowerShell 세션에서 Exit 작업을 해야 할 수 있습니다.

  4. Az.Resources 모듈의 시험판 버전을 설치하여 이 문서의 페더레이션 ID 자격 증명 작업을 수행합니다.

    Install-Module -Name Az.Resources -AllowPrerelease
    

앱에서 페더레이션 ID 자격 증명 구성

New-AzADAppFederatedCredential cmdlet을 실행하여 애플리케이션에 새 페더레이션 ID 자격 증명을 만듭니다.

GitHub Actions 예제

  • ApplicationObjectId: 이전에 Microsoft Entra ID에 등록한 응용 프로그램(클라이언트) ID가 아닌 앱의 개체 ID입니다.
  • 발급자 GitHub를 외부 토큰 발급자로 식별합니다.
  • 주체 GitHub Actions 워크플로에 대한 GitHub 조직, 리포지토리 및 환경을 식별합니다. GitHub Actions 워크플로가 Microsoft 아이덴티티 플랫폼에 GitHub 토큰을 액세스 토큰으로 교환하도록 요청할 때, 페더레이션 정체성 자격 증명의 값이 제공된 GitHub 토큰과 비교됩니다.
    • 환경에 연결된 작업의 경우: repo:< Organization/Repository >:environment:< Name >
    • 환경에 연결되지 않은 작업의 경우, 워크플로를 트리거하는 데 사용되는 ref 경로를 바탕으로 분기/태그의 ref 경로를 명시합니다. repo:< Organization/Repository >:ref:< ref path>. 예를 들어 repo:n-username/ node_express:ref:refs/heads/my-branch 또는 repo:n-username/ node_express:ref:refs/tags/my-tag.
    • 끌어오기 요청 이벤트로 트리거되는 워크플로의 경우 repo:< Organization/Repository >:pull-request.
  • 이름 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.
  • 대상 그룹 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 이 필드는 필수입니다. 권장되는 값은 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 예제

  • ApplicationObjectId: 이전에 Microsoft Entra ID에 등록한 응용 프로그램(클라이언트) ID가 아닌 앱의 개체 ID입니다.
  • 발급자은 서비스 계정 발급자 URL(관리형 클러스터의 OIDC 발급자 URL 또는 자체 관리형 클러스터의 OIDC 발급자 URL)입니다.
  • 항목은 서비스 계정에 발급된 토큰의 주체 이름입니다. Kubernetes는 주체 이름에 다음 형식을 사용합니다. system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • 이름 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.
  • 대상 그룹 외부 토큰의 aud 클레임에 표시할 수 있는 대상 그룹을 나열합니다.
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'

기타 ID 공급자 예제

다음 매개 변수를 지정합니다(예: Google Cloud에서 실행되는 소프트웨어 워크로드 사용).

  • ObjectID: 이전에 Microsoft Entra ID에 등록한 응용 프로그램(클라이언트) ID가 아닌 앱의 개체 ID입니다.
  • 이름 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.
  • 주체: 외부 ID 공급자가 발급한 토큰의 sub 클레임과 일치해야 합니다. Google Cloud를 사용하는 이 예제에서 항목는 사용하려는 서비스 계정의 고유 ID입니다.
  • 발급자: 외부 ID 공급자가 발급한 토큰의 iss 클레임과 일치해야 합니다. OIDC 검색 사양을 준수하는 URL입니다. Microsoft Entra ID는 이 발급자 URL을 사용하여 토큰의 유효성을 검사하는 데 필요한 키를 가져옵니다. Google Cloud의 경우 발급자는https://accounts.google.com입니다.
  • 대상 그룹: 외부 토큰의 aud 클레임과 일치해야 합니다. 보안상의 이유로 Microsoft Entra ID에 대한 토큰에 고유한 값을 선택해야 합니다. 권장되는 값은 "api://AzureADTokenExchange"입니다.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'

앱에서 페더레이션 ID 자격 증명 나열

Get-AzADAppFederatedCredential cmdlet을 실행하여 애플리케이션에 대한 페더레이션 ID 자격 증명을 나열합니다.

Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential

앱에서 페더레이션 ID 자격 증명 가져오기

Get-AzADAppFederatedCredential cmdlet을 실행하여 애플리케이션에서 ID로 페더레이션 자격 증명을 가져옵니다.

Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId

앱에서 페더레이션 ID 자격 증명 삭제

Remove-AzADAppFederatedCredential cmdlet을 실행하여 애플리케이션에서 페더레이션 ID 자격 증명을 삭제합니다.

Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId

필수 구성 요소

Microsoft Entra ID에서 앱 등록을 생성하세요. 외부 소프트웨어 워크로드가 대상으로 하는 Azure 리소스에 대한 액세스 권한을 앱에 부여합니다.

다음 단계에서 필요한 애플리케이션(클라이언트) ID가 아닌 앱의 개체 ID를 찾습니다. Microsoft Entra 관리 센터에서 앱의 개체 ID를 찾을 수 있습니다. 등록된 애플리케이션 목록으로 이동하여 앱 등록을 선택합니다. 개요->필수 사항에서 개체 ID을 찾습니다.

다음 단계에서 필요한 외부 IdP 및 소프트웨어 워크로드에 대한 주체발급자 정보를 가져옵니다.

Microsoft Graph 엔드포인트()는 애플리케이션에서 federatedIdentityCredentials 를 생성, 업데이트, 삭제할 수 있는 REST API를 제공합니다. Azure Cloud Shell 시작하고 테넌트에 로그인하여 AZ CLI에서 Microsoft Graph 명령을 실행합니다.

앱에서 페더레이션 ID 자격 증명 구성

GitHub Actions

다음 메서드를 실행하여 앱에서 새 페더레이션 ID 자격 증명 만들 있습니다(앱의 개체 ID로 지정됨). issuer GitHub를 외부 토큰 발급자로 식별합니다. subject GitHub Actions 워크플로에 대한 GitHub 조직, 리포지토리 및 환경을 식별합니다. GitHub Actions 워크플로가 Microsoft 식별 플랫폼에 액세스 토큰으로 GitHub 토큰을 교환하도록 요청하면, 연합 신원 자격 증명의 값이 제공된 GitHub 토큰과 대조됩니다.

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"]}'

그리고 다음과 같은 응답을 받습니다.

{
  "@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 애플리케이션의 이름입니다.
  • issuer: GitHub OIDC 공급자에 대한 경로: https://token.actions.githubusercontent.com. 이 발급자는 귀하의 Azure 애플리케이션이 신뢰할 수 있게 됩니다.
  • subject: Azure에서 액세스 토큰을 부여하기 전에 요청은 여기에 정의된 조건과 일치해야 합니다.
    • 환경에 연결된 작업의 경우: repo:< Organization/Repository >:environment:< Name >
    • 환경과 연결되지 않은 작업의 경우, 워크플로를 트리거하는 데 사용되는 참조 경로에 기반하여 분기/태그에 대한 참조 경로를 포함합니다. repo:< Organization/Repository >:ref:< ref path>. 예를 들어 repo:n-username/ node_express:ref:refs/heads/my-branch 또는 repo:n-username/ node_express:ref:refs/tags/my-tag.
    • 풀 리퀘스트 이벤트로 트리거되는 워크플로의 경우: repo:< Organization/Repository >:pull-request.
  • audiences 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 이 필드는 필수입니다. 권장되는 값은 "api://AzureADTokenExchange"입니다.

Kubernetes 예제

다음 메서드를 실행하여 앱에서 페더레이션 ID 자격 증명을 구성하고 Kubernetes 서비스 계정과 트러스트 관계를 만듭니다. 다음 매개 변수를 지정합니다.

  • issuer 서비스 계정 발급자 URL(관리형 클러스터에 대한 OIDC 발급자 URL 또는 자체 관리형 클러스터의 OIDC 발급자 URL)입니다.
  • subject 서비스 계정에 발급된 토큰의 주체 이름입니다. Kubernetes는 주체 이름에 다음 형식을 사용합니다. system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • name 나중에 변경할 수 없는 페더레이션 자격 증명의 이름입니다.
  • audiences 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 이 필드는 필수입니다. 권장되는 값은 "api://AzureADTokenExchange"입니다.
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"]}'

그리고 다음과 같은 응답을 받습니다.

{
  "@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"
}

기타 ID 공급자 예제

다음 메서드를 실행하여 앱에서 페더레이션 ID 자격 증명을 구성하고 외부 ID 공급자와 트러스트 관계를 만듭니다. 다음 매개 변수를 지정합니다(예: Google Cloud에서 실행되는 소프트웨어 워크로드 사용).

  • 이름은 페더레이션 자격 증명의 이름으로, 나중에 변경할 수 없습니다.
  • ObjectID: 이전에 Microsoft Entra ID에 등록한 응용 프로그램(클라이언트) ID가 아닌 앱의 개체 ID입니다.
  • 주체: 외부 신원 제공자가 발급한 토큰의 sub 클레임과 일치해야 합니다. Google Cloud를 사용하는 이 예제에서 주체와은 사용자가 사용하려는 서비스 계정의 고유 ID입니다.
  • 발급자: 외부 ID 공급자가 발급한 토큰의 iss 클레임과 일치해야 합니다. OIDC 검색 사양을 준수하는 URL입니다. Microsoft Entra ID는 이 발급자 URL을 사용하여 토큰의 유효성을 검사하는 데 필요한 키를 가져옵니다. Google Cloud의 경우 발급자은 "https://accounts.google.com"";입니다.
  • 대상 그룹 외부 토큰에 표시할 수 있는 대상 그룹을 나열합니다. 이 필드는 필수입니다. 권장되는 값은 "api://AzureADTokenExchange"입니다.
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"]}'

그리고 다음과 같은 응답을 받습니다.

{
  "@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"
}

앱에서 페더레이션 ID 자격 증명 나열

다음 메서드를 실행하여 앱의 개체 ID로 지정된 앱의 페더레이션 ID 자격 증명 목록 를 나열합니다.

az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'

다음과 유사한 응답이 표시됩니다.

{
  "@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"
    }
  ]
}

앱에서 페더레이션 ID 자격 증명 가져오기

다음 메서드를 실행하여 앱(앱의 개체 ID로 지정됨)에 대한 페더레이션 ID 자격 증명을 가져올 수 있습니다.

az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

다음과 유사한 응답이 표시됩니다.

{
  "@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"
    }
}

앱에서 페더레이션 ID 자격 증명 삭제

다음 메서드를 실행하여 앱에서 페더레이션 ID 자격 증명 삭제합니다(앱의 개체 ID로 지정됨).

az rest -m DELETE  -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

참조

  • Kubernetes에 워크로드 ID 페더레이션을 사용하는 방법을 알아보려면 Microsoft Entra Workload ID for Kubernetes 오픈 소스 프로젝트를 참조하세요.
  • GitHub Actions에 워크로드 ID 페더레이션을 사용하는 방법을 알아보려면 액세스 토큰가져오도록 GitHub Actions 워크플로 구성을 참조하세요.
  • GitHub Actions 설명서 읽어 Microsoft ID 공급자로부터 액세스 토큰을 가져오고 Azure 리소스에 액세스하도록 GitHub Actions 워크플로를 구성하는 방법에 대해 자세히 알아보세요.
  • 자세한 내용은 Microsoft Entra ID가 OAuth 2.0 클라이언트 자격 증명 부여 및 다른 IdP에서 발급한 클라이언트 어설션을 사용하여 토큰을 가져오는 방법을 참조하세요.
  • 외부 ID 공급자가 만든 JWT의 필수 형식에 대한 정보는 어설션 형식을 참조하십시오.