SAML 2.0 페더레이션 프린시펄의 AWS Management Console 접근 활성화

SAML 2.0 페더레이션 프린시펄의 AWS Management Console 접근 활성화 (Enabling SAML 2.0 federated principals to access the AWS Management Console)

역할을 사용해 SAML 2.0 호환 아이덴티티 프로바이더(IdP)와 AWS를 구성해서, SAML 페더레이션 프린시펄이 AWS Management Console에 접근하도록 허용할 수 있어요. 역할은 사용자에게 콘솔에서 작업을 수행할 권한을 부여해요. SAML 페더레이션 프린시펄에게 AWS에 접근할 다른 방법을 주고 싶다면 다음 주제 중 하나를 참고하세요.

  • AWS CLI: 역할로 전환 (AWS CLI)
  • Tools for Windows PowerShell: 역할로 전환 (Tools for Windows PowerShell)
  • AWS API: 역할로 전환 (AWS API)

출처: 문서

본문

개요

다음 그림은 SAML 지원 싱글 사인온의 흐름을 보여줘요.

참고

이 SAML 사용 방식은 SAML 2.0 페더레이션에 있는 더 일반적인 방식과 다르다. 이 워크플로는 사용자를 대신해 AWS Management Console을 연다. 이 때문에 AssumeRoleWithSAML API를 직접 호출하는 대신 AWS 로그인 엔드포인트를 사용해야 해요. 엔드포인트는 사용자를 대신해 API를 호출하고, 사용자의 브라우저를 AWS Management Console로 자동 리다이렉트하는 URL을 반환해요.

그림은 다음 단계를 보여줘요.

  1. 사용자가 조직의 포털을 방문해 AWS Management Console로 갈 옵션을 선택해요. 조직에서 포털은 보통, 조직과 AWS 사이의 신뢰 교환을 처리하는 IdP의 기능이에요. 예를 들어 Active Directory Federation Services에서 포털 URL은 https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx예요.
  2. 포털이 조직에서 사용자의 아이덴티티를 확인해요.
  3. 포털이 사용자를 식별하는 어서션과 사용자에 대한 속성을 포함한 SAML 인증 응답을 생성해요. 또한 IdP를 구성해 콘솔 세션이 얼마나 유효한지 지정하는 SessionDuration이라는 SAML 어서션 속성을 포함시킬 수 있어요. IdP를 구성해 속성을 세션 태그로 전달할 수도 있어요. 포털은 이 응답을 클라이언트 브라우저에 보내요.
  4. 클라이언트 브라우저가 AWS 싱글 사인온 엔드포인트로 리다이렉트되고 SAML 어서션을 게시해요.
  5. 엔드포인트가 사용자를 대신해 임시 보안 자격 증명을 요청하고, 그 자격 증명을 사용하는 콘솔 로그인 URL을 만들어요.
  6. AWS가 로그인 URL을 리다이렉트로 클라이언트에 다시 보내요.
  7. 클라이언트 브라우저가 AWS Management Console로 리다이렉트돼요. SAML 인증 응답이 여러 IAM 역할에 매핑되는 속성을 포함하면, 사용자는 먼저 콘솔 접근에 사용할 역할을 선택하라는 프롬프트를 받아요.

사용자 관점에서 이 과정은 투명하게 일어나요. 조직의 내부 포털에서 시작해 AWS 자격 증명을 전혀 제공하지 않고 AWS Management Console에 도착하게 돼요.

동작을 구성하는 방법의 개요와 상세 단계에 대한 링크는 다음 섹션을 참고하세요.

네트워크를 AWS용 SAML 프로바이더로 구성

조직의 네트워크 안에서 아이덴티티 스토어(예: Windows Active Directory)를 Windows Active Directory Federation Services, Shibboleth 같은 SAML 기반 IdP와 함께 동작하도록 구성해요. IdP로 조직을 IdP로 설명하고 인증 키를 포함하는 메타데이터 문서를 생성해요. 또한 AWS Management Console에 대한 사용자 요청을, SAML 어서션을 사용한 인증을 위해 AWS SAML 엔드포인트로 라우팅하도록 조직의 포털을 구성해요. IdP가 metadata.xml 파일을 생성하도록 구성하는 방법은 IdP에 따라 달라요. 지침은 사용하는 IdP의 문서를 참고하거나, 지원되는 많은 SAML 프로바이더의 웹 문서 링크를 위해 타사 SAML 솔루션 프로바이더를 AWS와 통합을 참고하세요.

IAM에 SAML 프로바이더 생성

다음으로 AWS Management Console에 로그인해 IAM 콘솔로 이동해요. 거기서 새 SAML 프로바이더를 만들어요. SAML 프로바이더는 조직의 IdP에 대한 정보를 담는 IAM의 엔터티예요. 이 과정의 일부로 이전 섹션에서 조직의 IdP 소프트웨어가 만든 메타데이터 문서를 업로드해요. 자세한 내용은 IAM에 SAML 아이덴티티 프로바이더 생성을 참고하세요.

SAML 페더레이션 프린시펄을 위한 AWS 권한 구성

다음 단계는 IAM과 조직의 IdP 사이에 신뢰 관계를 확립하는 IAM 역할을 만드는 거예요. 이 역할은 페더레이션 목적으로 IdP를 프린시펄(신뢰할 수 있는 엔터티)로 식별해야 해요. 역할은 또한 조직의 IdP가 인증한 사용자가 AWS에서 무엇을 할 수 있는지 정의해요. IAM 콘솔로 이 역할을 만들 수 있어요. 누가 역할을 수임할 수 있는지 나타내는 트러스트 정책을 만들 때, 앞서 IAM에서 만든 SAML 프로바이더를 지정해요. 또한 역할을 수임하려면 사용자가 일치해야 하는 하나 이상의 SAML 속성을 지정해요. 예를 들어 SAML eduPersonOrgDN 값이 ExampleOrg인 사용자만 로그인하도록 허용할 수 있어요. 역할 마법사는 saml:aud 속성을 테스트하는 조건을 자동으로 추가해, 역할이 AWS Management Console 로그인에만 수임되도록 확인해요.

SAML 암호화가 필요하면 로그인 URL에 AWS가 SAML 프로바이더에 할당한 고유 식별자를 포함해야 해요. 이 식별자는 Identity provider 세부 정보 페이지에서 찾을 수 있어요. 역할의 트러스트 정책은 다음과 같을 수 있어요.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:edupersonorgdn": "ExampleOrg",
                    "saml:aud": "https://region-code.signin.aws.amazon.com/saml/acs/SAMLSP4SHN3UIS2D558H46"
                }
            }
        }
    ]
}
참고

역할 트러스트 정책에 사용되는 SAML IdP는 역할과 같은 계정에 있어야 해요.

saml:aud 속성에 https://region-code.signin.aws.amazon.com/static/saml-metadata.xml의 리전 엔드포인트를 사용하길 권장해요. 가능한 region-code 값 목록은 AWS Sign-In 엔드포인트의 Region 열을 참고하세요.

역할의 권한 정책에서는 역할, 사용자, 그룹과 마찬가지로 권한을 지정해요. 예를 들어 조직의 사용자가 Amazon EC2 인스턴스를 관리하도록 허용된다면, 권한 정책에서 Amazon EC2 작업을 명시적으로 허용해요. Amazon EC2 Full Access 관리형 정책을 할당해 이렇게 할 수 있어요.

SAML IdP용 역할 생성에 대한 자세한 내용은 SAML 2.0 페더레이션용 역할 만들기(콘솔)를 참고하세요.

구성 마무리와 SAML 어서션 생성

SAML IdP에 AWS가 서비스 프로바이더임을 알리려면 https://region-code.signin.aws.amazon.com/static/saml-metadata.xml 또는 https://signin.aws.amazon.com/static/saml-metadata.xml에 있는 saml-metadata.xml 파일을 설치해요. SAML 암호화가 필요하면 파일은 https://region-code.signin.aws.amazon.com/static/saml/SAMLSP4SHN3UIS2D558H46/saml-metadata.xml에 있어요.

가능한 region-code 값 목록은 AWS Sign-In 엔드포인트의 Region 열을 참고하세요.

이 파일을 설치하는 방법은 IdP에 따라 달라요. 일부 프로바이더는 URL을 입력할 수 있게 해주며, 그러면 IdP가 파일을 가져와 설치해 줘요. 다른 프로바이더는 URL에서 파일을 다운로드한 뒤 로컬 파일로 제공해야 해요. 세부 사항은 IdP 문서를 참조하거나, 지원되는 많은 SAML 프로바이더의 웹 문서 링크를 위해 타사 SAML 솔루션 프로바이더를 AWS와 통합을 참고하세요.

또한 인증 응답의 일부로 IdP가 AWS에 SAML 속성으로 전달하길 원하는 정보를 구성해요. 이 정보의 대부분은 정책에서 평가할 수 있는 조건 컨텍스트 키로 AWS에 나타나요. 이 조건 키는 올바른 컨텍스트의 인가된 사용자만 AWS 리소스에 접근할 권한이 부여되도록 보장해요. 콘솔이 사용될 수 있는 시기를 제한하는 시간 창을 지정할 수 있어요. 사용자가 자격 증명을 새로 고쳐야 하기 전에 콘솔에 접근할 수 있는 최대 시간(최대 12시간)도 지정할 수 있어요. 자세한 내용은 인증 응답용 SAML 어서션 구성을 참고하세요.

더 알아보기 (Learn more)