Amazon Web Services ブログ

Amazon S3 はデフォルトで新しいオブジェクトを暗号化する

AWS では、セキュリティはジョブゼロが大前提です。1月5日より、Amazon Simple Storage Service (Amazon S3) ではすべての新しいオブジェクトをデフォルトで暗号化します。これで、別の暗号化オプションを指定しない限り、S3 は新しいオブジェクトごとに自動的にサーバー側の暗号化 (SSE-S3) を適用します。SSE-S3 は 2011 年に初めてリリースされました。ジェフが当時書いたところによると、「Amazon S3 のサーバー側の暗号化は、暗号化、復号化、キー管理をすべて完全に透過的に処理します。PUT オブジェクトにすると、一意のキーが生成され、そのキーでデータが暗号化され、そのキーが [ルート] キーで暗号化されます」

この変更により、別のセキュリティのベストプラクティスが自動的に有効になります。パフォーマンスに影響はなく、ユーザー側でのアクションも必要ありません。デフォルトの暗号化を使用しない S3 バケットは、デフォルト設定として SSE-S3 を自動的に適用するようになりました。現在 S3 のデフォルト暗号化を使用している既存のバケットは変更されません。

いつものように、S3 のデフォルト暗号化 (SSE-S3、新しいデフォルト)、お客様提供の暗号化キー (SSE-C)、または AWS Key Management Service のキー (SSE-KMS) の 3 つの暗号化オプションのいずれかを使用してオブジェクトを暗号化できます。暗号化のレイヤーをさらに追加するには、Amazon S3 暗号化クライアントなどのクライアントライブラリを使用して、クライアント側でオブジェクトを暗号化することもできます。

SSE-S3 を有効にするのは簡単でしたが、オプトインの性質上、常に新しいバケットで設定されていることを確認し、時間が経っても正しく設定されたままであることを確認する必要がありました。保管中のすべてのオブジェクトを SSE-S3 で暗号化しておく必要がある組織では、この更新により、追加のツールやクライアント構成を変更することなく、暗号化コンプライアンス要件を満たすことができます。

1月5日の発表により、この基本レベルの暗号化をすべての S3 バケットに適用することが「ゼロクリック」でできるようになりました。

オブジェクトが暗号化されていることを確認する
この変更は、1月5日 AWS CloudTrail データイベントログで確認できます。変更は、今後数週間にわたって、AWS マネジメントコンソールの S3 セクション、Amazon S3 インベントリAmazon S3 ストレージレンズで確認できるほか、AWS CLIAWS SDK に追加のヘッダーとして表示されます。すべての AWS リージョンにおいて、これらのツールで暗号化のステータスが利用可能になった時点で、このブログ記事とドキュメントを更新します。

変更が現在バケット上で有効であることを確認するには、CloudTrail を設定してデータイベントをログに記録することができます。デフォルトでは、トレイルはデータイベントをログに記録しません。有効にするには追加料金がかかります。データイベントは、ユーザーがファイルを S3 バケットにアップロードしたときなど、リソース上またはリソース内で実行されるリソース操作を示します。Amazon S3 バケット、AWS Lambda 関数、Amazon DynamoDB テーブル、またはそれらの組み合わせのデータイベントをログに記録できます。

有効にしたら、ファイルアップロードの場合は PutObject API を検索するか、マルチパートアップロードの場合には InitiateMultipartUpload を検索します。Amazon S3 がデフォルトの暗号化設定を使用してオブジェクトを自動的に暗号化すると、ログには名前と値のペアとして、「SSEApplied」:「Default_SSE_S3」というフィールドが含まれます。以下に、AWS CLI コマンド aws s3 cp backup.sh s3://private-sst を使用してバケットの 1 つにファイルをアップロードしたときの CloudTrail ログ (データイベントロギングが有効になっている状態) の例を示します。

デフォルトの暗号化が有効になっている S3 の Cloudtrail ログ

Amazon S3 暗号化オプション
先に述べたように、他の暗号化タイプが指定されていない場合、SSE-S3 が暗号化の新しい基本レベルになりました。SSE-S3 は、AWS が管理する 256 ビットのキーによる Advanced Encryption Standard (AES) 暗号化を使用しています。

バケットの「ワンクリック」のデフォルト暗号化設定として、または PUT リクエスト内の個々のオブジェクトに対して、SSE-S3 ではなく、SSE-C または SSE-KMS を使用してオブジェクトを暗号化することを選択できます。

SSE-C を使用すると、オブジェクトの暗号化に使用されるキーを管理を保持しながら、Amazon S3 でオブジェクトの暗号化と復号化を実行できます。SSE-C では、Amazon S3 に保存するオブジェクトの暗号化と復号化を実行するためにクライアント側のライブラリを実装したり使用したりする必要はありませんが、オブジェクトを暗号化および復号化するために Amazon S3 に送信するキーを管理する必要があります。

SSE-KMS では、AWS Key Management Service (AWS KMS) が暗号化キーを管理します。AWS の KMS を使用してキーを管理することには、他にもいくつかの利点があります。AWS の KMS では、 KMS キーの使用には個別の権限があり、Amazon S3 に保存されているオブジェクトへの不正アクセスに対する保護だけでなく、追加の制御レイヤーを提供します。AWS の KMS には監査証跡が用意されているため、誰がいつキーを使用してどのオブジェクトにアクセスしたかを確認できるほか、データを復号する許可なしにユーザーからデータにアクセスしようとして失敗したことも確認できます。

Amazon S3 暗号化クライアントなどの暗号化クライアントライブラリを使用する場合、キーは自分で管理保持することができ、選択した暗号化ライブラリを使用してクライアント側でオブジェクトの暗号化と復号化を完了できます。オブジェクトは Amazon S3 に送信されて保管される前に暗号化されます。Java、.Net、Ruby、PHP、Go、および C++ AWS SDK は、クライアント側の暗号化をサポートしています。

バケット内の既存のオブジェクトを遡及的に暗号化する場合は、このブログ記事の指示に従ってください。

今すぐご利用いただけます
この変更は、AWS GovCloud (米国)AWS 中国リージョンを含むすべての AWS リージョンにおいて現在有効です。デフォルトのオブジェクトレベルの暗号化には、追加コストはかかりません。

— seb

原文はこちらです。