클라우드(AWS)/DVA-C02

[AWS] S3 Bucket에서 HTTPS(데이터 암호화)를 강제하는 법 (“aws:SecureTransport”: “false”, 데이터 전송)

찌르비 2024. 11. 7. 18:52
반응형

 

 

Enforce encryption of data in transit

S3 데이터 전송 중 HTTPS를 강제하는 법

Amazon S3 Bucket Policy"aws:SecureTransport": "false" 조건을 추가하여 HTTPS 연결을 통해서만 데이터에 접근하도록 강제할 수 있다.

 

<aws:SecureTransport란?>

S3 Bucket Policy에서 사용하는 조건 키로, 요청이 HTTPS를 사용했는지를 검사한다

"aws:SecureTransport": "false" > HTTPS가 아닌 경우, ~ (deny 하기)

"aws:SecureTransport": "true" > HTTPS인 경우, ~ (allow 하기)

 

이 조건을 설정하면 HTTP 요청을 통한 접근은 거부되며, HTTPS를 통해서만 S3 버킷의 데이터를 전송할 수 있다.
이를 통해 데이터 전송 중에 발생할 수 있는 해킹으로부터 데이터를 보호할 수 있다.

 

"aws:SecureTransport": "false"로 설정해야지 HTTPS만 가능하도록 설정된다.

 

 S3 Bucket Policy 예시

"aws:SecureTransport":"false" 조건을 사용하여 (HTTPS가 아닌) HTTP 요청이 오면 접근을 거부(deny)한다

{
  "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

 

Security best practices for Amazon S3 - Amazon Simple Storage Service

We recommend that your application not pin Amazon S3 TLS certificates as AWS doesn’t support pinning of publicly-trusted certificates. S3 automatically renews certificates and renewal can happen any time before certificate expiry. Renewing a certificate

docs.aws.amazon.com

https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule

 

Create an S3 bucket policy for s3-bucket-ssl-requests-only

I activated the AWS Config rule “s3-bucket-ssl-requests-only” for Amazon Simple Storage Service (Amazon S3) bucket policies to require encryption during data transit. I want to make sure that my bu...

repost.aws

 

 

 

 


🤔 문제 1

회사는 중요한 데이터를 포함한 Amazon S3 버킷을 보유하고 있습니다. 이 데이터는 전송 중과 저장 중 모두 암호화되어야 합니다. 회사는 AWS Key Management Service (AWS KMS) 키를 사용하여 S3 버킷의 데이터를 암호화하고 있습니다. 개발자는 S3 GetObject 작업을 사용하여 여러 다른 AWS 계정이 S3 버킷에서 데이터를 검색할 수 있도록 권한을 부여해야 합니다. 개발자는 데이터 검색 요청 시 모두 전송 중 암호화를 제공하도록 어떻게 강제할 수 있습니까?

 

  1. 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 거부하도록 S3 버킷에 리소스 기반 정책을 정의합니다.
  2. 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 허용하도록 S3 버킷에 리소스 기반 정책을 정의합니다.
  3. 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 거부하도록 다른 계정의 역할에 역할 기반 정책을 정의합니다.
  4. 요청이 "aws:SecureTransport": "false" 조건을 충족할 때 접근을 거부하도록 KMS 키에 리소스 기반 정책을 정의합니다.

정답

더보기

정답 1번.

 

🤔 문제 2

어떤 애플리케이션이 재무제표를 Amazon S3 버킷에 저장하고 있습니다. 최근의 보안 감사에서 해당 버킷이 회사 표준을 준수하지 않는다는 사실이 발견되었습니다. 현재, 여러 IAM 정책이 암호화된 호출과 암호화되지 않은 호출 모두를 허용하고 있습니다. 회사는 모든 요청이 암호화된 연결을 사용하도록 강제하는 버킷 정책을 만들어야 합니다.

이 요구 사항을 충족할 수 있는 솔루션은 무엇인가요?

 

  1. "aws:SecureTransport": "true" 조건과 "Allow" 효과를 사용하여 버킷 정책 추가
  2. "arn:aws:s3:::https/bucketname" 리소스를 사용하고 "Allow" 효과를 가진 버킷 정책 추가
  3. "aws:SecureTransport": "false" 조건과 "Deny" 효과를 사용하여 버킷 정책 추가
  4. "arn:aws:s3:::http/bucketname" 리소스를 사용하고 "Deny" 효과를 가진 버킷 정책 추가

정답

더보기

정답. 3번

 

1번 오답

조건 "aws:SecureTransport": "true"를 Allow로 설정하면, HTTPS 요청은 허용된다.

하지만 HTTP 요청에 대해 별도로 Deny를 설정하지 않는 한, HTTP 요청은 여전히 다른 정책이나 기본 권한에 의해 허용될 수 있다. 즉, Allow만으로는 HTTP 요청을 차단하지 못한다는 의미이다.

728x90
반응형