IAM 사용자에게 특정 인스턴스 타입의 EC2 인스턴스만 생성하도록 설정해 보기
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 IAM 사용자에게 특정 인스턴스 타입의 EC2 인스턴스만 생성하도록 설정해 보는 방법을 정리해 봤습니다.
IAM 정책 설정
이번 블로그에서는 IAM 사용자에게 t2.micro 인스턴스 타입의 EC2 인스턴스만을 생성할 수 있도록 IAM 정책을 할당해 보며, t2.micro 인스턴스 타입을 선택했을 때와 다른 인스턴스 타입 선택하여 EC2 인스턴스를 생성했을 때의 결과를 확인해 보도록 하겠습니다.
IAM 사용자에게 할당할 정책은 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:CreateTags*",
"ec2:CreateVolume",
"ec2:CreateImage",
"ec2:CreateLaunchTemplateVersion",
"ec2:DeregisterImage",
"ec2:DeleteSnapshot",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances",
"ec2:ModifyInstanceAttribute",
"ec2:RunInstances"
],
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringNotEquals": {
"ec2:InstanceType": "t2.micro"
}
}
}
]
}
EC2 인스턴스를 실행할 기본적인 권한을 할당합니다. 이어서 Deny을 통해서 t2.micro 이외의 인스턴스 타입으로는 EC2 인스턴스를 생성할 수 없도록 제한합니다.
여기서 한 가지 확인할 부분은 Allow와 Deny에서 ec2:RunInstances를 사용하고 있다는 점입니다. Deny의 경우 조금 전 설명했던 것 처럼 인스턴스 타입을 제한하기 위한 권한 할당이되며, Allow는 인스턴스 타입 이외의 모든 설정은 허용한다는 설정입니다.
EC2 인스턴스 생성에 대해서 제한을 두거나 보다 좁은 권한을 설정하고 싶다면 아래 공식 문서를 참고해 주세요.
결과 확인
이제 정책을 생성하고 할당했다면, IAM 사용자로 들어와서 EC2 인스턴스를 생성합니다. 먼저 t2.micro 인스턴스 타입은 성공적으로 생성되는 것을 확인할 수 있습니다.
반대로 t2.micro 인스턴스 타입이 아닌, 다른 인스턴스 타입으로 EC2 인스턴스를 생성해 보면 에러가 발생하는 것을 확인할 수 있습니다.
You are not authorized to perform this operation. User: arn:aws:iam::xxxxxxxx:user/test-ec2-user is not authorized to perform: ec2:RunInstances on resource: arn:aws:ec2:ap-northeast-1:xxxxxxxx:instance/* with an explicit deny in an identity-based policy. Encoded authorization failure message
작업을 수행할 권힌이 없다는 에러 메시지가 출력되며, EC2 인스턴스를 생성할 수 없게됩니다. 이번 블로그에서는 IAM 정책을 통해 특정 EC2 인스턴스 유형만 생성하도록 제한할 수 있다는 점을 확인했습니다. 이렇게 잘못된 EC2 인스턴스 유형의 생성을 방지하는 것도 유용한 방법이라고 생각하므로 적극 활용해 보도록 합시다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.