Amazon S3: 버킷 액세스는 허용하되, 최근 MFA 없이는 프로덕션 버킷 접근 거부하기
Amazon S3: 버킷 액세스는 허용하되, 최근 MFA 없이는 프로덕션 버킷 접근 거부하기
이 예시는 Amazon S3 관리자가 객체 업데이트·추가·삭제를 포함해 어떤 버킷에도 접근할 수 있게 허용하는 자격 증명 기반 정책을 만드는 방법을 보여드려요. 다만 사용자가 지난 30분 안에 다중 인증(MFA)으로 로그인하지 않았다면 amzn-s3-demo-bucket-production 버킷에 대한 액세스를 명시적으로 거부해요.
출처: 문서
본문
이 정책은 콘솔이나 AWS CLI 또는 AWS API로 작업을 수행하는 데 필요한 권한을 부여해요. 예시 정책에서 이탤릭체로 표시된 자리표시자 텍스트를 본인 정보로 바꾼 뒤, create a policy 또는 edit a policy의 지침을 따라 적용하면 돼요.
이 정책은 장기 사용자 액세스 키를 사용한 amzn-s3-demo-bucket 버킷에 대한 프로그래매틱 액세스를 절대 허용하지 않아요. 이는 aws:MultiFactorAuthAge 조건 키와 NumericGreaterThanIfExists 조건 연산자로 구현돼요. 이 정책 조건은 MFA가 없거나 MFA 경과 시간이 30분보다 크면 true를 반환해요. 이런 상황에서는 액세스가 거부돼요. amzn-s3-demo-bucket-production 버킷에 프로그래매틱하게 접근하려면 S3 관리자가 GetSessionToken API 작업으로 지난 30분 안에 생성된 임시 자격 증명을 사용해야 해요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "ListAllS3Buckets",
"Effect": "Allow",
"Action": ["s3:ListAllMyBuckets"],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "AllowBucketLevelActions",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "AllowBucketObjectActions",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::*/*"
},
{
"Sid": "RequireMFAForProductionBucket",
"Effect": "Deny",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-production/*",
"arn:aws:s3:::amzn-s3-demo-bucket-production"
],
"Condition": {
"NumericGreaterThanIfExists": {"aws:MultiFactorAuthAge": "1800"}
}
}
]
}