아이덴티티 프로바이더와 AWS 페더레이션
아이덴티티 프로바이더와 AWS 페더레이션 (Identity providers and federation into AWS)
모범 사례로, AWS 리소스에 접근해야 하는 **사람 사용자(human user)**는 AWS 계정마다 개별 IAM 사용자를 만들기보다, 아이덴티티 프로바이더(IdP)와의 **페더레이션(federation)**을 사용하도록 권장해요. IdP를 이용하면 사용자 아이덴티티를 AWS 밖에서 관리하고, 그 외부 사용자 아이덴티티에 우리 계정의 AWS 리소스를 쓰는 권한을 부여할 수 있어요. 이미 사내 사용자 디렉터리 같은 자체 아이덴티티 시스템을 운영 중인 조직이라면 특히 유용하고, AWS 리소스 접근이 필요한 모바일 앱이나 웹 애플리케이션을 만드는 경우에도 유용해요.
출처: 문서
본문
참고
사람 사용자를 IAM에서 SAML 페더레이션을 쓰는 대신, IAM Identity Center에서 외부 SAML 아이덴티티 프로바이더로 관리할 수도 있어요. IAM Identity Center가 IdP와 페더레이션하면 조직 내 여러 AWS 계정과 여러 AWS 애플리케이션에 접근 권한을 줄 수 있어요. IAM 사용자가 꼭 필요한 상황은 IAM 사용자를 만들어야 하는 경우를 참고하세요.
또한 계정 접근 매니저(account access manager) — 조직의 계정 전반에 걸쳐 기존 IAM 역할을 IAM Identity Center 사용자·그룹에 할당하게 해주는 IAM 기능 — 를 쓸 수도 있어요. 권한 세트(permission sets)와 함께 쓰거나 단독으로 쓸 수 있어요.
IAM Identity Center를 켜지 않고 단일 AWS 계정을 쓰는 편이 좋다면, 외부 IdP가 OpenID Connect(OIDC) 또는 **SAML 2.0(보안 어서션 마크업 언어 2.0)**으로 AWS에 아이덴티티 정보를 전달하는 IAM을 사용하면 돼요. OIDC는 GitHub Actions처럼 AWS 밖에서 도는 애플리케이션을 AWS 리소스에 연결해요. 잘 알려진 SAML IdP로는 Shibboleth와 Active Directory Federation Services가 있어요.
아이덴티티 프로바이더를 쓰면 커스텀 로그인 코드를 만들거나 자체 사용자 아이덴티티를 관리할 필요가 없어요. IdP가 그걸 다 처리해 주거든요. 외부 사용자는 IdP를 통해 로그인하고, 우리는 그 외부 아이덴티티에 계정의 AWS 리소스 권한을 부여할 수 있어요. IdP를 쓰면 애플리케이션에 접근 키 같은 장기 보안 자격 증명을 배포하거나 내장하지 않아도 되므로 계정 보안 유지에도 도움이 돼요.
어떤 페더레이션 유형(IAM, IAM Identity Center, Amazon Cognito)이 우리 사용 사례에 맞는지 다음 표를 보고 판단해 보세요. 아래 요약과 표는 사용자가 AWS 리소스에 페더레이션 접근하는 방법에 대한 개요예요.
| IAM 페더레이션 유형 | 계정 유형 | 접근을 관리하는 대상 | 지원되는 아이덴티티 소스 |
|---|---|---|---|
| IAM Identity Center와 페더레이션 | AWS Organizations로 관리되는 여러 계정 | 조직의 사람 사용자 | SAML 2.0, 관리형 Active Directory, Identity Center 디렉터리 |
| IAM과 페더레이션 | 단일 독립 계정 | 단기·소규모 배포의 사람 사용자, 머신 사용자 | SAML 2.0, OIDC |
| Amazon Cognito identity pools와 페더레이션 | 모든 계정 | 리소스 접근에 IAM 권한이 필요한 앱 사용자 | SAML 2.0, OIDC, 선택한 OAuth 2.0 소셜 아이덴티티 프로바이더 |
IAM Identity Center와 페더레이션
사람 사용자의 중앙 집중식 접근 관리를 위해서는 IAM Identity Center로 계정과 그 계정 안의 권한 접근을 관리하길 권장해요. IAM Identity Center의 사용자는 AWS 리소스에 대한 단기 자격 증명을 부여받아요. 사용자·그룹에 AWS 리소스 접근을 할당할 때 Active Directory, 외부 IdP, 또는 IAM Identity Center 디렉터리를 아이덴티티 소스로 쓸 수 있어요.
IAM Identity Center는 SAML(Security Assertion Markup Language) 2.0과의 아이덴티티 페더레이션을 지원해서, AWS 액세스 포털 안의 애플리케이션 사용 권한이 있는 사용자에게 페더레이션된 싱글 사인온(SSO) 접근을 제공해요. 그러면 사용자는 AWS Management Console과 Microsoft 365, SAP Concur, Salesforce 같은 타사 애플리케이션을 포함한 SAML 지원 서비스에 싱글 사인온으로 접근할 수 있어요.
IAM과 페더레이션
사람 사용자는 IAM Identity Center에서 관리하길 강력히 권장하지만, 단기·소규모 배포에서는 IAM으로 페더레이션된 프린시펄 접근을 활성화할 수도 있어요. IAM은 별도의 SAML 2.0 IdP와 OpenID Connect(OIDC) IdP를 쓰고, 접근 제어에 페더레이션된 프린시펄 속성을 활용하게 해줘요. IAM으로 비용 센터(cost center), 직함(title), 로케일(locale) 같은 사용자 속성을 IdP에서 AWS로 전달하고, 그 속성에 기반한 세밀한 접근 권한을 구현할 수 있어요.
**워크로드(workload)**는 비즈니스 가치를 내는 리소스와 코드의 집합으로, 애플리케이션이나 백엔드 프로세스를 예로 들 수 있어요. 워크로드는 AWS 서비스·애플리케이션·운영 도구·컴포넌트에 요청을 보내기 위해 IAM 아이덴티티를 요구할 수 있어요. 여기에는 Amazon EC2 인스턴스나 AWS Lambda 함수처럼 AWS 환경에서 도는 머신들이 포함돼요.
외부 당사자에게 접근이 필요한 **머신 아이덴티티(machine identity)**도 관리할 수 있어요. 머신 아이덴티티에 접근을 주려면 IAM 역할을 써요. IAM 역할은 특정 권한을 갖고, 역할 세션과 함께 임시 보안 자격 증명에 의존해 AWS에 접근하는 방법을 제공해요. AWS 밖에 있으면서 우리 AWS 환경에 접근해야 하는 머신도 있을 수 있는데, AWS 밖에서 도는 머신에는 IAM Roles Anywhere를 쓸 수 있어요. 역할에 대한 자세한 내용은 IAM 역할을, 역할로 AWS 계정 간에 접근을 위임하는 방법은 IAM 튜토리얼: IAM 역할로 AWS 계정 간 접근 위임을 참고하세요.
IdP를 IAM에 직접 연결하려면 AWS 계정과 IdP 사이의 신뢰 관계를 만드는 아이덴티티 프로바이더 엔터티를 생성해요. IAM은 OpenID Connect(OIDC) 또는 SAML 2.0과 호환되는 IdP를 지원해요. 이 IdP를 AWS에서 쓰는 방법은 다음과 같습니다.
Amazon Cognito identity pools와 페더레이션
Amazon Cognito는 모바일·웹 앱에서 사용자를 인증·인가하려는 개발자를 위해 설계됐어요. Cognito user pools는 앱에 로그인·가입 기능을 더하고, identity pools는 사용자가 AWS에서 관리하는 보호된 리소스에 접근할 수 있는 IAM 자격 증명을 전달해요. Identity pools는 AssumeRoleWithWebIdentity API 작업을 통해 임시 세션 자격 증명을 획득해요.
Amazon Cognito는 SAML과 OpenID Connect를 지원하는 외부 IdP, 그리고 Facebook·Google·Amazon 같은 소셜 IdP와 함께 동작해요. 앱은 user pool이나 외부 IdP로 사용자를 로그인시킨 다음, IAM 역할의 맞춤형 임시 세션으로 사용자를 대신해 리소스를 가져올 수 있어요.
추가 리소스
조직의 인증 시스템을 이용해 AWS Management Console에 싱글 사인온(SSO)을 활성화하는 커스텀 페더레이션 프록시를 만드는 데모는 AWS 콘솔에 커스텀 아이덴티티 브로커 접근 활성화를 참고하세요.
자격 증명을 저장하지 않고 AWS 워크로드가 외부 서비스에 접근하게 하는 방법은 외부 서비스로 AWS 아이덴티티 페더레이션을 참고하세요.
더 알아보기 (Learn more)
- OIDC 페더레이션 — OIDC IdP를 IAM에 연결하는 방법을 확인해 보세요.
- SAML 2.0 페더레이션 — SAML IdP로 페더레이션하는 방법을 살펴보세요.
- 임시 보안 자격 증명 — STS가 만드는 임시 자격 증명의 개념을 참고하세요.