https://awspolicygen.s3.amazonaws.com/policygen.html?fbclid=PAT01DUAQwc7VleHRuA2FlbQIxMABzcnRjBmFwcF9pZA81NjcwNjczNDMzNTI0MjcAAacEgjL1mvq9hHlvXA-VeB-nmZdpg_lCJdDDj9VTiVjDs3ZAjZTMkRHKeunboQ_aem_HqFdO_v1NQV9vK5l-thjJA
사용자 userA가
Amazon S3 버킷 my-bucket의 userA/ 폴더 안 객체만 읽기 가능하도록 정책을 작성하시오.
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/userA/*"
}
]
}
사용자가 Amazon EC2 인스턴스를 중지(stop) 할 수 있도록 하되,
👉 조건
반드시 MFA 인증이 있을 때만 허용
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"ec2:StopInstances"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
사용자가 S3에 접근할 수 있도록 하되,
👉 조건
IP가 203.0.113.0/24일 때만 허용
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
}
}
}
]
}
EC2 인스턴스 중에서
👉 조건
Environment=Dev 태그가 붙은 것만
Start / Stop 가능하게 설정
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"ec2:StopInstances",
"ec2:StartInstances"
],
"Resource": [],
"Condition": {
"StringEquals": {
"aws:ResourceTag/Environment": "Dev"
}
}
}
]
}
사용자는 S3에서 모든 작업을 할 수 있지만,
👉 조건
삭제(DeleteObject)만 절대 금지
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Action": [
"s3:DeleteObject"
],
"Resource": "*"
},
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "*"
}
]
}
사용자 userA가
Amazon S3 버킷 my-bucket에서
👉 조건
userA/ 폴더 안만 보이고 (List)
그 안 객체만 읽기 가능
👉 힌트
ListBucket은 Resource가 다름 (함정)
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-bucket",
"Condition": {
"StringEquals": {
"s3:prefix": [
"userA/*",
"userA/"
]
}
}
},
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/userA/*"
}
]
}
사용자가 Amazon EC2 를 사용할 수 있도록 하되
👉 조건
2020년 4월 1일 오전 9시 ~ 2021년 4월 1일 오후 6시 (UTC 기준)만 허용
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": "*",
"Condition": {
"DateGreaterThanEquals": {
"aws:CurrentTime": "2020-04-01T09:00:00Z"
},
"DateLessThanEquals": {
"aws:CurrentTime": "2021-04-01T18:00:00Z"
}
}
}
]
}
사용자는 모든 작업을 할 수 있지만
👉 조건
IAM 관련 작업만 금지
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
사용자가 S3 객체 삭제 가능하도록 하되
👉 조건
MFA 필요
회사 IP 대역(203.0.113.0/24)에서만
특정 태그 (Project=Alpha) 붙은 객체만
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:DeleteObject"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
},
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
},
"StringEquals": {
"aws:ResourceTag/Project": "Alpha"
}
}
}
]
}
사용자가 자신의 태그와 같은 리소스만 접근 가능하게 설정
👉 예
user 태그: Department=Finance
리소스 태그도 동일해야 접근 가능
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Department": "${aws:PrincipalTag/Department}"
}
}
}
]
}
모든 S3 접근은 허용하지만
👉 조건
HTTPS가 아닌 요청은 전부 차단
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Action": [
"s3:*"
],
"Resource": [],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
사용자가 특정 Role만 EC2에 붙일 수 있도록 설정
👉 조건
다른 Role은 절대 사용 불가
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": "arn:aws:iam::123456789012:role/SpecificRole"
}
]
}
사용자가 S3에 업로드할 수 있도록 하되
👉 조건
반드시 서버 측 암호화(SSE) 사용
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
]
}
사용자가 AWS 리소스를 생성할 수 있도록 하되
👉 조건
특정 리전 (예: ap-northeast-2)에서만 허용
👉 키워드
aws:RequestedRegion
- 답지
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "ap-northeast-2"
}
}
}
]
}