Amazon Simple Storage Service(S3) 버킷 정책에 대해 데이터 전송 중에 암호화를 요구하도록 AWS Config 규칙 “s3-bucket-ssl-requests only”를 활성화했습니다. 내 버킷 정책이 이 규칙을 준수하는지 확인하고 싶습니다.
해결 방법
참고: Amazon S3는 전송 중 암호화와 저장 중 암호화를 제공합니다. 전송 중 암호화는 HTTPS를 의미하고, 저장 중 암호화는 클라이언트 측 또는 서버 측 암호화를 의미합니다.
Amazon S3는 HTTP 요청과 HTTPS 요청을 모두 허용합니다. 기본적으로 Amazon S3는 AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 HTTPS를 통해 요청을 보냅니다.
s3-bucket-ssl-requests-only 규칙을 준수하려면 버킷 정책이 HTTP 요청에 대한 액세스를 명시적으로 거부하는지 확인하세요. HTTPS 요청을 허용하지만 HTTP 요청을 명시적으로 거부하지 않는 버킷 정책은 규칙을 준수하지 않을 수 있습니다.
버킷 정책에서 HTTP 또는 HTTPS 요청을 결정하려면 "aws:SecureTransport" 키를 확인하는 조건을 사용하세요. 이 키가 true인 경우 Amazon S3는 HTTPS를 통해 요청을 보냅니다. s3-bucket-ssl-requests-only 규칙을 준수하려면 요청이 "aws:SecureTransport": "false" 조건을 충족할 경우 액세스를 명시적으로 거부하는 버킷 정책을 생성하세요. 이 정책은 HTTP 요청에 대한 액세스를 명시적으로 거부합니다.
s3-bucket-ssl-requests-only 규칙을 준수하는 버킷 정책
이 예시 버킷 정책은 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 규칙을 준수하지 않는 버킷 정책
이 버킷 정책은 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": "*"
}
]
}
관련 정보
버킷 정책을 사용하고 심층 방어를 적용하여 Amazon S3 데이터를 보호하는 방법