Enforce encryption of data in transit
S3 데이터 전송 중 데이터 암호화를 강제하는 법
Amazon S3 Bucket Policy에 "aws:SecureTransport": "false"
조건을 추가하여 HTTPS 연결을 통해서만 데이터에 접근하도록 강제할 수 있다.
이 조건을 설정하면 HTTP 요청을 통한 접근은 거부되며, HTTPS를 통해서만 S3 버킷의 데이터를 전송할 수 있다.
이를 통해 데이터 전송 중에 발생할 수 있는 해킹으로부터 데이터를 보호할 수 있다.
"aws:SecureTransport": "false"
> HTTPS가 아닌 경우, ~
"aws:SecureTransport": "true"
> HTTPS인 경우, ~
예시: aws:SecureTransport
조건을 사용하는 S3 Bucket Policy
(HTTPS가 아닌 HTTP 요청이 오면 접근을 거부한다)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
(공식 문서) 보안을 위한 S3 best practices: https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html
https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule
🤔 문제
회사는 중요한 데이터를 포함한 Amazon S3 버킷을 보유하고 있습니다. 이 데이터는 전송 중과 저장 중 모두 암호화되어야 합니다. 회사는 AWS Key Management Service (AWS KMS) 키를 사용하여 S3 버킷의 데이터를 암호화하고 있습니다. 개발자는 S3 GetObject 작업을 사용하여 여러 다른 AWS 계정이 S3 버킷에서 데이터를 검색할 수 있도록 권한을 부여해야 합니다. 개발자는 데이터 검색 요청 시 모두 전송 중 암호화를 제공하도록 어떻게 강제할 수 있습니까?
- 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 거부하도록 S3 버킷에 리소스 기반 정책을 정의합니다.
- 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 허용하도록 S3 버킷에 리소스 기반 정책을 정의합니다.
- 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 거부하도록 다른 계정의 역할에 역할 기반 정책을 정의합니다.
- 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 거부하도록 KMS 키에 리소스 기반 정책을 정의합니다.
정답
정답 1번.