IAM에 SAML 아이덴티티 프로바이더 생성

IAM에 SAML 아이덴티티 프로바이더 생성 (Create a SAML identity provider in IAM)

IAM SAML 2.0 아이덴티티 프로바이더는 SAML 2.0(Security Assertion Markup Language 2.0) 표준을 지원하는 외부 아이덴티티 프로바이더(IdP) 서비스를 설명하는 IAM의 엔터티예요. Shibboleth나 Active Directory Federation Services 같은 SAML 호환 IdP와 AWS 사이에 신뢰를 확립하고 싶을 때 IAM 아이덴티티 프로바이더를 사용해서, 사용자가 AWS 리소스에 접근할 수 있게 해줘요. IAM SAML 아이덴티티 프로바이더는 IAM 트러스트 정책의 프린시펄로 사용돼요.

출처: 문서

본문

이 시나리오에 대한 자세한 내용은 SAML 2.0 페더레이션을 참고하세요.

IAM 아이덴티티 프로바이더는 AWS Management Console이나 AWS CLI, Tools for Windows PowerShell, 또는 AWS API 호출로 만들고 관리할 수 있어요.

SAML 프로바이더를 만든 뒤에는 하나 이상의 IAM 역할을 만들어야 해요. 역할은 (사용자처럼) 자체 자격 증명이 없는 AWS의 아이덴티티예요. 하지만 이 맥락에서 역할은 IdP가 인증한 SAML 페더레이션 프린시펄에게 동적으로 할당돼요. 역할은 IdP가 AWS 접근용 임시 보안 자격 증명을 요청하도록 허용해요. 역할에 할당된 정책이 사용자가 AWS에서 무엇을 할 수 있는지 결정해요. SAML 페더레이션용 역할을 만들려면 제3자 아이덴티티 프로바이더용 역할 만들기를 참고하세요.

마지막으로 역할을 만든 뒤, SAML 페더레이션 프린시펄이 사용하길 원하는 역할과 AWS에 대한 정보로 IdP를 구성해 SAML 신뢰를 완성해요. 이를 IdP와 AWS 사이의 신뢰하는 당사자 트러스트 구성이라고 해요. 신뢰하는 당사자 트러스트를 구성하려면 신뢰하는 당사자 트러스트로 SAML 2.0 IdP 구성과 클레임 추가를 참고하세요.

다루는 주제

  • 사전 요구 사항
  • IAM SAML 아이덴티티 프로바이더 생성·관리 (콘솔)
  • SAML 암호화 키 관리
  • IAM SAML 아이덴티티 프로바이더 생성·관리 (AWS CLI)
  • IAM SAML 아이덴티티 프로바이더 생성·관리 (AWS API)
  • 다음 단계

사전 요구 사항

SAML 아이덴티티 프로바이더를 만들기 전에 IdP에서 다음 정보가 있어야 해요.

  • IdP의 SAML 메타데이터 문서를 받아요. 이 문서는 발급자 이름, 만료 정보, IdP에서 받은 SAML 인증 응답(어서션)을 검증하는 데 사용할 수 있는 키를 포함해요. 메타데이터 문서를 생성하려면 외부 IdP가 제공하는 아이덴티티 관리 소프트웨어를 사용해요.
    • 중요
      이 메타데이터 파일은 발급자 이름, 만료 정보, IdP에서 받은 SAML 인증 응답(어서션)을 검증하는 데 사용할 수 있는 키를 포함해요. 메타데이터 파일은 BOM(byte order mark) 없는 UTF-8 형식으로 인코딩되어야 해요. BOM을 제거하려면 Notepad++ 같은 텍스트 편집 도구로 파일을 UTF-8로 인코딩할 수 있어요.
    • SAML 메타데이터 문서의 일부로 포함된 X.509 인증서는 최소 1024비트의 키 크기를 사용해야 해요. 또한 X.509 인증서는 반복되는 확장(extensions)이 없어야 해요. 확장을 사용할 수는 있지만, 확장은 인증서에 한 번만 나타날 수 있어요. X.509 인증서가 이 두 조건 중 하나라도 충족하지 않으면 IdP 생성이 실패하고 "Unable to parse metadata" 오류를 반환해요.
    • SAML V2.0 메타데이터 상호운용성 프로파일 버전 1.0에서 정의한 대로, IAM은 SAML 메타데이터 문서의 X.509 인증서 만료를 평가하거나 조치하지 않아요. 만료된 X.509 인증서가 우려된다면, 조직의 거버넌스·보안 정책에 따라 인증서 만료 날짜를 모니터링하고 교체하길 권장해요.
  • SAML 암호화를 활성화하기로 선택하면 IdP로 프라이빗 키 파일을 생성하고 이 파일을 .pem 파일 형식으로 IAM SAML 구성에 업로드해야 해요. AWS STS는 IdP에 업로드된 공개 키에 대응하는 SAML 응답을 복호화하려면 이 프라이빗 키가 필요해요. 다음 알고리즘이 지원돼요.
    • 암호화 알고리즘: AES-128, AES-256, RSA-OAEP
    • 키 전송 알고리즘: AES-CBC, AES-GCM
    • 프라이빗 키를 생성하는 단계는 사용하는 아이덴티티 프로바이더의 문서를 참고하세요.
    • 참고
      IAM Identity Center와 Amazon Cognito는 IAM SAML 아이덴티티 프로바이더의 암호화된 SAML 어서션을 지원하지 않아요. Amazon Cognito user pools로 암호화된 SAML 어서션을 Amazon Cognito identity pool 페더레이션에 간접적으로 추가할 수 있어요. User pool은 IAM SAML 페더레이션과 독립적인 SAML 페더레이션을 가지며 SAML 서명·암호화를 지원해요. 이 기능이 identity pool에 직접 확장되지는 않지만, user pool이 identity pool의 IdP가 될 수 있어요. identity pool에 SAML 암호화를 사용하려면, identity pool의 IdP인 user pool에 암호화가 있는 SAML 프로바이더를 추가하세요. SAML 프로바이더는 user pool이 제공하는 키로 SAML 어서션을 암호화할 수 있어야 해요. User pool은 IAM이 제공한 인증서로 암호화된 어서션은 받아들이지 않아요.

사용 가능한 많은 IdP를 AWS와 동작하도록 구성하는 방법(필요한 SAML 메타데이터 문서 생성 포함)은 타사 SAML 솔루션 프로바이더를 AWS와 통합을 참고하세요.

SAML 페더레이션에 대한 도움이 필요하면 SAML 페더레이션 문제 해결을 참고하세요.

IAM SAML 아이덴티티 프로바이더 생성·관리 (콘솔)

AWS Management Console로 IAM SAML 아이덴티티 프로바이더를 만들고, 업데이트하고, 삭제할 수 있어요. SAML 페더레이션에 대한 도움이 필요하면 SAML 페더레이션 문제 해결을 참고하세요.

IAM SAML 아이덴티티 프로바이더 생성 (콘솔)
  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
  2. 탐색 창에서 Identity providers를 선택하고 Add provider를 선택해요.
  3. Configure provider에서 SAML을 선택해요.
  4. 아이덴티티 프로바이더의 이름을 입력해요.
  5. Metadata document에서 Choose file을 선택하고, 사전 요구 사항에서 다운로드한 SAML 메타데이터 문서를 지정해요.
    • 참고
      아이덴티티 프로바이더에 표시되는 Valid until 날짜는 프로바이더 생성 시 IAM이 설정해요. 이는 SAML 메타데이터 문서의 validUntil 또는 cacheDuration 속성을 반영하지 않아요. IAM은 이 메타데이터 속성으로 Valid until 날짜를 결정하지 않아요. IAM은 SAML 인증 중 SAML 메타데이터 문서나 X.509 인증서의 만료를 평가하거나 조치하지 않아요. SAML 인증 유효성은 어서션의 Conditions와 SubjectConfirmationData 요소의 NotOnOrAfter 속성을 사용해 어서션 수준에서 강제돼요. 만료된 X.509 인증서가 우려된다면, 조직의 거버넌스·보안 정책에 따라 만료 날짜를 모니터링하고 교체하길 권장해요.
  6. (선택) SAML encryption에서 Choose file을 선택하고 사전 요구 사항에서 만든 프라이빗 키 파일을 선택해요. IdP에서 암호화된 요청만 받아들이려면 Require encryption을 선택해요.
  7. (선택) Add tags에서 IdP를 식별·정리하는 데 도움이 되는 키-값 쌍을 추가할 수 있어요. 태그로 AWS 리소스 접근을 제어할 수도 있어요. SAML 아이덴티티 프로바이더 태그 지정에 대해 더 알아보려면 IAM SAML 아이덴티티 프로바이더 태그 지정을 참고하세요. 각 태그 키-값 쌍의 값을 입력한 뒤 Add tag를 선택해요.
  8. 제공한 정보를 확인하고, 완료되면 Add provider를 선택해요.
  9. 아이덴티티 프로바이더에 IAM 역할을 할당해, 아이덴티티 프로바이더가 관리하는 외부 사용자 아이덴티티에게 계정의 AWS 리소스에 접근할 권한을 줘요. 아이덴티티 페더레이션용 역할 만들기에 대해 더 알아보려면 제3자 아이덴티티 프로바이더용 역할 만들기를 참고하세요.
    • 참고
      역할 트러스트 정책에 사용되는 SAML IdP는 역할과 같은 계정에 있어야 해요.
SAML 프로바이더 삭제 (콘솔)
  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
  2. 탐색 창에서 Identity providers를 선택해요.
  3. 삭제할 아이덴티티 프로바이더 옆의 라디오 버튼을 선택해요.
  4. Delete를 선택해요. 새 창이 열려요.
  5. 필드에 delete라는 단어를 입력해 프로바이더를 삭제할 것임을 확인한 뒤 Delete를 선택해요.

SAML 암호화 키 관리

IAM SAML 프로바이더가 외부 IdP의 SAML 응답에서 암호화된 어서션을 받도록 구성할 수 있어요. 사용자는 sts:AssumeRoleWithSAML을 호출해 암호화된 SAML 어서션으로 AWS에서 역할을 수임할 수 있어요.

SAML 암호화는 어서션이 중개자나 제3자를 통해 전달될 때 안전하게 유지되도록 보장해요. 또한 이 기능은 FedRAMP나 SAML 어서션 암호화를 요구하는 내부 규정 준수 정책 요구 사항을 충족하는 데 도움을 줘요.

IAM SAML 아이덴티티 프로바이더 구성은 IAM에 SAML 아이덴티티 프로바이더 생성을 참고하세요. SAML 페더레이션에 대한 도움이 필요하면 SAML 페더레이션 문제 해결을 참고하세요.

SAML 암호화 키 교체

IAM은 IAM SAML 프로바이더에 업로드한 프라이빗 키로 IdP의 암호화된 SAML 어서션을 복호화해요. 각 아이덴티티 프로바이더에 최대 두 개의 프라이빗 키 파일을 저장해 필요에 따라 프라이빗 키를 교체할 수 있어요. 파일이 두 개 저장되면 각 요청은 먼저 Added on 날짜가 가장 최신인 키로 복호화를 시도하고, 실패하면 Added on 날짜가 가장 오래된 키로 복호화를 시도해요.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 열어요.
  2. 탐색 창에서 Identity providers를 선택하고 목록에서 프로바이더를 선택해요.
  3. SAML encryption 탭을 선택하고 Add new key를 선택해요.
  4. Choose file을 선택하고 IdP에서 내려받은 프라이빗 키를 .pem 파일로 업로드한 뒤 Add key를 선택해요.
  5. Private keys for SAML decryption 섹션에서 만료된 프라이빗 키 파일을 선택하고 Remove를 선택해요. 어서션 복호화의 첫 시도가 성공하도록, 새 프라이빗 키를 추가한 뒤 만료된 프라이빗 키를 제거하길 권장해요.

IAM SAML 아이덴티티 프로바이더 생성·관리 (AWS CLI)

AWS CLI로 SAML 프로바이더를 만들고, 업데이트하고, 삭제할 수 있어요. SAML 페더레이션에 대한 도움이 필요하면 SAML 페더레이션 문제 해결을 참고하세요.

IAM 아이덴티티 프로바이더 생성 및 메타데이터 문서 업로드 (AWS CLI)

이 명령을 실행해요: aws iam create-saml-provider

IAM SAML 아이덴티티 프로바이더 업데이트 (AWS CLI)

IAM SAML 프로바이더의 메타데이터 파일, SAML 암호화 설정, 프라이빗 키 복호화 파일 교체를 업데이트할 수 있어요. 프라이빗 키를 교체하려면 새 프라이빗 키를 추가한 뒤 별도의 요청으로 옛 키를 제거해요. 프라이빗 키 교체에 대한 자세한 내용은 SAML 암호화 키 관리를 참고하세요.

이 명령을 실행해요: aws iam update-saml-provider

기존 IAM 아이덴티티 프로바이더 태그 지정 (AWS CLI)

이 명령을 실행해요: aws iam tag-saml-provider

기존 IAM 아이덴티티 프로바이더의 태그 나열 (AWS CLI)

이 명령을 실행해요: aws iam list-saml-provider-tags

기존 IAM 아이덴티티 프로바이더에서 태그 제거 (AWS CLI)

이 명령을 실행해요: aws iam untag-saml-provider

IAM SAML 아이덴티티 프로바이더 삭제 (AWS CLI)
  1. (선택) ARN, 생성 날짜, 만료 같은 모든 프로바이더의 정보를 나열하려면 다음 명령을 실행해요.
    aws iam list-saml-providers
    
  2. (선택) ARN, 생성 날짜, 만료 날짜, 암호화 설정, 프라이빗 키 정보 같은 특정 프로바이더의 정보를 얻으려면 다음 명령을 실행해요.
    aws iam get-saml-provider
    
  3. IAM 아이덴티티 프로바이더를 삭제하려면 다음 명령을 실행해요.
    aws iam delete-saml-provider
    

IAM SAML 아이덴티티 프로바이더 생성·관리 (AWS API)

AWS API로 SAML 프로바이더를 만들고, 업데이트하고, 삭제할 수 있어요. SAML 페더레이션에 대한 도움이 필요하면 SAML 페더레이션 문제 해결을 참고하세요.

IAM 아이덴티티 프로바이더 생성 및 메타데이터 문서 업로드 (AWS API)

이 작업을 호출해요: CreateSAMLProvider

IAM SAML 아이덴티티 프로바이더 업데이트 (AWS API)

IAM SAML 프로바이더의 메타데이터 파일, SAML 암호화 설정, 프라이빗 키 복호화 파일 교체를 업데이트할 수 있어요. 프라이빗 키를 교체하려면 새 프라이빗 키를 추가한 뒤 별도의 요청으로 옛 키를 제거해요. 프라이빗 키 교체에 대한 자세한 내용은 SAML 암호화 키 관리를 참고하세요.

이 작업을 호출해요: UpdateSAMLProvider

기존 IAM 아이덴티티 프로바이더 태그 지정 (AWS API)

이 작업을 호출해요: TagSAMLProvider

기존 IAM 아이덴티티 프로바이더의 태그 나열 (AWS API)

이 작업을 호출해요: ListSAMLProviderTags

기존 IAM 아이덴티티 프로바이더에서 태그 제거 (AWS API)

이 작업을 호출해요: UntagSAMLProvider

IAM 아이덴티티 프로바이더 삭제 (AWS API)
  1. (선택) ARN, 생성 날짜, 만료 같은 모든 IdP의 정보를 나열하려면 다음 작업을 호출해요.
    ListSAMLProviders
    
  2. (선택) ARN, 생성 날짜, 만료 날짜, 암호화 설정, 프라이빗 키 정보 같은 특정 프로바이더의 정보를 얻으려면 다음 작업을 호출해요.
    GetSAMLProvider
    
  3. IdP를 삭제하려면 다음 작업을 호출해요.
    DeleteSAMLProvider
    

다음 단계

SAML 아이덴티티 프로바이더를 만든 뒤, IdP와 신뢰하는 당사자 트러스트를 설정해요. 또한 IdP의 인증 응답의 클레임을 정책에서 사용해 역할에 대한 접근을 제어할 수 있어요.

  • IdP에 AWS를 서비스 프로바이더로 알려야 해요. 이를 IdP와 AWS 사이의 신뢰하는 당사자 트러스트 추가라고 해요. 신뢰하는 당사자 트러스트를 추가하는 정확한 과정은 사용하는 IdP에 따라 달라져요. 자세한 내용은 신뢰하는 당사자 트러스트로 SAML 2.0 IdP 구성과 클레임 추가를 참고하세요.
  • IdP가 클레임을 포함한 응답을 AWS로 보낼 때, 들어오는 클레임의 대부분이 AWS 컨텍스트 키에 매핑돼요. 정책의 Condition 요소에서 이 컨텍스트 키를 사용해 역할에 대한 접근을 제어할 수 있어요. 자세한 내용은 인증 응답용 SAML 어서션 구성을 참고하세요.

더 알아보기 (Learn more)