태그 기반 EC2 인스턴스 제어(ABAC) 가이드
1단계: 리소스 태깅 (Tagging Strategy)
먼저 관리할 EC2 인스턴스에 공통된 태그를 부여합니다.
Key:
ProjectValue:
ProjectOmega(예시)
2단계: IAM 정책 작성 (The Condition Logic)
IAM 사용자나 역할(Role)에 아래와 같은 정책을 연결합니다. 핵심은 Condition 절입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Project": "ProjectOmega"
}
}
},
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
}
3단계: 작동 원리 이해
허용: 사용자가 인스턴스를 중지(Stop)하려 할 때, AWS는 해당 인스턴스에
Project: ProjectOmega라는 태그가 있는지 확인합니다. 일치하면 명령이 실행됩니다.거부: 태그가 없거나 다른 태그(예:
ProjectAlpha)가 붙은 인스턴스에 명령을 내리면Access Denied에러가 발생합니다.
4단계: 한계점과 극복 방법 (The "Describe" Quirk)
여기서 중요한 엔지니어의 팁이 나옵니다.
문제:
ec2:DescribeInstances(리스트 보기) API는 리소스 레벨 권한을 지원하지 않습니다. 즉, "목록에서 내 것만 보이게 해줘"는 불가능합니다. 사용자는 모든 인스턴스 목록을 보게 되지만, 실제로 제어(Start/Stop) 버튼을 누를 수 있는 건 본인 태그가 붙은 것뿐입니다.해결: 콘솔 사용자라면 태그 필터링 기능을 사용하도록 가이드하고, CLI 사용자라면
--filters옵션을 생활화하도록 교육해야 합니다.
RBAC vs ABAC 비교
항목 | RBAC (역할 기반) | ABAC (속성/태그 기반) |
관리 방식 | 사용자별/리소스별 정책 업데이트 | 태그만 일치하면 자동 적용 |
확장성 | 리소스 증가 시 정책 수정 필요 (낮음) | 정책 수정 불필요 (매우 높음) |
추천 환경 | 소규모, 정적인 리소스 | 대규모, 동적인 개발/운영 환경 |
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.