인스턴스를 운영하면서 특정 IAM user에게만 인스턴스를 제어하거나 multi-account 환경일 경우 특정 account에서는 인스턴스 작업을 하지 못하게 하는 방안에 대해 고려하고 있는 사용자들이 많을 것이라고 생각이 됩니다.
IAM 사용자에게 EC2 리소스를 사용할 수 있는 권한을 부여하는 IAM 정책을 생성할 때 정책의 Condition 요소에 태그 정보를 포함하여 태그를 기반으로 액세스를 제어할 수 있습니다. 이를 속성 기반 액세스 제어(ABAC)라고 합니다.
IAM Condition을 사용한 몇 가지 사례를 소개해 드리도록 하겠습니다.
Exam 1. 특정 IAM user가 "Env" Key를 보유하고 있을 경우에만 인스턴스 Start / Stop 가능하게 하기
Step 1) Policy 생성 후 IAM user에게 권한 추가
우선 인스턴스를 Start / Stop 하기 위한 Action을 확인하고 해당 Action이 지원하는 Resource, Condition을 확인하셔야 합니다.
다음 문서 [1] 에서 확인하실 수 있습니다.
[1] Amazon EC2에 사용되는 작업, 리소스 및 조건 키 - https://docs.aws.amazon.com/ko_kr/service-authorization/latest/reference/list_amazonec2.html
우리는 이제 Action(StartInstances, StopInstances)이 aws:ResourceTag/${TagKey} Condition을 지원한다는 것을 알게 되었습니다.
aws:ResourceTag/${TagKey}: 리소스의 태그 키-값 페어를 기준으로 액세스를 필터링합니다.
[2]리소스 태그를 사용하여 EC2 리소스에 대한 액세스 제어 - https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/control-access-with-tags.html
다음으로 아래 생성 된 Policy를 IAM user에게 추가 해줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Env": "prod"
}
}
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances"
],
"Resource": "*"
}
]
}
Step 2) 인스턴스 Start / Stop Test
제 환경에는 InstanceA와 InstanceB가 있습니다. InstanceA에는 Env태그가 없고 InstanceB에는 Env태그가 있습니다.
InstanceA를 Stop을 할 경우 아래와 같은 에러메시지를 확인하실 수 있습니다. 이를 복호화 해보겠습니다.
aws sts decode-authorization-message --encoded-message "message"
>> \"action\":\"ec2:StopInstances\",\"resource\": ~~
InstanceB를 Stop 할 경우 정상적으로 Stop이 되는 것을 확인할 수 있습니다.
Exam 2. 특정 IAM user가 지정된 Key와 Value를 보유하고 있을 경우에만 인스턴스를 생성 할 수 있도록 하기
https://ehdtn1219.tistory.com/193
질문이 있으시면 댓글 남겨주시면 확인 후에 답변해드리겠습니다.
감사합니다.
'AWS' 카테고리의 다른 글
[AWS] Secrets Manager 강제 삭제 (0) | 2023.02.01 |
---|---|
[AWS] EC2 인스턴스 Tag-based 관리 방법 - 2 (0) | 2023.01.29 |
[AWS] Cognito Userpool 생성 (0) | 2022.11.17 |
[AWS] EC2에 도메인 연결하기(가비아 도메인) (0) | 2022.08.13 |
[AWS] IAM(Identity and Access Management) 이란 (0) | 2022.07.17 |