유연한 페더레이션 ID 자격 증명(미리 보기)
유연한 페더레이션 ID 자격 증명은 기존 페더레이션 ID 자격 증명 모델을 향상시키는 Microsoft Entra Workload ID의 고급 기능입니다. 이 문서에서는 이러한 자격 증명의 작동 방식, 이점 및 현재 제한 사항에 대해 설명합니다.
유연한 페더레이션 ID 자격 증명을 사용하면 들어오는 subject
클레임을 일치시키고 사용자 지정 클레임을 포함할 수 있도록 제한된 식 언어를 사용할 수 있으므로 워크로드 ID 페더레이션에서 관리 오버헤드 및 주소 확장 제한을 줄일 수 있습니다. Microsoft Entra를 사용하여 외부 워크로드에 대한 인증을 간소화하려는 경우 이 가이드에서는 이 강력한 기능을 사용하는 데 필요한 인사이트와 단계를 제공합니다.
유연한 페더레이션 ID 자격 증명을 사용하는 이유는 무엇인가요?
작업 부하 ID 페더레이션 내에서
유연한 페더레이션 ID 자격 증명은 들어오는 subject
클레임과 일치할 때 제한된 식 언어를 사용할 수 있도록 하여 기존 페더레이션 ID 자격 증명 모델을 확장합니다. 사용자 지정 클레임 중 특정 허용된 클레임을 페더레이션 ID 자격 증명에 포함할 수 있도록 설정하여, 페더레이션 ID 자격 증명 권한 부여 모델을 subject
, issuer
및 audience
클레임 이상으로 확장하는 데 사용할 수 있습니다.
유연한 페더레이션 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을 허용합니다.
claimsMatchingExpression
및 subject
속성은 상호 배타적이므로 페더레이션 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
: 자격 증명을 식별하는 고유 문자열입니다. 이 속성은 대체 키로, 이 값을 통해 GET 및 UPSERT 작업을 수행하여 페더레이션 ID 자격 증명을 참조할 수 있습니다. -
claimsMatchingExpression
:value
및languageVersion
두 개의 속성을 포함하는 새 복합 형식입니다. 값은 식을 정의하는 데 사용되며,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
은 연산자eq
과matches
를 지원합니다. - 클레임
job_workflow_ref
은 연산자eq
및matches
를 지원합니다.
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}}"
관련 콘텐츠
- 유연한 페더레이션 ID 자격 증명 구현
- 외부 ID 공급자를 신뢰하도록 사용자 할당 관리 ID 구성
- 앱 등록에서 페더레이션 ID 자격 증명을
생성, 삭제, 가져오기 또는 업데이트하는 방법입니다. - GitHub Actions 설명서 읽어 Microsoft ID 공급자로부터 액세스 토큰을 가져오고 Microsoft Entra로 보호되는 리소스에 액세스하도록 GitHub Actions 워크플로를 구성하는 방법에 대해 자세히 알아보세요.
- 어설션 형식에 대해 알아봅니다.