

# 汎用バケットの SSE-C のブロックまたはブロック解除
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

2026 年 4 月以降、Amazon S3 はすべての新しい汎用バケットについて、お客様が用意したキー (SSE-C) によるサーバー側の暗号化を無効にします。Amazon S3 は、SSE-C 暗号化オブジェクトが存在しないアカウントの既存のバケットに対しても SSE-C を無効にしました。つまり、デフォルトでは、SSE-C を使用してオブジェクトをアップロードするリクエストは HTTP 403 `AccessDenied` エラーで拒否されます。

SSE-C では、暗号化されたオブジェクトの読み取りまたは書き込みを行うすべてのリクエストに暗号化キーを提供する必要があるため、データを操作する他のユーザー、ロール、または AWS サービスとアクセスを共有することが困難になります。ほとんどのワークロードでは、代わりに Amazon S3 マネージドキー (SSE-S3) または AWS KMS キー (SSE-KMS) によるサーバー側の暗号化が使用されます。

ワークロードに SSE-C が必要な場合は、バケットのデフォルトの暗号化設定を更新することで、明示的に有効にすることができます。逆に、SSE-C がまだ許可されている既存のバケットがある場合は、それをブロックして新しい SSE-C アップロードを防ぐことができます。

バケットに対して SSE-C がブロックされている場合、SSE-C 暗号化を指定する `PutObject`、`CopyObject`、`PostObject`、マルチパートアップロードまたはレプリケーションリクエストは、HTTP 403 `AccessDenied` エラーで拒否されます。バケット内の既存の SSE-C で暗号化されたオブジェクトは影響を受けず、必要な SSE-C ヘッダーを指定することで、`GetObject` または `HeadObject` を使用して引き続き読み取ることができます。

この設定は `PutBucketEncryption` API のパラメータであり、S3 コンソール、AWS CLI、または AWS SDK を使用して更新することもできます。`s3:PutEncryptionConfiguration` 許可が必要です。

**重要**  
Amazon Simple Storage Service では、すべての新しい汎用バケットについて、お客様が用意したキーによるサーバー側の暗号化 (SSE-C) を自動的に無効にする新しいデフォルトのバケットセキュリティ設定が適用されるようになりました。2026 年 4 月、Amazon S3 は更新をデプロイし、すべての新しい汎用バケットで、すべての新しい書き込みリクエストに対して SSE-C 暗号化が無効になるようにしました。SSE-C で暗号化されたオブジェクトがない AWS アカウント内の既存のバケットの場合、Amazon S3 はすべての新しい書き込みリクエストに対しても SSE-C を無効にしました。この変更により、SSE-C 暗号化を必要とするアプリケーションは、新しいバケットの作成後に [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) API オペレーションを介して SSE-C の使用を意図的に有効にする必要があります。この変更の詳細については、「[新しいバケットの SSE-C 設定に関するよくある質問](default-s3-c-encryption-setting-faq.md)」を参照してください。

## アクセス許可
<a name="bucket-encryption-permissions"></a>

`PutBucketEncryption` API または S3 コンソール、AWS SDK、または AWS CLI を使用して、汎用バケットの暗号化タイプをブロックまたはブロック解除します。次のアクセス許可が必要です。
+ `s3:PutEncryptionConfiguration`

`GetBucketEncryption` API または S3 コンソール、AWS SDK、または AWS CLI を使用して、汎用バケットのブロックされた暗号化タイプを表示します。次のアクセス許可が必要です。
+ `s3:GetEncryptionConfiguration`

## SSE-C 暗号化をブロックする前の考慮事項
<a name="considerations-before-blocking-sse-c"></a>

バケットの SSE-C をブロックすると、次の暗号化動作が適用されます。
+ SSE-C 暗号化をブロックする前にバケットに存在していたオブジェクトの暗号化は、変更されません。
+ SSE-C 暗号化をブロックした後、リクエストに必要な SSE-C ヘッダーを提供する限り、SSE-C で暗号化された既存のオブジェクトに対して GetObject および HeadObject リクエストを引き続き実行できます。
+ バケットに対して SSE-C がブロックされている場合、SSE-C 暗号化を指定する `PutObject`、`CopyObject`、`PostObject`、またはマルチパートアップロードリクエストは、HTTP 403 `AccessDenied` エラーで拒否されます。
+ レプリケーションの送信先バケットで SSE-C がブロックされ、レプリケートされるソースオブジェクトが SSE-C で暗号化されている場合、レプリケーションは HTTP 403 `AccessDenied` エラーで失敗します。

この暗号化タイプをブロックする前に、いずれかのバケットで SSE-C 暗号化を使用しているかどうかを確認する場合は、[AWS CloudTrail](https://aws.amazon.com/cloudtrail/) などのツールを使用してデータへのアクセスをモニタリングできます。この[ブログ記事](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/)では、オブジェクトのアップロードの暗号化方法をリアルタイムで監査する方法を示します。この [re:Post 記事](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets)を参照して、S3 インベントリレポートのクエリを実行して、SSE-C で暗号化されたオブジェクトがあるかどうかを確認することもできます。

### Steps
<a name="block-sse-c-gpb-steps"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、および AWS SDK を使用して、汎用バケットのお客様が用意したキーによるサーバー側の暗号化 (SSE-C) をブロックまたはブロック解除できます。

### S3 コンソールの使用
<a name="block-sse-c-gpb-console"></a>

Amazon S3 コンソールを使用してバケットの SSE-C 暗号化をブロックまたはブロック解除するには。

1. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. SSE-C 暗号化をブロックするバケットを選択します。

1. バケットの **[プロパティ]** タブを選択します。

1. バケットの **[デフォルトの暗号化]** プロパティパネルに移動し、**[編集]** を選択します。

1. **[ブロックされた暗号化タイプ]** セクションで、**[お客様が用意したキーによるサーバー側の暗号化 (SSE-C)]** の横にあるチェックボックスをオンにして SSE-C 暗号化をブロックするか、このチェックボックスをオフにして SSE-C を許可します。

1. **[Save Changes]** (変更を保存) をクリックします。

### の使用AWS CLI
<a name="block-sse-c-gpb-cli"></a>

AWS CLI をインストールする方法については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次の CLI の例は、AWS CLI を使用して汎用バケットの SSE-C 暗号化をブロックまたはブロック解除する方法を示しています。このコマンドを使用する際は、{{ユーザー入力用プレースホルダー}}を独自の情報に置き換えます。

**汎用バケットの SSE-C 暗号化をブロックするリクエスト:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**汎用バケットで SSE-C 暗号化の使用を有効にするリクエスト:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## AWS SDK の使用
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

次の例は、AWS SDK を使用して汎用バケットへの SSE-C 暗号化書き込みをブロックまたはブロック解除する方法を示しています。

**例 - PutBucketEncryption リクエストでデフォルトの暗号化設定を SSE-S3 に設定し、SSE-C をブロックする**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.SSE_C)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

**例 - PutBucketEncryption リクエストでデフォルトの暗号化設定を SSE-S3 に設定し、SSE-C のブロックを解除する**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.NONE)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

------
#### [ SDK for Python Boto3 ]

**例 - PutBucketEncryption リクエストでデフォルトの暗号化設定を SSE-S3 に設定し、SSE-C をブロックする**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**例 - PutBucketEncryption リクエストでデフォルトの暗号化設定を SSE-S3 に設定し、SSE-C のブロックを解除する**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["NONE"]
            }
        }]
    }
)
```

------

## REST API の使用
<a name="bucket-tag-add-api"></a>

汎用バケットの SSE-C 暗号化のブロックまたはブロック解除に関する Amazon S3 REST API サポートの詳細については、「*Amazon Simple Storage Service API リファレンス*」の次のセクションを参照してください。
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) および [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) API オペレーションの [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) データ型で使用される [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html) データ型。