AWS Config 규칙 s3-bucket-ssl-requests-only를 준수하려면 어떤 S3 버킷 정책을 사용해야 합니까?
최종 업데이트 날짜: 2021년 4월 27일
Amazon Simple Storage Service(Amazon S3) 버킷 정책에 데이터 전송 중 암호화가 필요하도록 AWS Config 규칙 s3-bucket-ssl-requests-only를 활성화했습니다. 이 규칙을 준수하는 버킷 정책을 생성하려면 어떻게 해야 합니까?
해결 방법
참고: Amazon S3는 전송 중 암호화와 유휴 시 암호화를 제공합니다. 전송 중 암호화는 HTTPS를 나타내고 유휴 시 암호화는 클라이언트 측 또는 서버 측 암호화를 나타냅니다.
Amazon S3는 HTTP 요청과 HTTPS 요청을 모두 허용합니다. 기본적으로 요청은 AWS 관리 콘솔, AWS 명령줄 인터페이스(AWS CLI) 또는 HTTPS를 통해 이루어집니다.
s3-bucket-ssl-requests-only 규칙을 준수하려면 버킷 정책이 HTTP 요청에 대한 액세스를 명시적으로 거부하는지 확인하세요. HTTP 요청을 명시적으로 거부하지 않고 HTTPS 요청을 허용하는 버킷 정책은 규칙을 준수하지 않을 수 있습니다.
버킷 정책에서 HTTP 또는 HTTPS 요청을 확인하려면 키 "aws: SecureTransport"를 확인하는 조건을 사용합니다. 이 키가 true인 경우 요청은 HTTPS를 통해 전송됩니다. s3-bucket-ssl-requests-only 규칙을 준수하려면 요청이 "aws: SecureTransport": "false" 조건을 충족할 때 액세스를 명시적으로 거부하는 버킷 정책을 생성합니다. 이 정책은 HTTP 요청에 대한 액세스를 명시적으로 거부합니다.
s3-bucket-ssl-requests-only 규칙을 준수하는 버킷 정책
예를 들어 다음 버킷 정책은 규칙을 준수합니다. 이 정책은 요청이 "aws: SecureTransport": "false" 조건을 충족하는 경우 버킷 및 객체에 대한 모든 작업을 명시적으로 거부합니다.
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
s3-bucket-ssl-requests-only 규칙을 준수하지 않는 버킷 정책
반면에 다음 버킷 정책은 규칙을 준수하지 않습니다. 이 정책은 명시적 거부문을 사용하는 대신 "aws: SecureTransport": "true" 조건을 충족하는 요청에 대한 액세스를 허용합니다. 이 문은 요청에 HTTPS를 사용하는 경우 버킷의 모든 객체에 대해 s3: GetObject에 대한 익명 액세스를 허용합니다. 사용 사례에 HTTPS를 통한 익명 액세스가 필요한 경우가 아니라면 이 유형의 버킷 정책을 피하십시오.
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NOT-RECOMMENDED-FOR__AWSCONFIG-Rule_s3-bucket-ssl-requests-only",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "true"
}
},
"Principal": "*"
}
]
}