1. 개념
AWS 외부의 사용자에게 일시적으로 자격증명을 부여하여 AWS 계정의 리소스에 접근하도록 하는 방법
2. 사용목적
1) 사내 조직에 이미 구성원들이 존재하나, 그들에게 특정 IAM 사용자를 발급하기를 원하지 않을 때
2) 동시에 AWS 외부의 사용자들을 관리하고자 할 때
3. 사용예시
어떤 회사가 자체적으로 Active Directory와 같은 신원시스템을 가지고 있거나,
사용자가 사용하는 웹/모바일 어플리케이션에서 AWS 리소스에 접근이 필요한 경우에 사용한다.
4. 동작원리
① IDP(Identity Provider) 로부터 자격증명을 얻기 위해 IDP와 AWS 간에 신뢰관계를 형성한다.
② 사용자가 IDP로 로그인 요청을 보내고, 자격증명(Credentials)을 받는다.
③ 임시 자격증명(Credentials)을 이용하여 AWS에 접근한다.
5. 종류와 특징
1) SAML 2.0 (Security Assertion Markup Language)
- IDP의 공개 표준
- 임시 자격증명으로 AWS Console/CLI/API 접근 가능
- ADFS(Active Directory Federation Services)에 속한 사용자마다 IAM 사용자를 발급할 필요가 없다.
(단, IAM 과 SAML 2.0 IDP 간에 신뢰관계가 형성되어야 한다.)
- 내부적으로 STS 서비스의 AssumeRoleWithSAML API를 호출하고, SAML Assertion을 통해 임시 자격증명을 얻는다.
(SAML Assertion이란 사용자 권한 인증을 위해 IDP에서 AWS로 보내는 XML 형식의 문서를 말한다.)
- 오래된 방식으로 AWS SSO 서비스로 대체되고 있다.
ex1) AWS API Access 과정 :
① 사용자(또는 어플리케이션)가 IDP 로 인증 요청을 보낸다.
② IDP 는 요청 정보와 LDAP 기반 저장소에 저장되어 있는 인증 정보를 비교하여 검증한다.
③ 인증이 성공하면 IDP 는 사용자에게 SAML Assertion을 반환한다.
④ 사용자는 SAML Assertion을 이용하여 STS 서비스의 AssumeRoleWithSAML API를 호출한다.
⑤ STS 서비스는 SAML Assertion을 검증한 후, 임시 자격증명을 사용자에게 발급한다.
⑥ 사용자는 임시 자격증명을 이용하여 AWS API에 접근할 수 있다.
ex2) AWS Console Access 과정 :
① 사용자가 포털로 로그인을 시도하면 해당 인증 요청을 IDP 로 보낸다.
② IDP 는 요청 정보와 LDAP 기반 저장소에 저장되어 있는 인증 정보를 비교하여 검증한다.
③ 인증이 성공하면 IDP 는 사용자에게 SAML Assertion을 반환한다.
④ 엔드포인트 주소(https://signin.aws.amazon.com/saml)로 로그인을 시도한다.
⑤ STS 서비스를 통해 임시 자격증명과 함께 AWS Console URL 주소를 반환받는다.
⑥ 사용자는 임시 자격증명을 이용하여 AWS Console에 접근할 수 있다.
ex3) ADFS를 이용한 AWS Console Access 과정 :
① 사용자가 포털로 로그인을 시도하면 해당 인증 요청을 ADFS 로 보낸다.
② ADFS 는 요청 정보와 AD에 저장되어 있는 인증 정보를 비교하여 검증한다.
③ 인증이 성공하면 ADFS 는 사용자에게 SAML Assertion을 반환한다.
④ 엔드포인트 주소(https://signin.aws.amazon.com/saml)로 로그인을 시도한다.
⑤ STS 서비스를 통해 임시 자격증명과 함께 AWS Console URL 주소를 반환받는다.
⑥ 사용자는 임시 자격증명을 이용하여 AWS Console에 접근할 수 있다.
2) Custom Identity Broker
- SAML 2.0 과 호환이 불가능한 경우
- 적절한 IAM 역할을 부여해야 한다.
- 직접 STS 서비스의 AssumeRole API 또는 GetFederation Token API를 호출할 수 있어야 한다.
ex) Custom Identity Broker를 이용한 AWS Access 과정 :
① 사용자가 Custom Identity Broker로 로그인을 시도한다.
② Custom Identity Broker는 요청 정보와 LDAP 기반 저장소에 저장되어 있는 인증 정보를 비교하여 검증한다.
③ Custom Identity Broker가 직접 STS 서비스로 임시 자격증명을 요청하여 전달받는다.
④ 사용자는 Custom Identity Broker로부터 임시 자격증명 또는 URL 주소를 전달받는다.
⑤ 사용자는 임시 자격증명을 이용하여 AWS Console/API에 접근할 수 있다.
3) Web Identity Federation (with Cognito)
- 클라이언트에서 AWS 리소스에 직접 접근이 필요한 경우
- Cognito 서비스와 함께 사용하는 것을 권장한다.
- Cognito 서비스를 사용하면 최소 권한의 IAM 역할 또는 정책을 적용할 수 있으므로 보안성이 좋다.
- IAM Policy 변수를 사용하여 조건을 주거나 정책을 제한할 수 있다.
- Cognito 서비스는 익명의 사용자를 대상으로 할 수 있으며, MFA 인증을 지원한다.
- Cognito 서비스는 데이터 동기화가 된다.
- TVM(Token Vending Machine)을 통해 토큰을 자격증명으로 교환할 수 있다.
ex1) Web Identity Federation을 이용한 AWS Access 과정 :
① 클라이언트에서 3rd-party IDP(Amazon Google, Facebook, OIDC) 로 인증 요청을 보낸다.
② 3rd-party IDP 는 웹 ID 토큰을 클라이언트에게 반환한다.
③ 클라이언트는 STS 서비스의 AssumeRoleWithWebIdentity API를 호출한다.
④ STS 서비스는 웹 ID 토큰을 받고, 임시 자격증명을 클라이언트에게 발급한다.
⑤ 클라이언트는 임시 자격증명을 이용하여 AWS 리소스에 직접 접근할 수 있다.
ex2) Web Identity Federation with Cognito를 이용한 AWS Access 과정 :
① 클라이언트에서 3rd-party IDP(Amazon, Google, Facebook, OIDC) 로 인증 요청을 보낸다.
② 3rd-party IDP 는 웹 ID 토큰을 클라이언트에게 반환한다.
③ 클라이언트에서 Cognito 서비스로 웹 ID 토큰을 전달하고 Cognito 토큰을 교환받는다.
④ 클라이언트는 STS 서비스로 Cognito 토큰을 전달하고 임시 자격증명으로 교환받는다.
⑤ 클라이언트는 임시 자격증명을 이용하여 AWS 리소스에 직접 접근할 수 있다.
ex3) IAM Policy 변수 예시
${cognito-identity.amazonaws.com:sub}
${www.amazon.com:user_id}
${graph.facebook.com:id}
${accounts.google.com:sub}
4) SSO
- 별도 주제
[출처]
1) Udemy 강의, "Ultimate AWS Certified Solutions Architect Professional 2023", https://www.udemy.com/course/aws-solutions-architect-professional
'AWS > Service' 카테고리의 다른 글
[AWS] Control Tower (0) | 2023.04.25 |
---|---|
[AWS] IAM Identity Center (0) | 2023.04.14 |
[AWS] Service Control Policies (0) | 2023.04.12 |
[AWS] Organizations (0) | 2023.04.10 |
[AWS] Directory Service (0) | 2023.04.07 |