IAM에서 OpenID Connect(OIDC) 아이덴티티 프로바이더 생성
IAM에서 OpenID Connect(OIDC) 아이덴티티 프로바이더 생성 (Create an OpenID Connect (OIDC) identity provider in IAM)
IAM OIDC 아이덴티티 프로바이더는 Google이나 Salesforce처럼 OpenID Connect(OIDC) 표준을 지원하는 외부 아이덴티티 프로바이더(IdP) 서비스를 설명하는 IAM의 엔터티예요. OIDC 호환 IdP와 AWS 계정 사이에 신뢰를 구축하려고 할 때 IAM OIDC 아이덴티티 프로바이더를 사용해요. AWS 리소스에 접근이 필요한 모바일 앱이나 웹 애플리케이션을 만들 때 유용하지만, 커스텀 로그인 코드를 만들거나 자체 사용자 아이덴티티를 관리하고 싶지 않을 때요. 이 시나리오에 대한 자세한 내용은 OIDC 페더레이션을 참고하세요.
출처: 문서
본문
IAM OIDC 아이덴티티 프로바이더는 AWS Management Console, AWS Command Line Interface, Tools for Windows PowerShell, 또는 IAM API로 만들고 관리할 수 있어요.
IAM OIDC 아이덴티티 프로바이더를 만든 뒤에는 하나 이상의 IAM 역할을 만들어야 해요. 역할은 (사용자처럼) 자체 자격 증명이 없는 AWS의 아이덴티티예요. 하지만 이 맥락에서 역할은 조직의 IdP가 인증한 OIDC 페더레이션 프린시펄에게 동적으로 할당돼요. 역할은 조직의 IdP가 AWS 접근용 임시 보안 자격 증명을 요청하도록 허용해요. 역할에 할당된 정책이 사용자가 AWS에서 무엇을 할 수 있는지 결정해요. 제3자 아이덴티티 프로바이더용 역할을 만들려면 제3자 아이덴티티 프로바이더용 역할 만들기를 참고하세요.
중요
oidc-provider 리소스를 지원하는 작업에 대해 아이덴티티 기반 정책을 구성할 때, IAM은 지정된 경로를 포함한 전체 OIDC 아이덴티티 프로바이더 URL을 평가해요. OIDC 아이덴티티 프로바이더 URL에 경로가 있다면 그 경로를 oidc-provider ARN의 Resource 요소 값으로 포함해야 해요. 또한 URL 도메인에 슬래시와 와일드카드(/*)를 덧붙이거나, URL 경로의 어느 지점에서든 와일드카드 문자(*와 ?)를 사용할 수도 있어요. 요청의 OIDC 아이덴티티 프로바이더 URL이 정책의 Resource 요소에 설정된 값과 일치하지 않으면 요청이 실패해요.
IAM OIDC 페더레이션의 일반적인 문제를 해결하려면 AWS re:Post의 OIDC 관련 오류 해결을 참고하세요.
다루는 주제
- 사전 요구 사항: 아이덴티티 프로바이더 구성 검증
- OIDC 프로바이더 생성·관리 (콘솔)
- IAM OIDC 아이덴티티 프로바이더 생성·관리 (AWS CLI)
- OIDC 아이덴티티 프로바이더 생성·관리 (AWS API)
사전 요구 사항: 아이덴티티 프로바이더 구성 검증
IAM OIDC 아이덴티티 프로바이더를 만들기 전에 IdP에서 다음 정보가 있어야 해요. OIDC 프로바이더 구성 정보를 얻는 방법은 사용하는 IdP의 문서를 참고하세요.
- OIDC 아이덴티티 프로바이더의 공개 URL을 결정해요. URL은
https://로 시작해야 해요. OIDC 표준에 따라 경로 컴포넌트는 허용되지만 쿼리 파라미터는 허용되지 않아요. 일반적으로 URL은https://server.example.org또는https://example.com같은 호스트 이름만으로 구성돼요. URL에 포트 번호가 포함되면 안 돼요. - OIDC 아이덴티티 프로바이더 URL 끝에
/.well-known/openid-configuration을 추가하면 프로바이더의 공개적으로 사용 가능한 구성 문서와 메타데이터를 볼 수 있어요. OpenID Connect 프로바이더 디스커버리 엔드포인트 URL에서 검색할 수 있는, 프로바이더의 구성 문서와 메타데이터를 담은 JSON 형식의 디스커버리 문서가 있어야 해요. - 프로바이더의 구성 정보에 다음 값이 포함되어 있는지 확인해요.
openid-configuration에 이 필드 중 하나라도 없으면 디스커버리 문서를 업데이트해야 해요. 이 과정은 아이덴티티 프로바이더에 따라 다를 수 있으므로 이 작업을 완료하려면 IdP의 문서를 따라야 해요.issuer— 도메인의 URL.jwks_uri— IAM이 공개 키를 가져오는 JWKS(JSON Web Key Set) 엔드포인트. 아이덴티티 프로바이더는openid-configuration에 JWKS 엔드포인트를 포함해야 해요. 이 URI는 아이덴티티 프로바이더의 서명된 토큰을 검증하는 데 사용되는 공개 키를 가져올 위치를 정의해요.-
참고
JWKS(JSON Web Key Set)는 최소 하나의 키를 포함해야 하며 최대 100개의 RSA 키와 100개의 EC 키를 가질 수 있어요. OIDC 아이덴티티 프로바이더의 JWKS에 RSA 키가 100개 또는 EC 키가 100개를 초과하면, 100키 제한을 초과하는 키 유형으로 서명된 JWT로AssumeRoleWithWebIdentityAPI 작업을 사용할 때InvalidIdentityToken예외가 반환돼요. 예를 들어 JWT가 RSA 알고리즘으로 서명되었고 프로바이더의 JWKS에 RSA 키가 100개를 초과하면InvalidIdentityToken예외가 반환돼요. claims_supported— IdP의 OIDC 인증 응답이, AWS가 IAM 정책에서 OIDC 페더레이션 프린시펄의 권한을 확인하는 데 사용하는 필수 속성을 포함하도록 보장하는 데 도움이 되는 사용자 정보. 클레임에 사용할 수 있는 IAM 조건 키 목록은 AWS OIDC 페더레이션에 사용할 수 있는 키를 참고하세요.aud— IdP가 JSON 웹 토큰(JWT)에서 발급하는 오디언스 클레임 값을 결정해야 해요. 오디언스(aud) 클레임은 애플리케이션별로 토큰의 의도된 수신자를 식별해요. OpenID Connect 프로바이더에 모바일·웹 앱을 등록하면 애플리케이션을 식별하는 클라이언트 ID가 확립돼요. 클라이언트 ID는 인증을 위해aud클레임에서 전달되는 앱의 고유 식별자예요.aud클레임은 IAM OIDC 아이덴티티 프로바이더를 만들 때Audience값과 일치해야 해요.iat— 클레임은 ID 토큰이 발급된 시간을 나타내는iat값을 포함해야 해요.iss— 아이덴티티 프로바이더의 URL. URL은https://로 시작해야 하며 IAM에 제공된 Provider URL과 일치해야 해요. OIDC 표준에 따라 경로 컴포넌트는 허용되지만 쿼리 파라미터는 허용되지 않아요. 일반적으로 URL은https://server.example.org또는https://example.com같은 호스트 이름만으로 구성돼요. URL에 포트 번호가 포함되면 안 돼요.response_types_supported—id_tokensubject_types_supported—publicid_token_signing_alg_values_supported—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 페더레이션용 역할 만들기(콘솔)를 참고하세요.
IAM OIDC 아이덴티티 프로바이더 생성 (콘솔)
- IAM OIDC 아이덴티티 프로바이더를 만들기 전에 IdP에 애플리케이션을 등록해 클라이언트 ID를 받아야 해요. 클라이언트 ID(오디언스(audience)라고도 함)는 IdP에 앱을 등록할 때 발급되는 앱의 고유 식별자예요. 클라이언트 ID를 얻는 방법은 사용하는 IdP의 문서를 참고하세요.
-
참고
AWS는 신뢰할 수 있는 루트 인증 기관(CA) 라이브러리로 JWKS(JSON Web Key Set) 엔드포인트의 TLS 인증서를 검증해 OIDC 아이덴티티 프로바이더(IdP)와의 통신을 보호해요. OIDC IdP가 이 신뢰된 CA 중 하나가 서명하지 않은 인증서에 의존하는 경우에만 IdP 구성에 설정된 **지문(thumbprint)**으로 통신을 보호해요. AWS는 TLS 인증서를 검색할 수 없거나 TLS v1.3이 필요한 경우 지문 검증으로 폴백해요.
-
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
- 탐색 창에서 Identity providers를 선택하고 Add provider를 선택해요.
- Configure provider에서 OpenID Connect를 선택해요.
- Provider URL에 IdP의 URL을 입력해요. URL은 다음 제한을 따라야 해요.
- URL은 대소문자를 구분해요.
- URL은
https://로 시작해야 해요. - URL에 포트 번호가 포함되면 안 돼요.
- AWS 계정 안에서 각 IAM OIDC 아이덴티티 프로바이더는 고유한 URL을 사용해야 해요. AWS 계정의 OpenID Connect 프로바이더에 이미 사용된 URL을 제출하려 하면 오류가 나요.
- Audience에 1단계에서 IdP에 등록하고 받은, AWS에 요청을 보내는 애플리케이션의 클라이언트 ID를 입력해요. 이 IdP의 추가 클라이언트 ID(오디언스라고도 함)가 있다면 나중에 프로바이더 세부 정보 페이지에서 추가할 수 있어요.
-
참고
IdP JWT 토큰에azp클레임이 포함되면 이 값을 Audience 값으로 입력해요. OIDC 아이덴티티 프로바이더가 토큰에aud와azp클레임을 모두 설정한다면, AWS STS는azp클레임의 값을aud클레임으로 사용해요.
-
- (선택) Add tags에서 IdP를 식별·정리하는 데 도움이 되는 키-값 쌍을 추가할 수 있어요. 태그로 AWS 리소스 접근을 제어할 수도 있어요. IAM OIDC 아이덴티티 프로바이더 태그 지정에 대해 더 알아보려면 OpenID Connect(OIDC) 아이덴티티 프로바이더 태그 지정을 참고하세요. 각 태그 키-값 쌍의 값을 입력한 뒤 Add tag를 선택해요.
- 제공한 정보를 확인해요. 완료되면 Add provider를 선택해요. IAM은 OIDC IdP 서버 인증서의 최상위 중간 CA 지문을 검색해 사용해 IAM OIDC 아이덴티티 프로바이더를 만들려고 시도해요.
-
참고
OIDC 아이덴티티 프로바이더의 인증서 체인은 도메인 또는 발급자 URL로 시작해 중간 인증서를 거쳐 루트 인증서로 끝나야 해요. 인증서 체인의 순서가 다르거나 중복·추가 인증서가 포함되면 서명 불일치 오류가 나고 STS가 JSON 웹 토큰(JWT) 검증에 실패해요. 오류를 해결하려면 서버에서 반환되는 체인의 인증서 순서를 바로잡아야 해요. 인증서 체인 표준에 대한 자세한 내용은 RFC Series 웹사이트의 RFC 5246의 certificate_list를 참고하세요.
-
- 아이덴티티 프로바이더에 IAM 역할을 할당해, 아이덴티티 프로바이더가 관리하는 외부 사용자 아이덴티티에게 계정의 AWS 리소스에 접근할 권한을 줘요. 아이덴티티 페더레이션용 역할 만들기에 대해 더 알아보려면 제3자 아이덴티티 프로바이더용 역할 만들기를 참고하세요.
-
참고
역할 트러스트 정책에 사용되는 OIDC IdP는 그 역할을 신뢰하는 역할과 같은 계정에 있어야 해요.
-
IAM OIDC 아이덴티티 프로바이더에 지문 추가·제거 (콘솔)
참고
AWS는 신뢰할 수 있는 루트 CA 라이브러리로 JWKS 엔드포인트의 TLS 인증서를 검증해 OIDC IdP와의 통신을 보호해요. OIDC IdP가 이 신뢰된 CA 중 하나가 서명하지 않은 인증서에 의존하는 경우에만 IdP 구성에 설정된 지문으로 통신을 보호해요. AWS는 TLS 인증서를 검색할 수 없거나 TLS v1.3이 필요한 경우 지문 검증으로 폴백해요.
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
- 탐색 창에서 Identity providers를 선택하고, 업데이트할 IAM 아이덴티티 프로바이더 이름을 선택해요.
- Endpoint verification 탭을 선택하고, Thumbprints 섹션에서 Manage를 선택해요. 새 지문 값을 입력하려면 Add thumbprint를, 제거할 지문 옆의 Remove를 선택해요.
-
참고
IAM OIDC 아이덴티티 프로바이더는 최소 하나, 최대 다섯 개의 지문을 가질 수 있어요.
-
- 완료되면 Save changes를 선택해요.
IAM OIDC 아이덴티티 프로바이더에 오디언스 추가 (콘솔)
- 탐색 창에서 Identity providers를 선택하고, 업데이트할 IAM 아이덴티티 프로바이더 이름을 선택해요.
- Audiences 섹션에서 Actions를 선택하고 Add audience를 선택해요.
- 1단계에서 IdP에 등록하고 받은, AWS에 요청을 보낼 애플리케이션의 클라이언트 ID를 입력하고 Add audiences를 선택해요.
-
참고
IAM OIDC 아이덴티티 프로바이더는 최소 하나, 최대 100개의 오디언스를 가질 수 있어요.
-
IAM OIDC 아이덴티티 프로바이더에서 오디언스 제거 (콘솔)
- 탐색 창에서 Identity providers를 선택하고, 업데이트할 IAM 아이덴티티 프로바이더 이름을 선택해요.
- Audiences 섹션에서 제거할 오디언스 옆의 라디오 버튼을 선택하고 Actions를 선택해요.
- Remove audience를 선택해요. 새 창이 열려요.
- 오디언스를 제거하면 그 오디언스로 페더레이션하는 아이덴티티는 그 오디언스와 연관된 역할을 수임할 수 없어요. 창에서 경고를 읽고, 필드에
remove라는 단어를 입력해 오디언스를 제거할 것임을 확인해요. - Remove를 선택해 오디언스를 제거해요.
IAM OIDC 아이덴티티 프로바이더 삭제 (콘솔)
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
- 탐색 창에서 Identity providers를 선택해요.
- 삭제할 IAM 아이덴티티 프로바이더 옆의 체크박스를 선택해요. 새 창이 열려요.
- 필드에
delete라는 단어를 입력해 프로바이더를 삭제할 것임을 확인한 뒤 Delete를 선택해요.
IAM OIDC 아이덴티티 프로바이더 생성·관리 (AWS CLI)
다음 AWS CLI 명령으로 IAM OIDC 아이덴티티 프로바이더를 만들고 관리할 수 있어요.
IAM OIDC 아이덴티티 프로바이더 생성 (AWS CLI)
- (선택) AWS 계정의 모든 IAM OIDC 아이덴티티 프로바이더 목록을 얻으려면 다음 명령을 실행해요.
aws iam list-open-id-connect-providers - 새 IAM OIDC 아이덴티티 프로바이더를 만들려면 다음 명령을 실행해요.
aws iam create-open-id-connect-provider
기존 IAM OIDC 아이덴티티 프로바이더의 서버 인증서 지문 목록 업데이트 (AWS CLI)
IAM OIDC 아이덴티티 프로바이더의 서버 인증서 지문 목록을 업데이트하려면 다음 명령을 실행해요.
aws iam update-open-id-connect-provider-thumbprint
기존 IAM OIDC 아이덴티티 프로바이더 태그 지정 (AWS CLI)
기존 IAM OIDC 아이덴티티 프로바이더에 태그를 지정하려면 다음 명령을 실행해요.
aws iam tag-open-id-connect-provider
기존 IAM OIDC 아이덴티티 프로바이더의 태그 나열 (AWS CLI)
기존 IAM OIDC 아이덴티티 프로바이더의 태그를 나열하려면 다음 명령을 실행해요.
aws iam list-open-id-connect-provider-tags
IAM OIDC 아이덴티티 프로바이더에서 태그 제거 (AWS CLI)
기존 IAM OIDC 아이덴티티 프로바이더의 태그를 제거하려면 다음 명령을 실행해요.
aws iam untag-open-id-connect-provider
기존 IAM OIDC 아이덴티티 프로바이더에서 클라이언트 ID 추가·제거 (AWS CLI)
- (선택) AWS 계정의 모든 IAM OIDC 아이덴티티 프로바이더 목록을 얻으려면 다음 명령을 실행해요.
aws iam list-open-id-connect-providers - (선택) IAM OIDC 아이덴티티 프로바이더의 상세 정보를 얻으려면 다음 명령을 실행해요.
aws iam get-open-id-connect-provider - 기존 IAM OIDC 아이덴티티 프로바이더에 새 클라이언트 ID를 추가하려면 다음 명령을 실행해요.
aws iam add-client-id-to-open-id-connect-provider - 기존 IAM OIDC 아이덴티티 프로바이더에서 클라이언트를 제거하려면 다음 명령을 실행해요.
aws iam remove-client-id-from-open-id-connect-provider
IAM OIDC 아이덴티티 프로바이더 삭제 (AWS CLI)
- (선택) AWS 계정의 모든 IAM OIDC 아이덴티티 프로바이더 목록을 얻으려면 다음 명령을 실행해요.
aws iam list-open-id-connect-providers - (선택) IAM OIDC 아이덴티티 프로바이더의 상세 정보를 얻으려면 다음 명령을 실행해요.
aws iam get-open-id-connect-provider - IAM OIDC 아이덴티티 프로바이더를 삭제하려면 다음 명령을 실행해요.
aws iam delete-open-id-connect-provider
OIDC 아이덴티티 프로바이더 생성·관리 (AWS API)
다음 IAM API 명령으로 OIDC 프로바이더를 만들고 관리할 수 있어요.
IAM OIDC 아이덴티티 프로바이더 생성 (AWS API)
- (선택) AWS 계정의 모든 IAM OIDC 아이덴티티 프로바이더 목록을 얻으려면 다음 작업을 호출해요.
ListOpenIDConnectProviders - 새 IAM OIDC 아이덴티티 프로바이더를 만들려면 다음 작업을 호출해요.
CreateOpenIDConnectProvider
기존 IAM OIDC 아이덴티티 프로바이더의 서버 인증서 지문 목록 업데이트 (AWS API)
기존 IAM OIDC 아이덴티티 프로바이더의 서버 인증서 지문 목록을 업데이트하려면 다음 작업을 호출해요.
UpdateOpenIDConnectProviderThumbprint
기존 IAM OIDC 아이덴티티 프로바이더 태그 지정 (AWS API)
기존 IAM OIDC 아이덴티티 프로바이더에 태그를 지정하려면 다음 작업을 호출해요.
TagOpenIDConnectProvider
기존 IAM OIDC 아이덴티티 프로바이더의 태그 나열 (AWS API)
기존 IAM OIDC 아이덴티티 프로바이더의 태그를 나열하려면 다음 작업을 호출해요.
ListOpenIDConnectProviderTags
기존 IAM OIDC 아이덴티티 프로바이더의 태그 제거 (AWS API)
기존 IAM OIDC 아이덴티티 프로바이더의 태그를 제거하려면 다음 작업을 호출해요.
UntagOpenIDConnectProvider
기존 IAM OIDC 아이덴티티 프로바이더에서 클라이언트 ID 추가·제거 (AWS API)
- (선택) AWS 계정의 모든 IAM OIDC 아이덴티티 프로바이더 목록을 얻으려면 다음 작업을 호출해요.
ListOpenIDConnectProviders - (선택) IAM OIDC 아이덴티티 프로바이더의 상세 정보를 얻으려면 다음 작업을 호출해요.
GetOpenIDConnectProvider - 기존 IAM OIDC 아이덴티티 프로바이더에 새 클라이언트 ID를 추가하려면 다음 작업을 호출해요.
AddClientIDToOpenIDConnectProvider - 기존 IAM OIDC 아이덴티티 프로바이더에서 클라이언트 ID를 제거하려면 다음 작업을 호출해요.
RemoveClientIDFromOpenIDConnectProvider
IAM OIDC 아이덴티티 프로바이더 삭제 (AWS API)
- (선택) AWS 계정의 모든 IAM OIDC 아이덴티티 프로바이더 목록을 얻으려면 다음 작업을 호출해요.
ListOpenIDConnectProviders - (선택) IAM OIDC 아이덴티티 프로바이더의 상세 정보를 얻으려면 다음 작업을 호출해요.
GetOpenIDConnectProvider - IAM OIDC 아이덴티티 프로바이더를 삭제하려면 다음 작업을 호출해요.
DeleteOpenIDConnectProvider
더 알아보기 (Learn more)
- OIDC 페더레이션 — OIDC 페더레이션의 개념을 확인해 보세요.
- OpenID Connect 아이덴티티 프로바이더의 지문 얻기 — 지문을 구하는 방법을 살펴보세요.
- 공유 OIDC 프로바이더용 아이덴티티 프로바이더 제어 — 공유 OIDC IdP의 필수 클레임을 참고하세요.