다음을 통해 공유


페더레이션 ID 자격 증명에 대한 중요한 고려 사항 및 제한 사항

이 문서에서는 Microsoft Entra 앱 및 사용자가 할당한 관리 ID의 페더레이션 ID 자격 증명에 대한 중요한 고려 사항 및 제한 사항에 대해 설명합니다.

페더레이션 ID 자격 증명으로 사용하도록 설정된 시나리오에 대한 자세한 내용은 워크로드 ID 페더레이션 개요를 참조하세요.

일반 페더레이션 ID 자격 증명 고려 사항

적용 대상: 애플리케이션 및 사용자가 할당한 관리 ID

앱 등록을 만들고 비밀 또는 인증서를 추가할 수 있는 권한이 있는 사용자는 누구나 페더레이션 ID 자격 증명을 앱에 추가할 수 있습니다. 그러나 Microsoft Entra 관리 센터의 > 블레이드에서 사용자가 애플리케이션을 등록할 수 있음 스위치가 아니요로 설정된 경우 앱 등록을 만들거나 페더레이션된 ID 자격 증명을 구성할 수는 없습니다. 본인을 대신하여 페더레이션 ID 자격 증명을 구성할 관리자(애플리케이션 관리자 또는 애플리케이션 소유자 역할의 누군가)를 찾습니다.

페더레이션 ID 자격 증명은 Microsoft Entra 테넌트 서비스 주체 개체 할당량을 사용하지 않습니다.

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

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

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

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

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

    Important

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

    Important

    주체 설정에 잘못된 외부 워크로드 정보를 실수로 추가하면 페더레이션 ID 자격 증명이 오류 없이 성공적으로 만들어집니다. 토큰 교환이 실패할 때까지 오류가 명확해지지 않습니다.

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

  • 이름은 페더레이션 ID 자격 증명의 고유 식별자입니다. 필수입니다. 이 필드는 문자 수 3~120자로 제한되고 URL 친화적이어야 합니다. 영숫자, 대시 또는 밑줄 문자가 지원되며 첫 번째 문자는 영숫자만 사용해야 합니다. 만든 후에는 변경이 불가능합니다.

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

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

지원되지 않는 지역(사용자가 할당한 관리 ID)

적용 대상: 사용자가 할당한 관리 ID

현재 다음 지역에서 만들어진 사용자 할당 관리 ID에서는 페더레이션된 ID 사용자 인증 정보 만들기가 지원되지 않습니다.

  • 말레이시아 남부
  • 스페인 중부
  • 대만 북부
  • 대만 북서부

이러한 지역에서 사용자 할당 ID에 대한 페더레이션 ID 자격 증명 만들기 지원이 점진적으로 롤아웃됩니다. 페더레이션 ID 자격 증명을 사용해야 하는 이 지역의 리소스는 지원되는 지역에서 만든 사용자가 할당한 관리 ID를 활용하여 수행할 수 있습니다.

지원되는 서명 알고리즘 및 발급자

적용 대상: 애플리케이션 및 사용자가 할당한 관리 ID

RS256 알고리즘을 사용하여 서명된 토큰을 제공하는 발급자만 워크로드 ID 페더레이션을 사용하는 토큰 교환을 지원합니다. 다른 알고리즘으로 서명된 토큰 교환은 작동할 수 있지만 테스트되지는 않았습니다.

페더레이션 자격 증명 변경 내용이 전파되는 시간

적용 대상: 애플리케이션 및 사용자가 할당한 관리 ID

페더레이션 ID 자격 증명이 처음 구성된 후 지역 전체에 전파되는 데는 시간이 걸립니다. 페더레이션 ID 자격 증명을 구성한 후 몇 분 후에 생성된 토큰 요청은 캐시가 이전 데이터로 디렉터리에 채워지기 때문에 실패할 수 있습니다. 이 기간 동안 AADSTS70021: No matching federated identity record found for presented assertion. 오류 메시지와 함께 권한 부여 요청이 실패할 수 있습니다

이 문제를 방지하려면 인증 서비스의 모든 노드에서 복제가 완료되도록 토큰을 요청하기 전에 페더레이션 ID 자격 증명을 추가한 후 잠시 기다립니다. 토큰 요청에 대한 다시 시도 논리를 추가하는 것도 좋습니다. 토큰을 성공적으로 가져온 후에도 모든 요청에 대해 다시 시도를 수행해야 합니다. 결과적으로 데이터가 완전히 복제된 후에는 오류 비율이 삭제됩니다.

동시 업데이트는 지원되지 않습니다(사용자가 할당한 관리 ID)

적용 대상: 사용자가 할당한 관리 ID

동일한 사용자가 할당한 관리 ID에서 여러 페더레이션 ID 자격 증명을 만들면 동시성 검색 논리가 동시에 트리거되어 요청이 409 충돌 HTTP 상태 코드와 함께 실패합니다.

Azure용 Terraform 공급자(Resource Manager) 버전 3.40.0에는 동시가 아닌 순차적으로 여러 페더레이션된 ID 자격 증명을 만드는 업데이트가 도입되었습니다. 3.40.0 이전 버전은 여러 페더레이션된 ID를 만들 때 파이프라인에서 오류가 발생할 수 있습니다. 여러 페더레이션된 ID 자격 증명을 순차적으로 만들 수 있도록 Azure용 Terraform 공급자(Resource Manager) v3.40.0 이상을 사용하는 것이 좋습니다.

자동화 또는 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 동일한 부모 ID 아래에 페더레이션 ID 자격 증명을 만드는 경우 페더레이션 자격 증명을 순차적으로 만듭니다. 서로 다른 관리 ID에서 페더레이션 ID 자격 증명을 제한 없이 병렬로 만들 수 있습니다.

페더레이션된 ID 자격 증명이 루프에서 프로비전되는 경우 "mode": "serial"을 설정하여 직렬로 프로비전할 수 있습니다.

dependsOn 속성을 사용하여 여러 개의 새 페더레이션된 ID 자격 증명을 순차적으로 프로비전할 수도 있습니다. 다음 ARM 템플릿(Azure Resource Manager 템플릿) 예시에서는 dependsOn 속성을 사용하여 사용자가 할당한 관리 ID에 3개의 새로운 페더레이션 ID 자격 증명을 순차적으로 만듭니다.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
        "userAssignedIdentities_parent_uami_name": { 
            "defaultValue": "parent_uami", 
            "type": "String" 
        } 
    }, 
    "variables": {}, 
    "resources": [ 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[parameters('userAssignedIdentities_parent_uami_name')]", 
            "location": "eastus" 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic01')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic01", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic02')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic01')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic02", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic03')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic02')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic03", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        } 
    ] 
} 

Azure policy

적용 대상: 애플리케이션 및 사용자가 할당한 관리 ID

다음 ARM 템플릿 예제에서와 같이 거부 Azure Policy를 사용할 수 있습니다.

{ 
"policyRule": { 
            "if": { 
                "field": "type", 
                "equals": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials" 
            }, 
            "then": { 
                "effect": "deny" 
            } 
        } 
}

스로틀 제한

적용 대상: 사용자가 할당한 관리 ID

다음 표에서는 사용자가 할당한 관리 ID REST APIS에 대한 요청 한도를 설명합니다. 제한 한도를 초과하면 HTTP 429 오류가 발생합니다.

연산 Microsoft Entra 테넌트당 초당 요청 수 구독별 초당 요청 수 리소스별 초당 요청 수
만들기 또는 업데이트 요청 10 2 0.25
Get 요청 30 10 0.5
리소스 그룹별 목록 또는 구독별 목록 요청 15 5 0.25
삭제 요청 10 2 0.25

Errors

적용 대상: 애플리케이션 및 사용자가 할당한 관리 ID

페더레이션 ID 자격 증명을 만들기, 업데이트, 가져오기, 나열 또는 삭제할 때 다음 오류 코드가 반환될 수 있습니다.

HTTP 코드 오류 메시지 설명
405 요청 형식이 예기치 않은 경우: 페더레이션 ID 자격 증명에 대한 지원이 사용하도록 설정되지 않았습니다. 이 지역에서는 페더레이션 ID 자격 증명을 사용할 수 없습니다. "현재 지원되는 지역"을 참조하세요.
400 페더레이션된 ID 자격 증명에는 정확히 1명의 대상 그룹이 있어야 합니다. 현재 페더레이션 ID 자격 증명은 단일 대상 그룹인 "api://AzureADTokenExchange"를 지원합니다.
400 HTTP 본문의 페더레이션 ID 자격 증명에는 빈 속성이 있습니다. 모든 페더레이션 ID 자격 증명 속성은 필수 항목입니다.
400 페더레이션 ID 자격 증명 이름 '{ficName}'이(가) 잘못되었습니다. 영숫자, 대시, 밑줄, 3~120개 이하 기호 첫 번째 기호는 영숫자입니다.
404 부모 사용자가 할당한 ID가 없습니다. 페더레이션 ID 자격 증명 리소스 경로에서 사용자가 할당한 ID 이름을 확인하세요.
400 이 관리 ID에 대한 발급자 및 주체 조합이 이미 있습니다. 제약 조건입니다. 기존 페더레이션 ID 자격 증명을 찾기 위해 사용자가 할당한 ID와 연결된 모든 페더레이션 ID 자격 증명을 나열합니다.
409 충돌 동일한 사용자가 할당한 ID 아래의 페더레이션 ID 자격 증명 리소스에 대한 동시 쓰기 요청이 거부되었습니다.