汎用バケットの SSE-C のブロックまたはブロック解除 - Amazon Simple Storage Service

汎用バケットの SSE-C のブロックまたはブロック解除

Amazon S3 の最新のユースケースでは、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) または AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の柔軟性がないため、お客様が用意したキーによるサーバー側の暗号化 (SSE-C) は使用されなくなりました。SSE-C では、SSE-C 暗号化データとやり取りするたびに暗号化キーを提供する必要があるため、S3 バケットからデータを読み取ってデータを操作しようとする他のユーザー、ロール、または AWS のサービスと SSE-C キーを共有することは実用的ではありません。

汎用バケットで使用できるサーバー側の暗号化タイプを制限するには、バケットのデフォルトの暗号化設定を更新して SSE-C 書き込みリクエストをブロックすることを選択できます。このバケットレベルの設定は、SSE-C を指定するオブジェクトをアップロードするリクエストをブロックします。バケットに対して SSE-C がブロックされている場合、SSE-C 暗号化を指定する PutObjectCopyObjectPostObject、またはマルチパートアップロードまたはレプリケーションリクエストは、HTTP 403 AccessDenied エラーで拒否されます。

この設定は PutBucketEncryption API のパラメータであり、s3:PutEncryptionConfiguration アクセス許可がある場合は S3 コンソール、AWS CLI、および AWS SDK を使用して更新することもできます。

有効な値は、汎用バケットの SSE-C 暗号化をブロックする SSE-C と、バケットへの書き込みに SSE-C を使用できるようにする NONE です。

重要

2026 年 4 月以降、AWS はすべての新しいバケットについて、お客様が用意したキー (SSE-C) によるサーバー側の暗号化を無効にします。さらに、SSE-C 暗号化は、SSE-C 暗号化データを持たない AWS アカウントのすべての既存のバケットに対して無効になります。これらの変更により、SSE-C 暗号化を必要とする少数のアプリケーションは、バケットの作成後に PutBucketEncryption API を介して SSE-C の使用を意図的に有効にする必要があります。このような場合、自動化スクリプト、CloudFormation テンプレート、またはその他のインフラストラクチャ設定ツールを更新して、これらの設定を構成する必要がある場合があります。詳細については、AWS ストレージブログ記事を参照してください。

アクセス許可

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

  • s3:PutEncryptionConfiguration

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

  • s3:GetEncryptionConfiguration

SSE-C 暗号化をブロックする前の考慮事項

バケットの SSE-C をブロックすると、次の暗号化動作が適用されます。

  • SSE-C 暗号化をブロックする前にバケットに存在していたオブジェクトの暗号化は、変更されません。

  • SSE-C 暗号化をブロックした後、リクエストに必要な SSE-C ヘッダーを提供する限り、SSE-C で暗号化された既存のオブジェクトに対して GetObject および HeadObject リクエストを引き続き実行できます。

  • バケットに対して SSE-C がブロックされている場合、SSE-C 暗号化を指定する PutObjectCopyObjectPostObject、またはマルチパートアップロードリクエストは、HTTP 403 AccessDenied エラーで拒否されます。

  • レプリケーションの送信先バケットで SSE-C がブロックされ、レプリケートされるソースオブジェクトが SSE-C で暗号化されている場合、レプリケーションは HTTP 403 AccessDenied エラーで失敗します。

この暗号化タイプをブロックする前に、いずれかのバケットで SSE-C 暗号化を使用しているかどうかを確認する場合は、AWS CloudTrail などのツールを使用してデータへのアクセスをモニタリングできます。このブログ記事では、オブジェクトのアップロードの暗号化方法をリアルタイムで監査する方法を示します。この re:Post 記事を参照して、S3 インベントリレポートのクエリを実行して、SSE-C で暗号化されたオブジェクトがあるかどうかを確認することもできます。

Steps

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

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

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

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

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

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

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

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

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

AWS CLI をインストールする方法については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール」を参照してください。

次の 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" } }] }'
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"] } }] } )

汎用バケットの SSE-C 暗号化のブロックまたはブロック解除に関する Amazon S3 REST API サポートの詳細については、「Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。