

# OIDC 페더레이션
OIDC 페더레이션

워크플로를 사용하여 Amazon S3 및 DynamoDB에 액세스하는 GitHub Actions와 같은 AWS 리소스에 액세스하는 애플리케이션을 구축하는 상황을 가정해 보겠습니다.

이러한 워크플로를 사용할 때는 AWS 액세스 키로 서명해야 하는 AWS 서비스에 요청을 하게 됩니다. 하지만 AWS 자격 증명을 AWS 외부의 애플리케이션에 장기적으로 저장하지 **않는** 것을 **강력하게** 권장합니다. 대신 OIDC 페더레이션을 사용하여 필요할 때 임시 AWS 보안 자격 증명을 동적으로 요청하도록 애플리케이션을 구성합니다. 제공되는 임시 자격 증명은 애플리케이션에 필요한 작업을 수행하는 데 필요한 권한만 있는 AWS 역할에 매핑됩니다.

OIDC 페더레이션을 사용하면 사용자 정의 로그인 코드를 생성하거나 자신의 사용자 보안 인증을 관리할 필요가 없습니다. 대신, GitHub Actions 또는 기타 [OIDC(OpenID Connect)](http://openid.net/connect/)와 호환되는 IdP와 같은 애플리케이션에서 OIDC를 사용하여 AWS에 인증할 수 있습니다. 이러한 애플리케이션은 JWT(JSON 웹 토큰)라는 인증 토큰을 수신한 후 이 토큰을 AWS에서 임시 보안 자격 증명으로 교환하여 AWS 계정의 특정 리소스를 사용할 수 있는 권한이 있는 IAM 역할에 매핑합니다. IdP를 사용하면 애플리케이션에 장기 보안 자격 증명을 포함하거나 배포할 필요가 없으므로 AWS 계정을(를) 안전하게 유지할 수 있습니다.

OIDC 페더레이션은 M2M(Machine-to-Machine) 인증(예: CI/CD 파이프라인, 자동 스크립트, 서버리스 애플리케이션)과 인간 사용자 인증을 모두 지원합니다. 사용자 가입, 로그인, 사용자 프로필을 관리해야 하는 인간 사용자 인증 시나리오의 경우 [Amazon Cognito](https://aws.amazon.com/cognito/)를 ID 브로커로 사용하는 것이 좋습니다. OIDC에서 Amazon Cognito를 사용하는 방법에 대한 자세한 내용은 [모바일 앱용 Amazon Cognito](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito) 섹션을 참조하세요.

**참고**  
OpenID Connect(OIDC) ID 제공업체에서 발행하는 JWT(JSON 웹 토큰)에는 토큰이 만료되는 시기를 지정하는 `exp` 클레임에 만료 시간이 포함되어 있습니다. IAM은 [OpenID Connect(OIDC) Core 1.0 표준](https://openid.net/specs/openid-connect-core-1_0.html)에서 허용하는 대로 클럭 스큐를 고려하여 JWT에 지정된 만료 시간 이후 5분의 기간을 제공합니다. 즉, 만료 시간 이후 5분 이내에 IAM이 수신한 OIDC JWT가 추가 평가 및 처리를 위해 승인됩니다.

**Topics**
+ [

## OIDC 페더레이션 관련 추가 리소스
](#id_roles_providers_oidc_resources)
+ [

# IAM에서 OIDC(OpenID Connect) ID 공급자 생성
](id_roles_providers_create_oidc.md)
+ [

# OpenID Connect ID 공급자에 대한 지문 얻기
](id_roles_providers_create_oidc_verify-thumbprint.md)
+ [

# 공유 OIDC 공급자의 ID 공급자 제어
](id_roles_providers_oidc_secure-by-default.md)

## OIDC 페더레이션 관련 추가 리소스


다음 리소스는 OIDC 페더레이션에 대해 자세히 알아보는 데 도움이 됩니다.
+ [Amazon Web Services에서 OpenID Connect를 구성](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)하여 GitHub 워크플로 내에서 OpenID Connect 사용
+ Android용 Amplify 라이브러리 가이드의[Amazon Cognito 아이덴티티](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/)와 Swift용 Amplify 라이브러리 가이드의 [Amazon Cognito 아이덴티티](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/)를 참조하십시오.
+ *AWS 보안 블로그*의 [AWS 리소스에 대한 액세스 권한을 부여할 때 외부 ID를 사용하는 방법](https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/)은 교차 계정 액세스 및 외부 ID 페더레이션을 안전하게 구성하는 방법에 대한 지침을 제공합니다.

# IAM에서 OIDC(OpenID Connect) ID 공급자 생성
OIDC ID 공급자 생성

*IAM OIDC 자격 증명 공급자*는 IAM의 엔터티로서 Google이나 Salesforce와 같은 [OpenID Connect](http://openid.net/connect/)(OIDC) 표준을 지원하는 외부 자격 증명 공급자(IdP) 서비스를 설명합니다. IAM OIDC 자격 증명 공급자는 OIDC 호환 IdP와 AWS 계정 간에 신뢰를 구축하려 할 때 사용합니다. 예를 들어 AWS 리소스에 액세스하는 데 필요한 모바일 앱이나 웹 애플리케이션을 개발하면서 사용자 지정 로그인 코드를 생성하거나 자신의 사용자 자격 증명을 관리하지 않을 때 유용합니다. 이 시나리오에 대한 자세한 내용은 [OIDC 페더레이션](id_roles_providers_oidc.md)를 참조하세요.

AWS Management Console, AWS Command Line Interface, Tools for Windows PowerShell 또는 IAM API 호출을 사용하여 IAM OIDC 자격 증명 공급자를 생성하고 관리할 수 있습니다.

IAM OIDC 자격 증명 공급자를 생성한 후 1개 이상의 IAM 역할을 생성해야 합니다. 역할은 AWS의 자격 증명으로서 자신만의 고유한 자격 증명이 없지만(사용자가 그러하듯이), 이 컨텍스트에서는 조직의 IdP에서 인증한 OIDC 페더레이션 보안 주체에게 역할이 동적으로 할당됩니다. 그 역할은 조직의 IdP가 AWS에 액세스하기 위해 임시 보안 자격 증명을 요청할 수 있도록 허용합니다. 역할에 할당된 정책은 사용자가 AWS에서 허용된 작업이 무엇인지 결정합니다. 서드 파티 자격 증명 공급자에 대한 역할을 생성하려면 [타사 ID 공급자에 대한 역할 생성](id_roles_create_for-idp.md) 섹션을 참조하세요.

**중요**  
`oidc-provider` 리소스를 지원하는 작업에 대해 ID 기반 정책을 구성하는 경우. IAM은 지정된 경로를 포함한 전체 OIDC ID 공급자 URL을 평가합니다. OIDC ID 공급자 URL에 경로가 있는 경우 그 경로를 `oidc-provider`ARN에 `Resource` 요소 값으로 포함해야 합니다. URL 도메인에 슬래시와 와일드카드(`/*`)를 추가할 수도 있고 URL 경로의 어느 지점에서든 와일드카드 문자(`*` 및`?`)를 사용할 수도 있습니다. 요청의 OIDC ID 공급자 URL이 정책의 `Resource` 요소에 설정된 값과 일치하지 않는 경우 요청은 실패합니다.

IAM OIDC 페더레이션과 관련된 일반적인 문제를 해결하려면 AWS re:Post의 [OIDC 관련 오류 해결](https://repost.aws/knowledge-center/iam-oidc-idp-federation)을 참조하세요.

**Topics**
+ [

## 필수 조건: 자격 증명 공급자의 구성 검증
](#manage-oidc-provider-prerequisites)
+ [

## OIDC 공급자 생성 및 관리(콘솔)
](#manage-oidc-provider-console)
+ [

## IAM OIDC 자격 증명 공급자 생성 및 관리(AWS CLI)
](#manage-oidc-provider-cli)
+ [

## OIDC 자격 증명 공급자 생성 및 관리(AWS API)
](#manage-oidc-provider-api)

## 필수 조건: 자격 증명 공급자의 구성 검증
사전 조건

IAM OIDC 자격 증명 공급자를 생성하려면 IdP에서 다음 정보를 가져와야 합니다. OIDC 공급자 구성 정보를 얻는 방법에 대한 자세한 정보는 해당 IdP 설명서를 참조하세요.

1. 공개적으로 사용 가능한 OIDC 자격 증명 공급자 URL을 확인하세요. URL은 https://로 시작해야 합니다. OIDC 표준에 따라 경로 구성 요소는 허용되지만 쿼리 파라미터는 허용되지 않습니다. 일반적으로 URL은 https://server.example.org 또는 https://example.com 같은 하나의 호스트 이름으로만 구성됩니다. URL은 포트 번호를 포함하지 않아야 합니다.

1. OIDC 자격 증명 공급자의 URL 끝에 **/.well-known/openid-configuration**을 추가하면 공개적으로 사용 가능한 공급자 구성 문서와 메타데이터를 확인할 수 있습니다. [OpenID Connect 공급자 검색 엔드포인트 URL](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig)에서 검색할 수 있는 공급자의 구성 문서 및 메타데이터가 포함된 JSON 형식의 검색 문서가 있어야 합니다.

1. 공급자의 구성 정보에 다음 값이 포함되어 있는지 확인하세요. openid-configuration에 다음 필드 중 하나라도 없는 경우 검색 문서를 업데이트해야 합니다. 이 프로세스는 자격 증명 공급자에 따라 다를 수 있으므로 IdP의 설명서에 따라 이 작업을 완료하세요.
   + issuer: 도메인의 URL입니다.
   + jwks\$1uri: IAM이 퍼블릭 키를 가져오는 JSON Web Key Set(JWKS) 엔드포인트입니다. 자격 증명 공급자는 openid-configuration에 JSON Web Key Set(JWKS) 엔드포인트를 포함해야 합니다. 이 URI는 자격 증명 공급자의 서명된 토큰을 확인하는 데 사용되는 퍼블릭 키를 가져올 위치를 정의합니다.
**참고**  
JSON 웹 키 세트(JWKS)에는 하나 이상의 키가 포함되어야 하며 최대 100개의 RSA 키와 100개의 EC 키를 보유할 수 있습니다. OIDC ID 제공업체의 JWKS에 100개가 넘는 RSA 키 또는 100개가 넘는 EC 키가 포함된 경우 100개 키 제한을 초과하는 키 유형으로 서명된 JWT와 함께 [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API 작업을 사용하면 `InvalidIdentityToken` 예외가 반환됩니다. 예를 들어 JWT가 RSA 알고리즘으로 서명되고 제공업체의 JWKS에 100개가 넘는 RSA 키가 있는 경우 `InvalidIdentityToken` 예외가 반환됩니다.
   + claim s\$1supported: AWS가 IAM 정책에서 OIDC 페더레이션 보안 주체의 권한 검사에 사용하는 필수 속성이 IdP의 OIDC 인증 응답에 포함되어 있는지 확인하도록 도와주는 사용자 관련 정보입니다. 클레임에 사용할 수 있는 IAM 조건 키 목록은 [AWS OIDC 페더레이션에서 사용 가능한 키](reference_policies_iam-condition-keys.md#condition-keys-wif)를 참조하세요.
     + aud: IdP가 JSON Web Token(JWT)으로 발급하는 audience 클레임 값을 확인해야 합니다. audience(aud) 클레임은 애플리케이션별로 다르며 토큰의 의도된 수신자를 식별합니다. 모바일 또는 웹 앱을 OpenID Connect 공급자에 등록하면 애플리케이션을 식별하는 클라이언트 ID가 설정됩니다. 클라이언트 ID는 인증을 위해 aud 클레임에 전달되는 앱의 고유 식별자입니다. IAM OIDC 자격 증명 공급자를 생성할 때 aud 클레임이 Audience 값과 일치해야 합니다.
     + iat: 클레임에는 ID 토큰이 발급된 시간을 나타내는 `iat` 값이 포함되어야 합니다.
     + iss: 자격 증명 공급자의 URL입니다. URL은 https://로 시작해야 하며 IAM에 제공된 공급자 URL과 일치해야 합니다. OIDC 표준에 따라 경로 구성 요소는 허용되지만 쿼리 파라미터는 허용되지 않습니다. 일반적으로 URL은 https://server.example.org 또는 https://example.com 같은 하나의 호스트 이름으로만 구성됩니다. URL은 포트 번호를 포함하지 않아야 합니다.
   + response\$1types\$1supported: id\$1token
   + subject\$1types\$1supported: public
   + id\$1token\$1signing\$1alg\$1values\$1supported: RS256, RS384, RS512, ES256, ES384, ES512
**참고**  
아래 예제에서 `my_custom_claim`과 같은 추가 클레임을 포함할 수 있지만 AWS STS는 이 클레임을 무시합니다.  

   ```
   {
     "issuer": "https://example-domain.com",
     "jwks_uri": "https://example-domain.com/jwks/keys",
     "claims_supported": [
       "aud",
       "iat",
       "iss",
       "name",
       "sub",
       "my_custom_claim"
     ],
     "response_types_supported": [
       "id_token"
     ],
     "id_token_signing_alg_values_supported": [
       "RS256",
       "RS384",
       "RS512",
       "ES256",
       "ES384",
       "ES512"
     ],
     "subject_types_supported": [
       "public"
     ]
   }
   ```

## OIDC 공급자 생성 및 관리(콘솔)


다음 지침에 따라 AWS Management Console에서 IAM OIDC 자격 증명 공급자를 생성 및 관리합니다.

**중요**  
Google, Facebook 또는 Amazon Cognito의 OIDC 자격 증명 공급자를 사용하는 경우 이 절차에 따라 IAM 자격 증명 공급자를 별도로 생성하지 마세요. 이러한 OIDC 자격 증명 공급자는 이미 AWS에 내장되어 있고 용도에 맞게 사용할 수 있습니다. 대신 단계에 따라 자격 증명 공급자의 새 역할을 생성합니다. 자세한 내용은 [OpenID Connect 페더레이션을 위한 역할 생성(콘솔)](id_roles_create_for-idp_oidc.md) 섹션을 참조하세요.

**IAM OIDC 자격 증명 공급자를 생성하려면(콘솔)**

1. <a name="idpoidcstep1"></a>IAM OIDC 자격 증명 공급자를 생성하려면 먼저 애플리케이션을 IdP에 등록하여 *클라이언트 ID*를 받아야 합니다. 클라이언트 ID(*사용자*라고도 불림)는 앱을 IdP에 등록할 때 발급되는 고유의 앱 식별자입니다. 클라이언트 ID를 얻는 방법에 대한 자세한 정보는 해당 IdP에 대한 설명서를 참조하세요.
**참고**  
AWS는 신뢰할 수 있는 루트 CA(인증 기관) 라이브러리를 사용해 OIDC ID 공급자(IdP)와의 통신을 보호하여 JWKS(JSON 웹 키 세트) 엔드포인트의 TLS 인증서를 확인합니다. OIDC IdP가 이러한 신뢰할 수 있는 CA 중 하나에서 서명하지 않은 인증서를 사용하는 경우에만 IdP의 구성에 설정된 지문을 사용하여 통신을 보호합니다. AWS는 TLS 인증서를 검색할 수 없거나 TLS v1.3이 필요한 경우 지문 확인으로 대체합니다.

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 [**자격 증명 공급자**(Identity providers)]를 선택한 다음 [**공급자 추가**(Add provider)]를 선택합니다.

1. [**공급자 구성(Configure provider)**]에 대해 [**OpenID Connect**]를 선택합니다.

1. **Provider URL(공급자 URL)**에서 IdP의 URL을 입력합니다. URL은 다음과 같은 제한을 준수해야 합니다.
   + URL은 대/소문자를 구분합니다.
   + URL은 **https://**로 시작해야 합니다.
   + URL은 포트 번호를 포함하지 않아야 합니다.
   + AWS 계정 내에서 각 IAM OIDC 자격 증명 공급자는 고유한 URL을 사용해야 합니다. AWS 계정에서 OpenID Connect 공급자에 이미 사용된 URL을 제출하려고 하면 오류가 발생합니다.

1. **대상(Audience)** 필드에 IdP를 등록하고 [Step 1](#idpoidcstep1)에서 받은 애플리케이션의 클라이언트 ID를 입력하면 AWS에게도 요청됩니다. IdP에 등록한 클라이언트 ID(*사용자들*이라고도 불림)가 더 있는 경우 나중에 공급자 세부 정보 페이지에서 추가할 수 있습니다.
**참고**  
IdP JWT 토큰에 `azp` 클레임이 포함된 경우 이 값을 Audience 값으로 입력하세요.  
OIDC ID 제공업체는 토큰에 `aud` 및 `azp` 클레임을 모두 설정하고, AWS STS에서는 `azp` 클레임의 값을 `aud` 클레임으로 사용합니다.

1. (선택 사항) **태그 추가(Add tags)**에 키 값 페어를 추가하여 IdP를 식별하고 구성할 수 있습니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어할 수도 있습니다. IAM OIDC 자격 증명 공급자 태깅에 대한 자세한 내용은 [OpenID Connect(OIDC) ID 제공업체 태깅](id_tags_oidc.md) 섹션을 참조하세요. **태그 추가**를 선택합니다. 각 태그 키 값 페어의 값을 입력합니다.

1. 제공한 정보를 확인합니다. 완료되면 [**공급자 추가(Add provider)**]를 선택합니다. IAM에서는 OIDC IdP 서버 인증서의 최상위 중간 CA 지문을 검색하고 사용하여 IAM OIDC ID 제공업체를 생성하려고 시도합니다.
**참고**  
OIDC ID 제공업체의 인증서 체인은 도메인 또는 발급자 URL로 시작하고, 그다음으로 중간 인증서, 마지막으로는 루트 인증서여야 합니다. 인증서 체인 순서가 다른 경우 또는 중복되거나 추가 인증서가 포함된 경우 서명 불일치 오류가 발생하고 STS는 JSON 웹 토큰(JWT) 유효성 검사에 실패합니다. 서버에서 반환된 체인의 인증서 순서를 수정하여 오류를 해결하세요. 인증서 체인 표준에 대한 자세한 내용은 RFC 시리즈 웹 사이트에서 [RFC 5246의 certificate\$1list](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2)를 참조하세요.

1. 자격 증명 공급자에 IAM 역할을 할당하여 자격 증명 공급자가 관리하는 외부 사용자 자격 증명에 계정의 AWS 리소스에 대한 액세스 권한을 부여합니다. ID 연동을 위한 역할을 생성하는 방법에 대한 자세한 내용은 [타사 ID 공급자에 대한 역할 생성](id_roles_create_for-idp.md) 섹션을 참조하세요.
**참고**  
역할 신뢰 정책에 사용되는 OIDC IdP는 이를 신뢰하는 역할과 동일한 계정에 있어야 합니다.

**IAM OIDC 자격 증명 공급자에 대한 지문을 추가하거나 제거하려면(콘솔)**
**참고**  
AWS는 신뢰할 수 있는 루트 CA(인증 기관) 라이브러리를 사용해 OIDC ID 공급자(IdP)와의 통신을 보호하여 JWKS(JSON 웹 키 세트) 엔드포인트의 TLS 인증서를 확인합니다. OIDC IdP가 이러한 신뢰할 수 있는 CA 중 하나에서 서명하지 않은 인증서를 사용하는 경우에만 IdP의 구성에 설정된 지문을 사용하여 통신을 보호합니다. AWS는 TLS 인증서를 검색할 수 없거나 TLS v1.3이 필요한 경우 지문 확인으로 대체합니다.

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 [**자격 증명 공급자(Identity providers)**]를 선택합니다. 그런 다음 업데이트할 IAM 자격 증명 공급자의 이름을 선택합니다.

1. **엔드포인트 확인** 탭을 선택한 다음 **지문** 섹션에서 **관리**를 선택합니다. 새 지문 값을 입력하려면 [**지문 추가(Add thumbprint)**]를 선택합니다. 지문을 제거하려면 삭제할 지문 옆에 있는 [**제거(Remove)**]를 선택합니다.
**참고**  
IAM OIDC 자격 증명 공급자마다 한 개 이상의 지문이 있어야 하며 최대 5개까지 가능합니다.

    작업을 마쳤으면 [**변경 사항 저장(Save changes)**]을 선택합니다.

**IAM OIDC 자격 증명 공급자에 대한 대상을 추가하려면(콘솔)**

1. 탐색 창에서 **자격 증명 공급자(Identity providers)**를 선택한 다음 업데이트할 IAM 자격 증명 공급자의 이름을 선택합니다.

1. [**대상(Audiences)**] 섹션에서 [**작업(Actions)**]을 선택하고 [**대상 추가(Add audience)**]를 선택합니다.

1. IdP에 등록하고 [Step 1](#idpoidcstep1)에서 받은 애플리케이션의 클라이언트 ID를 입력하면 AWS로 요청이 전송됩니다. 그런 다음 [**대상 추가(Add audience)**]를 선택합니다.
**참고**  
IAM OIDC 자격 증명 공급자마다 한 명 이상의 사용자가 있어야 하며 최대 100명까지 가능합니다.

**IAM OIDC 자격 증명 공급자에 대한 대상을 제거하려면(콘솔)**

1. 탐색 창에서 **자격 증명 공급자(Identity providers)**를 선택한 다음 업데이트할 IAM 자격 증명 공급자의 이름을 선택합니다.

1. [**대상(Audiences)**] 섹션에서 제거할 대상 옆에 있는 라디오 단추를 선택한 다음 [**작업(Actions)**]을 선택합니다.

1.  [**대상 제거(Remove audience)**]를 선택합니다. 새 창이 열립니다.

1. 대상을 제거하면 해당 대상과 연동된 자격 증명에서 해당 대상에 연결된 역할을 수임할 수 없습니다. 창에서 경고를 읽고 필드에 `remove`라는 단어를 입력하여 대상 제거를 확인합니다.

1. [**제거(Remove)**]를 선택하여 대상을 제거합니다.

**IAM OIDC 자격 증명 공급자를 삭제하려면(콘솔)**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 [**자격 증명 공급자(Identity providers)**]를 선택합니다.

1. 삭제하려는 할 IAM ID 제공업체 옆의 확인란을 선택하세요. 새 창이 열립니다.

1. 필드에 단어 `delete`를 입력하여 공급자 삭제를 확인합니다. 그런 다음 **삭제**를 선택합니다.

## IAM OIDC 자격 증명 공급자 생성 및 관리(AWS CLI)


다음 AWS CLI 명령을 사용하여 IAM OIDC 자격 증명 공급자를 생성하고 관리할 수 있습니다.

**IAM OIDC 자격 증명 공급자를 생성하려면(AWS CLI)**

1. (선택 사항) AWS 계정의 전체 IAM OIDC 자격 증명 공급자 목록을 가져오려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. 새 IAM OIDC 자격 증명 공급자를 생성하려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html)

**기존 IAM OIDC 자격 증명 공급자의 서버 인증서 지문 목록을 업데이트하려면(AWS CLI)**
+ IAM OIDC 자격 증명 공급자의 서버 인증서 지문 목록을 업데이트하려면 다음 명령을 실행합니다.
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html)

**기존 IAM OIDC 자격 증명 공급자를 태깅하려면(AWS CLI)**
+ 기존 IAM OIDC 자격 증명 공급자를 태깅하려면 다음 명령을 실행합니다.
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html)

**기존 IAM OIDC 자격 증명 공급자의 태그를 나열하려면(AWS CLI)**
+ 기존 IAM OIDC 자격 증명 공급자의 태그를 나열하려면 다음 명령을 실행합니다.
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html)

**IAM OIDC 자격 증명 공급자에서 태그를 제거하려면(AWS CLI)**
+ 기존 IAM OIDC 자격 증명 공급자에서 태그를 제거하려면 다음 명령을 실행합니다.
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html)

**기존 IAM OIDC 자격 증명 공급자에서 클라이언트 ID를 추가하거나 제거하려면(AWS CLI)**

1. (선택 사항) AWS 계정의 전체 IAM OIDC 자격 증명 공급자 목록을 가져오려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (선택 사항) IAM OIDC 자격 증명 공급자에 대한 자세한 정보를 보려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. 기존 IAM OIDC 자격 증명 공급자에 새로운 클라이언트 ID를 추가하려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html)

1. 기존 IAM OIDC 자격 증명 공급자에서 클라이언트를 제거하려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html)

**IAM OIDC 자격 증명 공급자를 삭제하려면(AWS CLI)**

1. (선택 사항) AWS 계정의 전체 IAM OIDC 자격 증명 공급자 목록을 가져오려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (선택 사항) IAM OIDC 자격 증명 공급자에 대한 자세한 정보를 보려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. IAM OIDC 자격 증명 공급자를 삭제하려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html)

## OIDC 자격 증명 공급자 생성 및 관리(AWS API)


다음 IAM API 명령을 사용하여 OIDC 공급자를 생성하고 관리할 수 있습니다.

**IAM OIDC 자격 증명 공급자를 생성하려면(AWS API)**

1. (선택 사항) AWS 계정의 전체 IAM OIDC 자격 증명 공급자 목록을 가져오려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. 새로운 IAM OIDC 자격 증명 공급자를 생성하려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html)

**기존 IAM OIDC 자격 증명 공급자의 서버 인증서 지문 목록을 업데이트하려면(AWS API)**
+ IAM OIDC 자격 증명 공급자의 서버 인증서 지문 목록을 업데이트하려면 다음 작업을 호출합니다.
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html)

**기존 IAM OIDC 자격 증명 공급자를 태깅하려면(AWS API)**
+ 기존 IAM OIDC 자격 증명 공급자를 태깅하려면 다음 작업을 호출합니다.
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**기존 IAM OIDC 자격 증명 공급자의 태그를 나열하려면(AWS API)**
+ 기존 IAM OIDC 자격 증명 공급자의 태그를 나열하려면 다음 작업을 호출합니다.
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**기존 IAM OIDC 자격 증명 공급자에서 태그를 제거하려면(AWS API)**
+ 기존 IAM OIDC 자격 증명 공급자에서 태그를 제거하려면 다음 작업을 호출합니다.
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

**기존 IAM OIDC 자격 증명 공급자에서 클라이언트 ID를 추가하거나 제거하려면(AWS API)**

1. (선택 사항) AWS 계정의 전체 IAM OIDC 자격 증명 공급자 목록을 가져오려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (선택 사항) IAM OIDC 자격 증명 공급자에 대한 자세한 정보를 보려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. 기존 IAM OIDC 자격 증명 공급자에 새로운 클라이언트 ID를 추가하려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html)

1. 기존 IAM OIDC 자격 증명 공급자에서 클라이언트 ID를 제거하려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html)

**IAM OIDC 자격 증명 공급자를 삭제하려면(AWS API)**

1. (선택 사항) AWS 계정의 전체 IAM OIDC 자격 증명 공급자 목록을 가져오려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (선택 사항) IAM OIDC 자격 증명 공급자에 대한 자세한 정보를 보려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. IAM OIDC 자격 증명 공급자를 삭제하려면 다음 작업을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html)

# OpenID Connect ID 공급자에 대한 지문 얻기
OIDC 공급자에 대한 지문 얻기

IAM에서 [OpenID Connect(OIDC) ID 제공업체](id_roles_providers_create_oidc.md)를 생성할 때는 외부 ID 제공업체(idP)에서 사용한 인증서에 서명한 중간 인증 기관(CA)의 지문이 IAM에 필요합니다. 지문은 OIDC 호환 IdP에 대한 인증서 발급에 사용되는 CA에 대한 서명입니다. IAM OIDC 자격 증명 공급자를 생성하는 경우 해당 IdP에 의해 인증된 자격 증명이 자신의 AWS 계정에 액세스할 수 있도록 신뢰하는 것입니다. CA의 인증서 지문을 사용함으로써 등록된 것과 DNS 이름이 동일한 CA에서 발급한 모든 인증서를 신뢰하게 됩니다. 이를 통해 IdP의 서명 인증서를 갱신할 때 각 계정의 신뢰를 업데이트할 필요가 없습니다.

**중요**  
대부분의 경우 연동 서버는 두 가지 다른 인증서를 사용합니다.  
첫 번째는 AWS 및 IdP 사이의 HTTPS 연결을 설정합니다. 이는 잘 알려진 퍼블릭 루트 CA(예: AWS Certificate Manager)에서 발급해야 합니다. 이렇게 하면 클라이언트가 인증서의 안정성과 상태를 확인할 수 있습니다.
두 번째는 토큰을 암호화하는 데 사용되며 프라이빗 또는 퍼블릭 *루트* CA가 서명해야 합니다.

[AWS Command Line Interface, Tools for Windows PowerShell 또는 IAM API](id_roles_providers_create_oidc.md#manage-oidc-provider-cli)를 사용하여 IAM OIDC 자격 증명 공급자를 생성할 수 있습니다. 이러한 방법을 사용하면 수동으로 지문을 제공하는 옵션이 생깁니다. 지문을 포함하지 않기로 선택하면 IAM은 OIDC IdP 서버 인증서의 최상위 임시 CA 지문을 검색합니다. 지문을 포함하도록 선택한 경우 지문을 수동으로 획득하여 AWS에 제공해야 합니다.

[IAM 콘솔](id_roles_providers_create_oidc.md)을 사용하여 OIDC ID 제공업체를 생성하면 IAM에서는 자동으로 OIDC IdP 서버 인증서의 최상위 중간 CA 지문 검색을 시도합니다.

또한, OIDC IdP의 지문을 수동으로 가져와서 IAM에서 올바른 지문을 검색했는지 확인하는 것이 좋습니다. 인증서 지문을 얻는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

**참고**  
AWS는 신뢰할 수 있는 루트 CA(인증 기관) 라이브러리를 사용해 OIDC ID 공급자(IdP)와의 통신을 보호하여 JWKS(JSON 웹 키 세트) 엔드포인트의 TLS 인증서를 확인합니다. OIDC IdP가 이러한 신뢰할 수 있는 CA 중 하나에서 서명하지 않은 인증서를 사용하는 경우에만 IdP의 구성에 설정된 지문을 사용하여 통신을 보호합니다. AWS는 TLS 인증서를 검색할 수 없거나 TLS v1.3이 필요한 경우 지문 확인으로 대체합니다.

## 인증서 지문 얻기


웹 브라우저와 OpenSSL 명령줄 도구를 사용하여 OIDC 공급자의 인증서 지문을 얻습니다. 하지만 수동으로 인증서 지문을 얻어서 IAM OIDC ID 공급자를 생성할 필요는 없습니다. 다음 절차를 통해 OIDC 공급자의 인증서 지문을 얻을 수 있습니다.

**OIDC IdP의 지문을 얻으려면**

1. OIDC IdP의 지문을 얻으려면, 먼저 OpenSSL 명령줄 도구를 얻어야 합니다. 이 도구를 사용하여 OIDC IdP 인증서 체인을 다운로드하고 인증서 체인에 있는 마지막 인증서의 지문을 생성합니다. OpenSSL을 설치 및 구성해야 하는 경우 [OpenSSL 설치](#oidc-install-openssl) 및 [OpenSSL 구성](#oidc-configure-openssl)의 지침을 따르세요.

1. OIDC IdP URL(예: `https://server.example.com`)로 시작한 다음 `/.well-known/openid-configuration`을 추가하여 다음과 같이 OIDC IdP의 구성 문서에 대한 URL을 만듭니다.

   **https://*server.example.com*/.well-known/openid-configuration**

   웹 브라우저에서 이 URL을 열 때 *server.example.com*을 IdP 서버 이름으로 바꾸어 엽니다.

1. <a name="thumbstep2"></a>표시되는 문서에서 웹 브라우저 **찾기** 기능을 사용하여 `"jwks_uri"` 텍스트를 찾습니다. `"jwks_uri"` 텍스트 바로 뒤에 콜론(:)과 URL이 보입니다. 그 URL의 정규화된 도메인 이름을 복사합니다. `https://` 또는 최상위 도메인 다음에 오는 경로는 포함하지 마세요.

   ```
   {
    "issuer": "https://accounts.example.com",
    "authorization_endpoint": "https://accounts.example.com/o/oauth2/v2/auth",
    "device_authorization_endpoint": "https://oauth2.exampleapis.com/device/code",
    "token_endpoint": "https://oauth2.exampleapis.com/token",
    "userinfo_endpoint": "https://openidconnect.exampleapis.com/v1/userinfo",
    "revocation_endpoint": "https://oauth2.exampleapis.com/revoke",
    "jwks_uri": "https://www.exampleapis.com/oauth2/v3/certs",
   ...
   ```

1. OpenSSL 명령줄 도구를 사용하여 다음 명령을 실행합니다. 이때 *keys.example.com*을 [Step 3](#thumbstep2)에서 얻은 도메인 이름으로 바꿉니다.

   ```
   openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
   ```

1. 명령 창에서 다음 예제와 비슷한 인증서가 보일 때까지 위로 스크롤합니다. 인증서가 두 개 이상 있을 경우 명령 출력의 하단에서 표시된 마지막 인증서를 찾습니다. 여기에는 인증 기관 체인의 최상위 중간 CA 인증서가 포함됩니다.

   ```
   -----BEGIN CERTIFICATE-----
    MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
    VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
    b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
    BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
    MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
    VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
    b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
    YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
    21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
    rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
    Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
    nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
    FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
    NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
    -----END CERTIFICATE-----
   ```

   인증서를 복사해(`-----BEGIN CERTIFICATE-----` 및 `-----END CERTIFICATE-----` 줄 포함) 텍스트 파일에 붙여 넣습니다. 그 다음에 그 파일을 **certificate.crt**라는 이름으로 저장합니다.
**참고**  
OIDC ID 제공업체의 인증서 체인은 도메인 또는 발급자 URL로 시작하고, 중간 인증서(있는 경우)를 포함하고, 루트 인증서로 끝나야 합니다. 인증서 체인 순서가 다른 경우 또는 중복되거나 추가 인증서가 포함된 경우 서명 불일치 오류가 발생하고 STS는 JSON 웹 토큰(JWT) 유효성 검사에 실패합니다. 서버에서 반환된 체인의 인증서 순서를 수정하여 오류를 해결하세요. 인증서 체인 표준에 대한 자세한 내용은 RFC 시리즈 웹 사이트에서 [RFC 5246의 certificate\$1list](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2)를 참조하세요.

1. OpenSSL 명령줄 도구를 사용하여 다음 명령을 실행합니다.

   ```
   openssl x509 -in certificate.crt -fingerprint -sha1 -noout
   ```

   다음 예제와 비슷한 인증서 지문이 명령 창에 표시됩니다.

   ```
   SHA1 Fingerprint=99:0F:41:93:97:2F:2B:EC:F1:2D:DE:DA:52:37:F9:C9:52:F2:0D:9E
   ```

   이 문자열에서 콜론 문자(:)를 제거하여 다음과 같은 최종 지문을 생성합니다.

   ```
   990F4193972F2BECF12DDEDA5237F9C952F20D9E
   ```

1. AWS CLI, Tools for Windows PowerShell 또는 IAM API를 사용하여 IAM OIDC ID 제공업체를 생성하는 경우에는 지문 제공이 선택 사항입니다. 생성하는 동안 지문을 포함하지 않기로 선택하면 IAM에서는 OIDC IdP 서버 인증서의 최상위 임시 CA 지문을 검색합니다. IAM OIDC ID 제공업체가 생성되면 이 지문을 IAM에서 검색한 지문과 비교할 수 있습니다.

   IAM 콘솔에서 IAM OIDC ID 제공업체를 생성하면 콘솔에서는 자동으로 OIDC IdP 서버 인증서의 최상위 중간 CA 지문 검색을 시도합니다. 이 지문을 IAM에서 검색한 지문과 비교할 수 있습니다. IAM OIDC ID 제공업체가 생성되면 OIDC 제공업체 **요약** 콘솔 페이지의 **엔드포인트 확인** 탭에서 IAM OIDC ID 제공업체의 지문을 볼 수 있습니다.
**중요**  
가져온 지문이 IAM OIDC ID 제공업체 지문 세부 정보에 표시되는 지문과 일치하지 않으면 OIDC 제공업체를 사용하지 않아야 합니다. 그 대신에, 생성된 OIDC 제공업체를 삭제한 다음에 시간이 조금 지난 후 OIDC 제공업체 생성을 다시 시도해야 합니다. 제공업체를 사용하기 전에 지문이 일치하는지 확인하세요. 두 번째 시도 후에도 지문이 여전히 일치하지 않을 경우에는 [IAM 포럼](https://forums.aws.amazon.com/forum.jspa?forumID=76)을 통해 AWS에 문의하세요.

## OpenSSL 설치


아직 OpenSSL을 설치하지 않았다면 이 단원에 나오는 지침을 따르세요.

**Linux 또는 Unix에서 OpenSSL을 설치하려면**

1. [OpenSSL: Source, Tarballs](https://openssl.org/source/)(https://openssl.org/source/)로 이동합니다.

1. 최신 소스를 다운로드하여 패키지를 생성합니다.

**Windows에서 OpenSSL을 설치하려면**

1. Windows 버전을 설치할 수 있는 사이트 목록을 보려면 [OpenSSL: Binary Distributions](https://wiki.openssl.org/index.php/Binaries)(https://wiki.openssl.org/index.php/Binaries)로 이동합니다.

1. 선택한 사이트의 지침을 따라 설치를 시작합니다.

1. **Microsoft Visual C\$1\$1 2008 재배포 가능 패키지** 설치를 묻는 메시지가 표시되고 아직 시스템에 설치되지 않았다면 환경에 적합한 다운로드 링크를 선택합니다. **Microsoft Visual C\$1\$1 2008 재배포 가능 패키지 설치 마법사**의 지시를 따릅니다.
**참고**  
시스템에 Microsoft Visual C\$1\$1 2008 Redistributables가 설치되어 있는지 알 수 없는 경우 OpenSSL을 먼저 설치합니다. Microsoft Visual C\$1\$1 2008 Redistributables가 설치되지 않은 경우에는 OpenSSL 설치 관리자에 알림이 표시됩니다. 설치할 OpenSSL 버전에 해당하는 아키텍처(32비트 또는 64비트)를 설치해야 합니다.

1. Microsoft Visual C\$1\$1 2008 Redistributables를 설치한 후에는 환경에 맞는 OpenSSL 바이너리를 선택하고 파일을 로컬 위치에 저장합니다. **OpenSSL 설치 마법사**를 시작합니다.

1. **OpenSSL 설치 마법사**의 지시에 따릅니다.

## OpenSSL 구성


OpenSSL 명령을 사용하려면 OpenSSL이 설치된 위치 정보가 담기도록 운영 체제를 구성해야 합니다.

**Linux 또는 Unix에서 OpenSSL을 구성하려면**

1. 명령줄에서 `OpenSSL_HOME` 변수를 OpenSSL 설치 위치로 설정합니다.

   ```
   $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. OpenSSL 설치가 포함되도록 경로를 설정합니다.

   ```
   $ export PATH=$PATH:$OpenSSL_HOME/bin
   ```
**참고**  
`export` 명령을 사용하여 변경한 환경 변수는 현재 세션에만 유효합니다. 쉘 구성 파일에서 설정하면 환경 변수의 영구 변경이 가능합니다. 자세한 내용은 운영 체제 설명서를 참조하세요.

**Windows에서 OpenSSL을 구성하려면**

1. **명령 프롬프트** 창을 엽니다.

1. `OpenSSL_HOME` 변수를 OpenSSL 설치 위치로 설정합니다.

   ```
   C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. `OpenSSL_CONF` 변수를 OpenSSL 설치에 있는 구성 파일 위치로 설정합니다.

   ```
   C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
   ```

1. OpenSSL 설치가 포함되도록 경로를 설정합니다.

   ```
   C:\> set Path=%Path%;%OpenSSL_HOME%\bin
   ```
**참고**  
**명령 프롬프트** 창에서 변경한 Windows 환경 변수는 현재 명령줄 세션에만 유효합니다. 환경 변수를 시스템 속성으로 설정하면 환경 변수의 영구 변경이 가능합니다. 정확한 절차는 사용 중인 Windows 버전에 따라 달라집니다. 예를 들어 Windows 7에서는 **제어판**, **시스템 및 보안**, **시스템**을 연 다음 **고급 시스템 설정**, **고급** 탭, **환경 변수(Environment Variables)**를 선택합니다. 자세한 내용은 Windows 설명서를 참조하세요.

# 공유 OIDC 공급자의 ID 공급자 제어
공유 OIDC 공급자의 ID 공급자 제어

인식된 공유 OpenID Connect(OIDC) ID 공급자(IdP)의 경우 IAM은 역할 신뢰 정책의 특정 클레임을 명시적으로 평가해야 합니다. **ID 공급자 제어라고 하는 이러한 필수 클레임은 역할 생성 및 신뢰 정책 업데이트 중에 IAM에 의해 평가됩니다. 역할 신뢰 정책에서 공유 OIDC IdP에 필요한 제어를 평가하지 않으면 역할 생성 또는 업데이트가 실패합니다. 이를 통해 의도한 조직의 승인된 자격 증명만 역할을 수임하고 AWS 리소스에 액세스할 수 있습니다. 이 보안 제어는 OIDC 공급자가 여러 AWS 고객 사이에서 공유되는 경우 매우 중요합니다.



ID 공급자 제어는 IAM에서 기존 OIDC 역할 신뢰 정책에 대해 평가하지 않습니다. 기존 OIDC 역할의 역할 신뢰 정책을 수정하는 경우 IAM은 ID 공급자 제어를 역할 신뢰 정책에 포함해야 합니다.

## OIDC 공급자 유형


IAM은 OIDC ID 공급자를 ****프라이빗 및 ****공유라는 두 가지 개별 유형으로 분류합니다. 프라이빗 OIDC IdP는 단일 조직에서 소유 및 관리하거나 해당 조직에 고유한 식별자 역할을 하는 OIDC 발행자 URL을 포함하는 SaaS 공급자의 테넌트일 수 있습니다. 반대로 공유 OIDC IdP는 여러 조직에서 사용되고, OIDC 발행자 URL은 해당 ID 공급자를 사용하는 모든 조직에서 동일할 수 있습니다.

아래 표에는 프라이빗 OIDC 공급자와 공유 OIDC 공급자 사이의 주요 차이점이 요약되어 있습니다.


| 기능 | 프라이빗 OIDC 공급자 | 공유 OIDC 공급자 | 
| --- | --- | --- | 
|  Issuer  |  조직에 고유함  |  여러 조직에서 공유  | 
|  테넌시 정보  |  고유 발행자를 통해 전달됨  |  JWT에서 클레임을 통해 전달됨  | 
|  신뢰 정책 요구 사항  |  특정 클레임 평가 불필요  |  특정 클레임 평가 필요  | 

## ID 공급자 제어가 포함된 공유 OIDC ID 공급자


IAM에서 OIDC 공급자를 생성하거나 수정할 때 시스템은 인식된 공유 OIDC 공급자에 필요한 클레임을 자동으로 식별하고 평가합니다. 역할 신뢰 정책에 ID 공급자 제어가 구성되지 않은 경우 역할 생성 또는 업데이트가 실패하고 MalformedPolicyDocument 오류가 발생합니다.

다음 표에는 역할 신뢰 정책에서 ID 제공업체 제어가 필요한 공유 OIDC 제공업체 및 ID 제공업체 제어를 구성하는 데 도움이 되는 추가 정보가 나와 있습니다.


| OIDC IdP | OIDC URL | 테넌시 클레임 | 필수 클레임 | 
| --- | --- | --- | --- | 
| [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html) |  `cognito-identity.amazonaws.com`  | aud |  `cognito-identity.amazonaws.com:aud`  | 
| [Azure Sentinel](https://learn.microsoft.com/en-us/azure/defender-for-cloud/sentinel-connected-aws) |  https://sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d  |  sts:RoleSessionName  |  sts:RoleSessionName  | 
| [Buildkite](https://buildkite.com/docs/pipelines/security/oidc/aws) |  https://agent.buildkite.com  |  sub  |  agent.buildkite.com:sub  | 
| [Codefresh SaaS](https://codefresh.io/docs/docs/integrations/oidc-pipelines/) | https://oidc.codefresh.io | sub |  oidc.codefresh.io:sub  | 
| [DVC Studio](https://dvc.org/doc/studio/user-guide/openid-connect) | https://studio.datachain.ai/api | sub |  studio.datachain.ai/api:sub  | 
| [GitHub 작업](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://token.actions.githubusercontent.com | sub |  token.actions.githubusercontent.com:sub  | 
| [GitHub 감사 로그 스트리밍](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) | https://oidc-configuration.audit-log.githubusercontent.com | sub |  oidc-configuration.audit-log.githubusercontent.com:sub  | 
| [GitHub vstoken](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://vstoken.actions.githubusercontent.com | sub |  vstoken.actions.githubusercontent.com:sub  | 
| [GitLab](https://docs.gitlab.com/ci/cloud_services/aws/) | https://gitlab.com | sub |  gitlab.com:sub  | 
| [IBM Turbonomic SaaS\$1](https://www.ibm.com/docs/en/tarm/8.16.x?topic=turbonomic-setting-up-aws-iam-role-saas-deployments) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | sub |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | 
| [Pulumi Cloud](https://www.pulumi.com/docs/pulumi-cloud/deployments/oidc/aws/) | https://api.pulumi.com/oidc | aud |  api.pulumi.com/oidc:aud  | 
| [sandboxes.cloud](https://docs.sandboxes.cloud/docs/cloud-resources-setup) | https://sandboxes.cloud | aud |  sandboxes.cloud:aud  | 
| [Scalr](https://docs.scalr.io/docs/aws) | https://scalr.io | sub |  scalr.io:sub  | 
| [Shisho Cloud](https://shisho.dev/docs/g/getting-started/integrate-apps/aws/) | https://tokens.cloud.shisho.dev | sub |  tokens.cloud.shisho.dev:sub  | 
| [Terraform Cloud](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration) | https://app.terraform.io | sub |  app.terraform.io:sub  | 
| [Upbound](https://docs.upbound.io/providers/provider-aws/authentication/) | https://proidc.upbound.io | sub |  proidc.upbound.io:sub  | 
| [Vercel 글로벌 엔드포인트](https://vercel.com/docs/oidc/reference) | https://oidc.vercel.com | aud |  oidc.vercel.com:aud  | 

\$1 IBM Turbonomic은 주기적으로 OIDC 발행자 URL을 플랫폼의 새 버전으로 업데이트합니다. 필요에 따라 범위에 Turbonomic OIDC 발행자가 공유 공급자로 추가될 예정입니다.

IAM에서 공유로 식별하는 새 OIDC IdP의 경우 역할 신뢰 정책에 필요한 ID 공급자 제어가 유사한 방식으로 문서화 및 적용됩니다.

## 추가 리소스


추가 리소스:
+ OIDC 페더레이션을 IAM 역할 생성에 대한 자세한 정보는 [OpenID Connect 페더레이션을 위한 역할 생성(콘솔)](id_roles_create_for-idp_oidc.md) 섹션을 참조하세요.
+ 클레임에 사용할 수 있는 IAM 조건 키 목록은 [AWS OIDC 페더레이션에서 사용 가능한 키](reference_policies_iam-condition-keys.md#condition-keys-wif)를 참조하세요.