

# 暗号化を使用して転送中のデータを保護する
<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 を使用する場合、オプションでハイブリッドポスト量子キー交換 (ML-KEM) を設定して、Amazon S3 への量子耐性リクエストを行うことができます。詳細については、「[クライアントのハイブリッドポスト量子 TLS の設定](pqtls-how-to.md)」を参照してください。

**注記**  
TLS 1.3 は、Amazon S3 の AWS PrivateLink およびマルチリージョンアクセスポイントを除くすべての 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 サービスによって実行されたアクションを記録するサービスです。Amazon S3 へのすべての API コールをイベントとしてキャプチャします。詳細については、「[Amazon S3 CloudTrail イベント](cloudtrail-logging-s3-info.md)」を参照してください。

## 転送時の暗号化の強制
<a name="UsingEncryptionInTransit.enforcement"></a>

Amazon S3 への転送中のデータの暗号化を適用することは、セキュリティのベストプラクティスです。さまざまなポリシーメカニズムを使用して、HTTPS のみの通信や特定の TLS バージョンの使用を適用できます。これには、S3 バケット ([バケットポリシー](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)の IAM リソースベースのポリシーが含まれます。

### 転送中の暗号化を適用するためのバケットポリシーの例
<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": "*"
    }
  ]
}
```

**両方のキーに基づくポリシーの例と、その他の例**  
前の例の両方のタイプの条件キーを 1 つのポリシーで使用できます。詳細とその他の適用アプローチについては、AWS ストレージブログ記事の「[Amazon S3 で TLS1.2 以上を使用して転送中の暗号化を強制する](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/)」を参照してください。