STS
1 AWS STS(Security Token Service) 소개
- AWS STS는 AWS 리소스에 대한 제한적이고 임시적인 액세스를 제공하는 서비스입니다.
- 이 서비스를 통해 보안을 강화하면서도 필요한 리소스에 접근할 수 있는 유연성을 제공합니다.
- STS는 다양한 시나리오에서 사용될 수 있으며, 특히 크로스 계정 접근이나 임시 사용자 관리에 유용합니다.
2 STS의 주요 기능
- 임시 보안 자격 증명: 최대 1시간 동안 유효한 임시 자격 증명을 발급합니다.
- 크로스 계정 액세스: 다른 AWS 계정의 리소스에 안전하게 접근할 수 있습니다.
- 연동 사용자 지원: SAML이나 웹 ID 제공자를 통한 로그인을 지원합니다.
- 다중 인증(MFA) 지원: 보안 강화를 위한 다중 인증을 제공합니다.
3 STS의 주요 API
3.1 AssumeRole
- 계정 내 또는 크로스 계정에서 IAM 역할을 맡을 때 사용합니다.
- 임시 보안 자격 증명을 반환하여 해당 역할의 권한을 얻을 수 있습니다.
3.2 AssumeRoleWithSAML
- SAML을 통해 로그인한 사용자에게 자격 증명을 제공합니다.
- 기업의 기존 ID 시스템과 AWS를 통합할 때 유용합니다.
3.3 AssumeRoleWithWebIdentity
- Facebook, Google 등의 ID 제공자로 로그인한 사용자에게 자격 증명을 제공합니다.
- 단, AWS는 이 방식 대신 Cognito Identity Pools 사용을 권장합니다.
3.4 GetSessionToken
- MFA를 사용하는 IAM 사용자나 AWS 계정 루트 사용자를 위한 임시 자격 증명을 제공합니다.
3.5 GetFederationToken
- 연동 사용자를 위한 임시 자격 증명을 얻습니다.
3.6 GetCallerIdentity
- API 호출에 사용된 IAM 사용자나 역할에 대한 세부 정보를 반환합니다.
3.7 DecodeAuthorizationMessage
- AWS API 접근이 거부되었을 때의 오류 메시지를 디코딩합니다.
4 STS를 이용한 역할 수임 프로세스
- IAM 역할 정의: 계정 내 또는 크로스 계정에서 IAM 역할을 생성합니다.
- 접근 권한 설정: 어떤 주체(Principal)가 이 IAM 역할에 접근할 수 있는지 정의합니다.
- STS API 호출: AssumeRole API를 사용하여 접근 가능한 IAM 역할의 임시 자격 증명을 받습니다.
- 임시 자격 증명 사용: 받은 임시 자격 증명으로 해당 역할의 권한을 사용합니다.
5 STS 사용 시 주의사항
- 임시 자격 증명의 유효 기간은 15분에서 1시간 사이로 설정할 수 있습니다.
- 보안을 위해 필요한 최소한의 권한만을 부여하는 것이 좋습니다.
- AssumeRoleWithWebIdentity보다는 Cognito Identity Pools 사용을 고려해 보세요.
- 크로스 계정 접근 시 신뢰할 수 있는 계정만 허용하도록 설정해야 합니다.
6 STS 활용 사례: 크로스 계정 액세스
- 프로덕션 계정의 관리자가 개발 계정에 읽기/쓰기 권한을 부여하는 역할(UpdateApp)을 생성합니다.
- 개발 계정의 관리자는 개발자 그룹에게 UpdateApp 역할을 맡을 수 있는 권한을 부여합니다.
- 개발 계정의 사용자가 역할에 대한 액세스를 요청합니다.
- STS가 역할 자격 증명을 반환합니다.
- 사용자는 받은 자격 증명으로 프로덕션 계정의 S3 버킷을 업데이트합니다.
이 방식을 통해 개발자들은 필요한 경우에만 제한된 시간 동안 프로덕션 환경에 접근할 수 있어 보안을 강화할 수 있습니다.