

# 암호화로 전송 중 데이터 보호
<a name="UsingEncryptionInTransit"></a>

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

## TLS 1.2 및 TLS 1.3 지원
<a name="UsingEncryptionInTransit.TLS-support"></a>

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 구성](pqtls-how-to.md) 섹션을 참조하세요.

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

## TLS 사용 모니터링
<a name="UsingEncryptionInTransit.monitoring"></a>

Amazon S3 서버 액세스 로그 또는 AWS CloudTrail을 사용하여 Amazon S3 버킷에 대한 요청을 모니터링할 수 있습니다. 두 로깅 옵션 모두 각 요청에 사용된 TLS 버전과 암호 제품군을 기록합니다.
+ **Amazon S3 서버 액세스 로그** – 서버 액세스 로깅은 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 예를 들어 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 자세한 내용은 [Amazon S3 서버 액세스 로그 형식](LogFormat.md) 섹션을 참조하세요.
+ **AWS CloudTrail** – [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)은 사용자, 역할 또는 AWS 서비스가 수행한 작업 기록을 제공하는 서비스입니다. CloudTrail은 Amazon S3에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 자세한 내용은 [Amazon S3 CloudTrail 이벤트](cloudtrail-logging-s3-info.md) 섹션을 참조하세요.

## 전송 중 암호화 적용
<a name="UsingEncryptionInTransit.enforcement"></a>

Amazon S3로 전송 중인 데이터의 암호화를 적용하는 것이 보안 모범 사례입니다. 다양한 정책 메커니즘을 통해 HTTPS 전용 통신 또는 특정 TLS 버전 사용을 적용할 수 있습니다. 여기에는 S3 버킷에 대한 IAM 리소스 기반 정책([버킷 정책](bucket-policies.md)), [서비스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)(SCP), [리소스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)(RCP) 및 [VPC 엔드포인트 정책](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)이 포함됩니다.

### 전송 중 암호화를 적용하기 위한 버킷 정책 예제
<a name="UsingEncryptionInTransit.bucket-policy-example"></a>

[S3 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) `s3:TlsVersion`을 사용하여 클라이언트에서 사용하는 TLS 버전에 따라 Amazon S3 버킷에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 [예시 6: 최소 TLS 버전 요구](amazon-s3-policy-keys.md#example-object-tls-version) 섹션을 참조하세요.

**Example `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://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)를 사용하여 요청이 HTTPS(TLS)를 통해 전송되었는지 확인할 수 있습니다. 이전 예제와 달리 이 조건은 특정 TLS 버전을 확인하지 않습니다. 자세한 내용은 [HTTPS 요청으로만 액세스 제한](example-bucket-policies.md#example-bucket-policies-use-case-HTTP-HTTPS-1) 섹션을 참조하세요.

**Example `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 이상을 사용하여 전송 중 암호화 적용](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/)을 참조하세요.