암호화로 전송 중 데이터 보호 - Amazon Simple Storage Service

암호화로 전송 중 데이터 보호

Amazon S3는 데이터 전송에 HTTP 및 HTTPS 프로토콜을 모두 지원합니다. HTTP는 일반 텍스트로 데이터를 전송하는 반면, HTTPS는 Transport Layer Security(TLS)를 사용해 데이터를 암호화하여 보안 계층을 추가합니다. TLS는 도청, 데이터 변조 및 중간자 공격으로부터 보호합니다. HTTP 트래픽은 허용되지만 대부분의 구현에서는 HTTPS 및 TLS를 사용한 전송 중 암호화를 사용하여 클라이언트와 Amazon S3 간에 이동하는 데이터를 보호합니다.

TLS 1.2 및 TLS 1.3 지원

Amazon S3는 모든 AWS 리전의 모든 API 엔드포인트에서 HTTPS 연결에 TLS 1.2 및 TLS 1.3을 지원합니다. S3는 클라이언트 소프트웨어에서 지원하는 가장 강력한 TLS 보호와 액세스 중인 S3 엔드포인트를 자동으로 협상합니다. AWS SDK 및 AWS CLI를 포함한 현재 AWS 도구(2014 이상)는 자동으로 TLS 1.3으로 기본 설정되며 별도의 조치가 필요하지 않습니다. TLS 1.2와의 이전 버전 호환성이 필요한 경우 클라이언트 구성 설정을 통해 이 자동 협상을 재정의하여 특정 TLS 버전을 지정할 수 있습니다. TLS 1.3을 사용하는 경우 선택적으로 Amazon S3에 양자 방지 요청을 하도록 하이브리드 양자 내성 키 교환(ML-KEM)을 구성할 수 있습니다. 자세한 내용은 클라이언트에 대한 하이브리드 양자 내성 TLS 구성 섹션을 참조하세요.

참고

TLS 1.3은 AWS PrivateLink for Amazon S3 및 다중 리전 액세스 포인트를 제외한 모든 S3 엔드포인트에서 지원됩니다.

TLS 사용 모니터링

Amazon S3 서버 액세스 로그 또는 AWS CloudTrail을 사용하여 Amazon S3 버킷에 대한 요청을 모니터링할 수 있습니다. 두 로깅 옵션 모두 각 요청에 사용된 TLS 버전과 암호 제품군을 기록합니다.

  • Amazon S3 서버 액세스 로그 – 서버 액세스 로깅은 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 예를 들어 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 자세한 내용은 Amazon S3 서버 액세스 로그 형식 섹션을 참조하세요.

  • AWS CloudTrailAWS CloudTrail은 사용자, 역할 또는 AWS 서비스가 수행한 작업 기록을 제공하는 서비스입니다. CloudTrail은 Amazon S3에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 자세한 내용은 Amazon S3 CloudTrail 이벤트 섹션을 참조하세요.

전송 중 암호화 적용

Amazon S3로 전송 중인 데이터의 암호화를 적용하는 것이 보안 모범 사례입니다. 다양한 정책 메커니즘을 통해 HTTPS 전용 통신 또는 특정 TLS 버전 사용을 적용할 수 있습니다. 여기에는 S3 버킷에 대한 IAM 리소스 기반 정책(버킷 정책), 서비스 제어 정책(SCP), 리소스 제어 정책(RCP) 및 VPC 엔드포인트 정책이 포함됩니다.

전송 중 암호화를 적용하기 위한 버킷 정책 예제

S3 조건 키 s3:TlsVersion을 사용하여 클라이언트에서 사용하는 TLS 버전에 따라 Amazon S3 버킷에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 예시 6: 최소 TLS 버전 요구 섹션을 참조하세요.

S3:TlsVersion 조건 키를 사용하여 TLS 1.3을 적용하는 버킷 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": "1.3" } } } ] }

S3 버킷 정책의 aws:SecureTransport 전역 조건 키를 사용하여 요청이 HTTPS(TLS)를 통해 전송되었는지 확인할 수 있습니다. 이전 예제와 달리 이 조건은 특정 TLS 버전을 확인하지 않습니다. 자세한 내용은 HTTPS 요청으로만 액세스 제한 섹션을 참조하세요.

aws:SecureTransport 전역 조건 키를 사용하여 HTTPS를 적용하는 버킷 정책
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" } ] }
키와 추가 예제를 모두 기반으로 하는 예제 정책

하나의 정책에서 이전 예제의 두 가지 유형의 조건 키를 모두 사용할 수 있습니다. 자세한 내용과 추가 적용 방법은 AWS 스토리지 블로그 문서 Amazon S3에서 TLS 1.2 이상을 사용하여 전송 중 암호화 적용을 참조하세요.