안녕하세요 서후아빠입니다. ^_^
이번 세션은 특정 사용자(ex : Junior 개발자, 신규입사자 등)로부터 운영중인(Production) 인프라를 보호하기 위해서 접근을 차단하는 IAM 정책에 대해서 실습을 해보겠습니다.
적절한 설정을 통하여 안정적인 서비스 운영을 할 수 있기를 바랍니다.
구성도
user01은 admin 권한을 부여하여 모든 Resources에 접근이 가능합니다. user02는 admin 권한을 부여하였지만, Permissions boundary에서 ec2 중에서 특정 tag된 Resources만 허용하였기 때문에 해당 Resources외에는 접근이 모두 차단됩니다. |
구성도
인프라 생성 : vpc, subnet, igw, routing table, ec2 등은 설명 생략합니다.
2022.07.02 - [Networking] - [실습] Amazon VPC 구성요소 생성하기
1단계 : ec2에 tagging
EC2 > Instances > Instance 선택 > Tags (tab) > Manage tags
구분 | Key | Value | ||
pubA-ec2 경우 | env | prod | ||
pubB-ec2 경우 | env | dev |
2단계 : Permissions boundary 설정
IAM > Policies > Create policy > JSON (tab) > JSON 내용 아래 참조 > Name(deny-prod-policy)
# DenyPRDPolicy : ec2만 허용, 그 중에서도 tag에 Location/PRD는 차단
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*"
},
{
"Sid": "DenyEC2PRD",
"Effect": "Deny",
"Action": "ec2:*",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/env": "prod"
}
}
}
]
}
IAM > Users > 사용자 선택(ex : user02) > Permissions (tab) > Permissions boundary의 Set boundary > deny-prod-policy 선택
IAM > Users > 사용자 선택(ex : user01, user02) > Permissions (tab) > Add permissions > Attach existing policies directly > AdministratorAccess
정책 적용 우선순위를 테스트하기 위해서 모든 사용자(user01, user02)는 AdministratorAccess 권한을 부여합니다. |
3단계 : 접근 권한 테스트
IAM 사용자 계정(user01 or user02)으로 콘솔 접속하여 EC2가 아닌 서비스(ex : S3, CloudWatch,VPC 등) 접근
- user01 : 정상
- user02 : “You don't have permissions~” Error message 출력
user02는 AdministratorAccess의 권한을 부여받았지만, Permission boundary의 정책이 우선 적용되어 접근이 차단됩니다. VPC의 경우 user02가 접근 권한이 부여되어 있을텐데요. 그 이유는 VPC는 EC2에 묶여 있기 때문입니다. |
2022.07.22 - [Security] - AWS IAM(Identity and Access Management) 기본 개념
EC2 > Instances > Instance 선택 > Instance state > Terminate instance
- pubA-ec2 : user01은 정상적으로 terminate, user02 “Failed to terminate the instance~”
- pubB-ec2 : user01 & user02 모두 정상적으로 terminate