type
status
date
slug
summary
tags
category
icon
password
理論
2. Amazon S3の暗号化4種類
SSE-S3

- Amazon S3によって処理、管理されるキーを使用
- オブジェクトを固有のキーで暗号化
AES-256
暗号化タイプを使用
"x-amz-server-side-encryption":"AES256"
ヘッダーを設定して利用する
SSE-KMS

- オブジェクトを作成する際にAWS Key Management Service(AWS KMS)の顧客マスタキー(CMK)を使用するサーバ側の暗号化によりデータを暗号化するように指定
"x-amz-server-side-encryption":"aws:kms"
ヘッダーを設定して利用する
SSE-C

- サーバ側の暗号化を使用して独自の暗号化キーを設定
- リクエストの一部として用意された暗号化キーで、Amazon S3 は、ディスクに書き込む際の暗号化、オブジェクトにアクセスする際の復号を管理
AES-256
暗号化タイプを使用
- HTTPSだけサポートする
クライアント側の暗号化

- クライアント側の暗号化でAmazon S3に送る前にデータを暗号化する方法
- クライアント側暗号化ライブラリ(AWS Encryption SDK)を使用すると暗号化をより容易に実装可能
- AWS Encryption SDKとAmazon S3 暗号化クライアントは、異なるデータ形式で暗号テキストを生成するため互換できない
1. S3の暗号化方法:
AWS S3では、オブジェクトを保存する際に、暗号化を行うことでデータを保護できます。主に2つの方法があります:
- SSE-S3 (Server-Side Encryption with S3-Managed Keys): S3が管理する暗号化キーを使用します。手軽に利用できますが、制御の幅は狭いです。
- SSE-KMS (Server-Side Encryption with KMS Managed Keys): AWS Key Management Service (KMS) を使用して、暗号化キーを管理できます。より細かい制御や監査が可能です。
2. デフォルト暗号化設定:
S3バケットには「デフォルトの暗号化設定」を有効にすることができます。この設定により、アップロードされたオブジェクトは、指定した暗号化方式(SSE-S3やSSE-KMS)で自動的に暗号化されます。これにより、暗号化されていないデータがS3に保存されることを防げます。
3. 暗号化強制のためのバケットポリシー:
S3バケットポリシーを使用して、未暗号化のオブジェクトがバケットに保存されることを防ぐことができます。例えば、未暗号化のPutObjectリクエストを拒否することで、すべてのオブジェクトが指定した暗号化方式で保存されるように強制することができます。
4. 再アップロードによる暗号化の変更:
既存のオブジェクトの暗号化方式を変更するためには、オブジェクトを再アップロードする必要があります。S3バケットのデフォルト暗号化設定を変更しても、既存オブジェクトには適用されないため、新しい暗号化方式で再アップロードすることが求められます。
5. 暗号化とセキュリティ管理:
暗号化を使用することで、データが保存されている間に盗聴されるリスクを減らし、セキュリティを強化できます。また、KMSキーを使用することで、暗号化キーのアクセス権限や監査を細かく管理することができます。
これらの知識を組み合わせることで、S3の暗号化を適切に管理し、セキュリティ要件に対応することができます。
実践


一問道場
質問 #51
ある医療保険会社が、個人識別情報(PII)をAmazon S3バケットに保存しています。この会社では、オブジェクトを暗号化するためにS3管理暗号化キー(SSE-S3)を使用しています。しかし、新しい要件により、S3バケット内の現在および将来のすべてのオブジェクトを、会社のセキュリティチームが管理するキーを使用して暗号化する必要があります。このS3バケットにはバージョニングは有効化されていません。
この要件を満たすためには、どのソリューションを採用すべきですか?
選択肢
A.
S3バケットのプロパティでデフォルトの暗号化設定をSSE-S3からKMS-CMKを使用した暗号化に変更します。AWS CLIを使って、S3バケット内のすべてのオブジェクトを再アップロードします。さらに、未暗号化のPutObjectリクエストを拒否するS3バケットポリシーを設定します。
B.
S3バケットのプロパティでデフォルトの暗号化設定をAWS KMS管理の暗号化キー(SSE-KMS)に変更します。未暗号化のPutObjectリクエストを拒否するS3バケットポリシーを設定します。その後、AWS CLIを使用して、S3バケット内のすべてのオブジェクトを再アップロードします。
C.
S3バケットのプロパティでデフォルトの暗号化設定をAWS KMS管理の暗号化キー(SSE-KMS)に変更します。S3バケットポリシーを設定し、GetObjectおよびPutObjectリクエスト時にオブジェクトが自動的に暗号化されるようにします。
D.
S3バケットのプロパティでデフォルトの暗号化設定を顧客管理キー(AES-256)を使用した暗号化に変更します。S3バケットにアクセスするエンティティが未暗号化のPutObjectリクエストを送信できないようにするポリシーを設定します。その後、AWS CLIを使用して、S3バケット内のすべてのオブジェクトを再アップロードします。
解説
選択肢 B は、次の要件を満たすための最適な方法です:
- SSE-KMSの使用:
- S3バケットのデフォルト暗号化設定を SSE-KMS(AWS KMS管理の暗号化キー)に変更します。これにより、セキュリティチームが管理するKMSキーを使用してオブジェクトが暗号化されます。SSE-S3ではなく、SSE-KMSを選択することで、暗号化キーを管理する権限がAWS KMSに委任され、セキュリティチームがそのキーを管理できます。
- 未暗号化のPutObjectリクエストを拒否:
- バケットポリシーを設定して、未暗号化のPutObjectリクエスト(暗号化されていないオブジェクトのアップロード)を拒否します。これにより、今後S3バケットに保存されるオブジェクトは必ず暗号化され、ポリシーによりセキュリティが強化されます。
- 既存のオブジェクトの再アップロード:
- バケット内の既存オブジェクトは自動的に暗号化されないため、AWS CLIを使用して、これらのオブジェクトを再アップロードする必要があります。再アップロードによって、既存のオブジェクトも新しい暗号化キーで暗号化されます。
他の選択肢の問題点:
- A は、SSE-KMSの使用方法が誤っており、KMS-CMKという不適切な用語が使われています。また、再アップロードの手順が不完全です。
- C は、SSE-KMSを使う点では正しいものの、「自動的に暗号化される」という説明が誤解を招きます。既存のオブジェクトは再アップロードする必要があるため、その指示が不足しています。
- D は、顧客管理キー(AES-256)を使用する設定ですが、これはセキュリティチームの管理するキーではなく、要件に合致しません。
そのため、B が最適な選択肢です。
「自動暗号化」と「未暗号化のPutObjectリクエストを拒否するポリシー」は似ていますが、違いがあります。
- 自動暗号化:オブジェクトは自動的に暗号化され、アップロード時に暗号化を指定しなくても暗号化されます。
- ポリシーによる拒否:暗号化されていないオブジェクトのアップロードを拒否しますが、自動的に暗号化されるわけではありません。
つまり、自動暗号化は暗号化を自動で行い、ポリシーは暗号化されていないリクエストをブロックします。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/169d7ae8-88e2-80c3-a763-d555e1b66f4c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章