다음을 통해 공유


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

유연한 페더레이션 ID 자격 증명은 기존 페더레이션 ID 자격 증명 모델을 향상시키는 Microsoft Entra Workload ID의 고급 기능입니다. 이 문서에서는 이러한 자격 증명의 작동 방식, 이점 및 현재 제한 사항에 대해 설명합니다.

유연한 페더레이션 ID 자격 증명을 사용하면 들어오는 subject 클레임을 일치시키고 사용자 지정 클레임을 포함할 수 있도록 제한된 식 언어를 사용할 수 있으므로 워크로드 ID 페더레이션에서 관리 오버헤드 및 주소 확장 제한을 줄일 수 있습니다. Microsoft Entra를 사용하여 외부 워크로드에 대한 인증을 간소화하려는 경우 이 가이드에서는 이 강력한 기능을 사용하는 데 필요한 인사이트와 단계를 제공합니다.

유연한 페더레이션 ID 자격 증명을 사용하는 이유는 무엇인가요?

작업 부하 ID 페더레이션 내에서 페더레이션 ID 자격 증명의 현재 동작은 정의된 , 가 Microsoft Entra로 전송된 토큰에 포함된 , 과 비교될 때 정확한 일치가 요구됩니다. 지정된 애플리케이션 또는 사용자 할당 관리 ID에 대한 현재 페더레이션 ID 자격 증명 20개 제한과 결합하면 확장 제한에 빠르게 도달할 수 있습니다.

유연한 페더레이션 ID 자격 증명은 들어오는 subject 클레임과 일치할 때 제한된 식 언어를 사용할 수 있도록 하여 기존 페더레이션 ID 자격 증명 모델을 확장합니다. 사용자 지정 클레임 중 특정 허용된 클레임을 페더레이션 ID 자격 증명에 포함할 수 있도록 설정하여, 페더레이션 ID 자격 증명 권한 부여 모델을 subject, issueraudience 클레임 이상으로 확장하는 데 사용할 수 있습니다.

유연한 페더레이션 ID 자격 증명은 Microsoft Entra를 사용하여 외부 워크로드를 인증하려고 할 때 관리 오버헤드를 줄이고 워크로드 ID 페더레이션 구현의 확장 제한을 해결하는 데 도움이 될 수 있습니다.

유연한 페더레이션 ID 자격 증명은 어떻게 작동합니까?

유연한 페더레이션 ID 자격 증명은 페더레이션 ID 자격 증명에서 제공하는 기준 기능을 변경하지 않습니다. 이러한 트러스트 관계는 애플리케이션에서 신뢰할 수 있어야 하는 외부 IdP의 토큰을 나타내는 데 계속 사용됩니다. 대신, 이전에는 여러 페더레이션 ID 자격 증명이 필요했던 시나리오를 단일 유연한 페더레이션 ID 자격 증명으로 관리할 수 있도록 설정하여, 페더레이션 ID 자격 증명의 기능을 확장합니다. 몇 가지 예는 다음과 같습니다.

  • 다양한 워크플로가 있는 GitHub 리포지토리는 각각 다른 분기에서 실행되거나 분기 간에 사용됩니다. 이전에는 워크플로를 실행할 수 있는 각 분기에 고유한 페더레이션 ID 자격 증명이 필요했습니다. 유연한 페더레이션 ID 자격 증명을 사용하면 이 시나리오를 단일 페더레이션 ID 자격 증명으로 관리할 수 있습니다.
  • Terraform 클라우드 run_phases 계획은 각각 고유한 페더레이션 ID 자격 증명을 필요로 합니다. 유연한 페더레이션 ID 자격 증명을 사용하면 단일 유연한 페더레이션 ID 자격 증명으로 관리할 수 있습니다.
  • GitHub의 사용자 지정 job_workflow_ref 클레임에 와일드카드를 사용할 수 있는 재사용 가능한 GitHub Actions 워크플로입니다.

메모

유연한 페더레이션 ID 자격 증명 지원은 현재 GitHub, GitLab 및 Terraform Cloud에서 발급한 토큰과 일치하도록 제공됩니다. 이 지원은 현재 애플리케이션 개체에 구성된 페더레이션 ID 자격 증명에 대해서만 존재합니다. Microsoft Graph 또는 Azure Portal을 통해서만 유연한 페더레이션 ID 자격 증명을 만들고 관리할 수 있습니다.

유연한 페더레이션 ID 자격 증명 언어 구조

유연한 페더레이션 ID 자격 증명 식은 클레임 조회, 연산자 및 비교의 세 부분으로 구성됩니다. 각 파트에 대한 분석은 다음 표를 참조하세요.

이름 묘사
클레임 조회 클레임 조회는 claims[‘<claimName>’] 패턴을 따라야 합니다. claims['sub']
운영자 연산자 부분은 클레임 조회 및 비교 대상과 단일 공백으로 구분된 연산자 이름이어야 합니다. matches
비교 대상 비교 대상이란 조회에 지정된 클레임과 비교하려는 값을 의미합니다. 이 값은 반드시 작은따옴표 안에 포함되어야 합니다. 'repo:contoso/contoso-repo:ref:refs/heads/*'

유동적인 페더레이션 ID 자격 증명 표현의 예는 다음 JSON 객체와 같습니다.

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

Microsoft Graph를 통해 페더레이션 ID 자격 증명 설정

유연한 페더레이션 ID 자격 증명 기능을 수용하기 위해 새 claimsMatchingExpression 속성으로 federatedIdentityCredentials 리소스를 확장합니다. 이 외에도 subject 속성은 이제 null을 허용합니다. claimsMatchingExpressionsubject 속성은 상호 배타적이므로 페더레이션 ID 자격 증명 내에서 둘 다 정의할 수 없습니다.

  • audiences: 외부 토큰에 표시할 수 있는 대상 그룹입니다. 이 필드는 필수이며 Microsoft Entra ID에 api://AzureADTokenExchange으로 설정해야 합니다. 들어오는 토큰의 aud 클레임에서 Microsoft ID 플랫폼이 수락해야 하는 내용을 설명합니다. 이 값은 외부 ID 공급자의 Microsoft Entra ID를 나타내며 ID 공급자 간에 고정된 값이 없습니다. 이 토큰의 대상 그룹 역할을 하려면 IdP에 새 애플리케이션 등록을 만들어야 할 수 있습니다.
  • issuer: 외부 ID 공급자의 URL입니다. 교환되는 외부 토큰의 발급자 요구 사항과 일치해야 합니다.
  • subject: 외부 ID 공급자 내의 외부 소프트웨어 워크로드 식별자입니다. 대상 그룹 값과 마찬가지로 각 IdP는 고유한 형식을 사용하므로 고정된 형식이 없습니다. 때로는 GUID, 때로는 콜론으로 구분된 식별자, 때로는 임의의 문자열을 사용합니다. 이 값은 Microsoft Entra ID에 표시되는 토큰 내의 sub 클레임과 일치해야 합니다. subject 정의된 경우 claimsMatchingExpression null로 설정해야 합니다.
  • name: 자격 증명을 식별하는 고유 문자열입니다. 이 속성은 대체 키로, 이 값을 통해 GETUPSERT 작업을 수행하여 페더레이션 ID 자격 증명을 참조할 수 있습니다.
  • claimsMatchingExpression: valuelanguageVersion두 개의 속성을 포함하는 새 복합 형식입니다. 값은 식을 정의하는 데 사용되며, languageVersion 사용 중인 유연한 페더레이션 ID 자격 증명 식 언어(FFL)의 버전을 정의하는 데 사용됩니다. languageVersion 항상 1로 설정해야 합니다. claimsMatchingExpression 정의된 경우 subject null로 설정해야 합니다.

유연한 페더레이션 식별자 자격 표현 언어 기능성

유연한 페더레이션 ID 자격 증명은 현재 사용 가능한 발급자에서 몇 가지 연산자의 사용을 지원합니다. 작은따옴표는 유연한 연합 ID 자격 증명 표현 언어 내에서 이스케이프 문자로 해석됩니다.

연산자 묘사 본보기
matches 지정된 클레임에 대해 단일 문자(?표시) 및 다중 문자(*로 나옴) 와일드카드 일치를 사용할 수 있습니다. “claims[‘sub’] matches ‘repo:contoso/contoso-repo:ref:refs/heads/*’”
“claims[‘sub’] matches ‘repo:contoso/contoso-repo-*:ref:refs/heads/????’”
eq 지정된 클레임에 대해 명시적으로 일치시키는 데 사용됩니다. “claims[‘sub’] eq ‘repo:contoso/contoso-repo:ref:refs/heads/main’”
and 여러 주장에 대한 식을 결합하기 위한 부울 연산자 “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’”

플랫폼별 발급자 URL, 지원되는 클레임 및 연산자

사용 중인 플랫폼에 따라 다른 발급자 URL, 클레임 및 연산자를 구현해야 합니다. 다음 탭을 사용하여 선택한 플랫폼을 선택합니다.

지원되는 발급자 URL: https://token.actions.githubusercontent.com

클레임별로 지원되는 클레임 및 연산자:

  • 클레임 sub은 연산자 eqmatches를 지원합니다.
  • 클레임 job_workflow_ref은 연산자 eqmatches를 지원합니다.

Azure CLI, Azure PowerShell 및 Terraform 공급자

명시적 유연한 페더레이션 ID 자격 증명 지원은 Azure CLI, Azure PowerShell 또는 Terraform 공급자 내에 아직 존재하지 않습니다. 이러한 도구를 사용하여 유연한 페더레이션 ID 자격 증명을 구성하려고 하면 오류가 표시됩니다. 또한 Microsoft Graph 또는 Azure Portal을 통해 유연한 페더레이션 ID 자격 증명을 구성하고 이러한 도구를 사용하여 유연한 페더레이션 ID 자격 증명을 읽으려고 하면 오류가 표시됩니다.

Azure CLI의 az rest 메서드를 사용하여 유연한 페더레이션 ID 자격 증명 만들기 및 관리를 위한 REST API 요청을 만들 수 있습니다.

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