STS의 보안: AssumeRole API와 외부 ID 사용
AWS STS(Security Token Service)를 활용한 AssumeRole API는 역할을 가정할 때 중요한 보안 메커니즘을 제공합니다. 이 API를 사용할 때, **외부 ID(External ID)**를 사용하면 보안을 한층 강화할 수 있습니다. 이 글에서는 외부 ID의 역할과 그것이 해결하는 보안 문제인 Confused Deputy 문제를 설명합니다.
외부 ID(External ID)란?
AssumeRole API에서 외부 ID를 설정하면, 해당 역할을 가정하려는 API 호출에 정의된 외부 ID가 포함되어야만 역할을 가정할 수 있습니다. 예를 들어, 외부 ID가 56789라고 정의되어 있다면, 해당 ID를 포함한 API 호출만 이 역할을 가정할 수 있게 됩니다. 이를 통해 중요한 보안 문제를 해결할 수 있습니다.
Confused Deputy 문제란?
Confused Deputy 문제는 제3자가 의도하지 않은 리소스에 접근하게 되는 보안 문제입니다. 예를 들어, 제3자 계정에 대한 액세스 권한을 부여한 후, 그 계정이 다른 AWS 계정의 리소스에 접근하는 상황이 발생할 수 있습니다. 이 문제를 악용하면 공격자가 다른 계정의 리소스를 악의적으로 조회하거나 수정할 수 있습니다.
예시로 보는 Confused Deputy 문제
- 제3자 계정은 귀하의 계정에 접근할 수 있는 IAM 역할을 가지고 있습니다. 이 역할을 사용하여 귀하의 리소스를 관리할 수 있습니다.
- 하지만 다른 AWS 계정에서 제3자에게 "내 ARN 역할을 가정해 주세요"라고 요청하면, 제3자가 귀하의 ARN을 사용하여 귀하의 리소스에 접근할 수 있게 됩니다.
- 이를 악용하면 공격자는 귀하의 리소스를 불법적으로 사용할 수 있습니다.
외부 ID를 통한 해결 방법
이 문제를 해결하기 위해서는 외부 ID를 사용하는 방법이 있습니다. 외부 ID를 사용하면, 제3자 계정이 역할을 가정하려면 특정 외부 ID를 제공해야 합니다. 예를 들어, 외부 ID가 56789로 설정되어 있으면, 제3자는 이 외부 ID를 정확히 입력해야만 역할을 가정할 수 있습니다. 이를 통해 Confused Deputy 문제를 방지할 수 있습니다.
해결 과정
- 제3자는 자신의 외부 ID를 생성하여 귀하의 IAM 역할을 가정합니다.
- 귀하의 IAM 역할은 외부 ID가 56789일 경우에만 제3자에게 역할을 허용하도록 설정됩니다.
- 다른 AWS 계정이 제3자의 ARN을 사용하여 역할을 가정하려 해도, 외부 ID가 일치하지 않으면 역할을 가정할 수 없습니다.
이 방식은 Confused Deputy 문제를 해결하는 핵심적인 방법입니다. 외부 ID를 통해 제3자가 귀하의 리소스에 불법적으로 접근하는 것을 막을 수 있습니다.
결론
AssumeRole API에서 외부 ID를 사용하는 것은 보안 강화를 위한 중요한 방법입니다. 외부 ID는 Confused Deputy 문제를 해결하고, 권한을 가진 제3자만이 특정 리소스에 접근할 수 있도록 보장합니다. 이를 통해 AWS 리소스의 보안을 더욱 강화할 수 있습니다.
이 방법을 이해하고 적용하면, AWS 계정에서 발생할 수 있는 보안 문제를 예방할 수 있으며, AWS 환경에서의 안전한 리소스 관리가 가능합니다.
'자격증 > AWS Certified Security - Specialty' 카테고리의 다른 글
[AWS SCS] EC2 Instance Metadata (0) | 2024.12.21 |
---|---|
[AWS SCS] IAM 역할의 임시 자격 증명 철회하기 (0) | 2024.12.21 |
[AWS SCS] STS Version 1 & Version 2 (0) | 2024.12.21 |
[AWS SCS] AWS STS (1) | 2024.12.21 |
[AWS SCS] IAM Roles and PassRole to Services (0) | 2024.12.21 |