Amazon S3 にあるオブジェクトの暗号化には、AWS KMS で管理されたキー、またはカスタム AWS KMS キーのどちらを使うべきですか?

最終更新日: 2020 年 10 月 21 日

Amazon Simple Storage Service (Amazon S3) で保存されているオブジェクトに AWS Key Management Service を使用したサーバー側の暗号化 (SSE-KMS) を使用したいと思っています。これにはカスタム AWS KMS カスタマーマスターキー (CMK) を使用するべきですか? それとも aws/s3 と呼ばれる AWS KMS 管理の CMK を使用すべきですか? これら 2 つのキーの違いは何ですか?

解決方法

AWS KMS はデフォルトの aws/s3 CMK を管理しますが、カスタム CMK についてはユーザーが完全に制御します。

デフォルトの aws/s3 CMK の使用

注: Amazon S3 コンソールでの CMK の名前は aws/s3 ですが、AWS コマンドラインインターフェイス (AWS CLI) を使用する場合は、その名前または ID を指定しません。

以下の場合は、デフォルトの aws/s3 CMK の使用を検討してください。

  • CMK と同じ AWS アカウントにある AWS Identity and Access Management (IAM) プリンシパルを使って S3 オブジェクトをアップロードしたり、それらにアクセスしたりしている。
  • CMK のポリシーを管理したくない。
  • CMK をローテーションしたくない。

デフォルトの aws/s3 CMK を使ってオブジェクトを暗号化するには、アップロード中に暗号化方法を SSE-KMS として定義しますが、キーは指定しないでください。

aws s3 cp ./mytextfile.txt s3://DOC-EXAMPLE-BUCKET/ --sse aws:kms

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

カスタム CMK の使用

以下の場合は、カスタム CMK の使用を検討してください。

  • CMK の作成、ローテーション、無効化、または CMK のアクセスコントロールの定義を実行したい。
  • S3 オブジェクトにクロスアカウントのアクセス権を付与したい。カスタム CMK のポリシーを設定して、別のアカウントからのアクセスを許可することができます。

独自に作成したカスタム CMK を使ってオブジェクトを暗号化するには、アップロード中に暗号化方法を SSE-KMS として定義します。その後、カスタム CMK をキー (--sse-kms-key-id) として指定します。

aws s3 cp ./mytextfile.txt s3://DOC-EXAMPLE-BUCKET/ --sse aws:kms --sse-kms-key-id testkey

カスタム CMK へのアクセスを制御するには、キーポリシーを変更します。AWS KMS キーポリシーの作成方法の詳細については、キーポリシーの例を参照してください。