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

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

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

解決方法

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

デフォルト aws/s3 KMS キーの使用

注意: Amazon S3 コンソールでは KMS キーの名前が aws/s3 になっていますが、AWS Command Line Interface (AWS CLI) を使用する場合は、その名前と ID のどちらも指定しません。

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

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

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

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

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

カスタム KMS キーの使用

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

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

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

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

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