AWS Identity Federation: 이해와 활용
AWS Identity Federation은 AWS 외부의 사용자에게 AWS 리소스에 대한 접근 권한을 제공하는 방법입니다. 이는 사용자 관리가 이미 외부 시스템에서 이루어지고 있는 경우, 별도의 IAM 사용자 생성을 피하고 외부에서 인증을 처리할 수 있도록 해줍니다. 이번 글에서는 Identity Federation의 다양한 방식과 작동 원리를 알아보겠습니다.
Identity Federation이 필요한 이유
- 외부 사용자 관리: 기업 디렉터리(예: Active Directory)에 이미 사용자 계정이 존재하므로, 별도의 IAM 사용자 생성을 피하고 싶을 때 유용합니다.
- 웹 및 모바일 애플리케이션: AWS 리소스에 접근해야 하는 애플리케이션에서 외부 인증 시스템을 활용할 수 있습니다.
AWS와 Identity Provider(IdP) 간 신뢰 관계를 설정하면, 사용자는 IdP를 통해 인증받아 AWS에 임시 자격 증명(Temporary Security Credentials)을 사용해 접근할 수 있습니다.
Identity Federation 방식
1. SAML 2.0 Federation
SAML(Security Assertion Markup Language) 2.0은 ADFS(Active Directory Federation Services)와 같은 여러 IdP에서 지원하는 오픈 표준입니다. 이를 통해 IAM 사용자 없이도 AWS 콘솔, CLI, API에 접근할 수 있습니다.
작동 방식
- 사용자가 IdP에 로그인합니다.
- IdP는 인증 성공 시 SAML Assertion을 반환합니다.
- 사용자는 이 Assertion을 STS의 AssumeRoleWithSAML API로 전송하여 임시 자격 증명을 획득합니다.
- 이 자격 증명을 사용해 AWS 리소스에 접근합니다.
특징
- Microsoft Active Directory 및 SAML 2.0 호환 IdP와 통합 가능
- 임시 자격 증명을 통해 AWS 리소스 접근
2. Custom Identity Broker
SAML 2.0과 호환되지 않는 IdP를 사용할 경우, Custom Identity Broker를 구현해야 합니다.
작동 방식
- 사용자가 Identity Broker에 로그인합니다.
- Identity Broker는 인증 후 STS에서 임시 자격 증명을 요청합니다.
- 이 자격 증명을 사용자에게 전달하여 AWS 리소스 접근을 허용합니다.
주의 사항
- Identity Broker는 적절한 IAM 역할을 결정하고 관리해야 합니다.
3. Web Identity Federation
웹 애플리케이션에서 사용자를 인증하는 방식입니다. Amazon, Google, Facebook 등의 OpenID Connect 호환 IdP를 활용할 수 있습니다.
작동 방식
- 사용자가 IdP에 로그인하여 Web Identity Token을 획득합니다.
- 이 토큰을 STS의 AssumeRoleWithWebIdentity API로 교환하여 임시 자격 증명을 얻습니다.
- 자격 증명을 사용해 AWS 리소스에 접근합니다.
4. Web Identity Federation with Amazon Cognito
Amazon Cognito를 활용하면 Web Identity Federation을 더 안전하고 간단하게 구현할 수 있습니다.
작동 방식
- 사용자가 IdP에 로그인하여 토큰을 획득합니다.
- 이 토큰을 Cognito에 전달하여 Cognito Token을 획득합니다.
- Cognito Token을 STS에 전달하여 임시 자격 증명을 얻습니다.
- 자격 증명을 사용해 AWS 리소스에 접근합니다.
장점
- 익명 사용자 지원
- 다단계 인증(MFA) 지원
- 데이터 동기화
- 최소 권한 IAM 역할 정의 가능
IAM 정책 제한
Web Identity Federation에서 IAM 정책에 조건을 추가해 사용자 권한을 제한할 수 있습니다. 예를 들어, 특정 사용자 ID에 따라 S3 버킷의 특정 경로에만 접근을 허용하는 정책을 작성할 수 있습니다.
예시 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::example-bucket",
"Condition": {
"StringLike": {
"s3:prefix": ["${cognito-identity.amazonaws.com:sub}/*"]
}
}
},
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::example-bucket/${cognito-identity.amazonaws.com:sub}/*"
}
]
}
결론
AWS Identity Federation은 외부 사용자에게 안전하게 AWS 리소스 접근 권한을 부여할 수 있는 강력한 방법입니다. 특히 Amazon Cognito는 보안성과 간편성을 제공하여 Web Identity Federation의 권장 방식을 대체합니다.
'자격증 > AWS Certified Security - Specialty' 카테고리의 다른 글
[AWS SCS] AWS IAM Identity Center (0) | 2024.12.22 |
---|---|
[AWS SCS] SAML 2.0 Metadata File Troubleshooting (0) | 2024.12.22 |
[AWS SCS] Cognito User Pool User Groups (0) | 2024.12.22 |
[AWS SCS] Cognito Identity Pools (0) | 2024.12.22 |
[AWS SCS] Cognito User Pools (0) | 2024.12.22 |