본문으로 건너뛰기

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를 이용한 역할 수임 프로세스

  1. IAM 역할 정의: 계정 내 또는 크로스 계정에서 IAM 역할을 생성합니다.
  2. 접근 권한 설정: 어떤 주체(Principal)가 이 IAM 역할에 접근할 수 있는지 정의합니다.
  3. STS API 호출: AssumeRole API를 사용하여 접근 가능한 IAM 역할의 임시 자격 증명을 받습니다.
  4. 임시 자격 증명 사용: 받은 임시 자격 증명으로 해당 역할의 권한을 사용합니다.

5 STS 사용 시 주의사항

  • 임시 자격 증명의 유효 기간은 15분에서 1시간 사이로 설정할 수 있습니다.
  • 보안을 위해 필요한 최소한의 권한만을 부여하는 것이 좋습니다.
  • AssumeRoleWithWebIdentity보다는 Cognito Identity Pools 사용을 고려해 보세요.
  • 크로스 계정 접근 시 신뢰할 수 있는 계정만 허용하도록 설정해야 합니다.

6 STS 활용 사례: 크로스 계정 액세스

  1. 프로덕션 계정의 관리자가 개발 계정에 읽기/쓰기 권한을 부여하는 역할(UpdateApp)을 생성합니다.
  2. 개발 계정의 관리자는 개발자 그룹에게 UpdateApp 역할을 맡을 수 있는 권한을 부여합니다.
  3. 개발 계정의 사용자가 역할에 대한 액세스를 요청합니다.
  4. STS가 역할 자격 증명을 반환합니다.
  5. 사용자는 받은 자격 증명으로 프로덕션 계정의 S3 버킷을 업데이트합니다.

이 방식을 통해 개발자들은 필요한 경우에만 제한된 시간 동안 프로덕션 환경에 접근할 수 있어 보안을 강화할 수 있습니다.

7 STS와 MFA(다중 인증) 통합

  • GetSessionToken API를 사용하여 MFA가 적용된 임시 세션 토큰을 얻습니다.
  • IAM 정책에 MFA 조건을 추가하여 MFA 인증을 강제할 수 있습니다.
  • aws:MultiFactorAuthPresent 조건 키를 사용하여 MFA 인증 여부를 확인합니다.
  • GetSessionToken API는 다음 정보를 반환합니다:
    • Access ID
    • Secret Key
    • Session Token
    • Expiration date

이를 통해 중요한 작업에 대해 추가적인 보안 계층을 제공할 수 있습니다.

8 결론

  • AWS STS는 임시 자격 증명을 통해 AWS 리소스에 대한 안전하고 유연한 접근을 제공합니다.
  • 크로스 계정 액세스, 연동 사용자 관리, MFA 통합 등 다양한 시나리오에서 활용할 수 있습니다.
  • 적절히 활용하면 AWS 환경의 보안을 크게 향상시킬 수 있으므로, 여러분의 AWS 아키텍처에 STS 활용을 고려해 보시기 바랍니다.