type
status
date
slug
summary
tags
category
icon
password
理論
AWS KMS とデータ暗号化の本質
AWS Key Management Service (KMS) は、データの暗号化とキー管理を簡素化するフルマネージドサービスです。主に以下の2つの方法でデータ暗号化を行います:
- サーバー側暗号化 (SSE):
- データがAWSサービス(例:S3)に保存される際に自動で暗号化されます。
- KMSを使って暗号化キーを管理します。
- クライアント側暗号化:
- クライアント側でデータを暗号化し、その後暗号化されたデータをAWSにアップロードします。
- KMSは暗号化キーを生成・管理し、クライアントに提供します。
主要なアクションと権限
kms:GenerateDataKey
:クライアントが暗号化に使用するデータキーを生成するために必要。KMSから共通鍵CMKを取得する権限
kms:Encrypt
:データをKMSで暗号化するために必要。KMSに、指定した鍵でEncrypt権限
kms:Decrypt
:暗号化されたデータを復号するために必要。KMSに、指定した鍵でDecrypt権限
IAMポリシーの設定
KMSにアクセスするためには、適切なIAMポリシーで権限を設定する必要があります。例えば、
kms:Encrypt
やkms:GenerateDataKey
を許可することで、データ暗号化が可能になります。まとめ
- KMSはデータ暗号化とキー管理を担当し、暗号化処理をサポートします。
- クライアント側暗号化とサーバー側暗号化は異なるアプローチでデータ保護を実現します。
- 適切な権限設定が重要で、KMSを使用する際は適切なIAMポリシーでアクセスを管理する必要があります。
実践
略
一問道場
質問 #96
トピック 1
ソリューションアーキテクトは、オブジェクトが新しい Amazon S3 バケットに保存される際に、クライアントサイドの暗号化メカニズムを実装する必要があります。
ソリューションアーキテクトは、この目的のために AWS Key Management Service (AWS KMS) に保存された CMK を作成しました。
ソリューションアーキテクトは、次の IAM ポリシーを作成し、それを IAM ロールに添付しました:
テスト中、ソリューションアーキテクトは S3 バケット内の既存のテストオブジェクトを正常に取得できましたが、新しいオブジェクトをアップロードしようとしたところ、「アクションは禁止されています」というエラーメッセージが表示されました。このエラーメッセージは、アップロードの試行が失敗したことを示しています。
この要件を満たすために、ソリューションアーキテクトは IAM ポリシーにどのアクションを追加する必要がありますか?
A. kms:GenerateDataKey
B. kms:GetKeyPolicy
C. kms:GetPublicKey
D. kms:Sign
解説
この問題は、クライアントサイド暗号化を使用して Amazon S3 バケットにオブジェクトを保存する際に、必要な IAM ポリシーが適切に設定されていない場合に発生するエラーについて説明しています。具体的には、S3 バケットにオブジェクトをアップロードする際に、暗号化に関連する追加の権限が不足していることが原因です。
ポリシーの解析:
- S3 バケットのアクセス権限 (
s3:GetObject
,s3:PutObject
, など): これらは、S3 バケット内のオブジェクトを取得したり、アップロードしたりするために必要な基本的な権限です。この部分は問題ありません。
- KMS アクセス権限 (
kms:Decrypt
,kms:Encrypt
): これらは、AWS KMS を使用してデータを暗号化または復号化するための権限です。しかし、クライアントサイド暗号化を使用する場合、暗号化のために KMS キーを利用する際に、データキーの生成が必要です。
クライアントサイド暗号化の処理:
クライアントサイド暗号化では、データがアップロードされる前に、まずクライアント側でデータを暗号化し、その暗号化に使用するデータキーが KMS から生成される必要があります。これを行うために、
kms:GenerateDataKey
権限が必要です。この権限は、クライアントが KMS からデータ暗号化に必要なデータキーを生成するために必要です。正解:
A. kms:GenerateDataKey
このアクションを追加することで、クライアントは暗号化に使用するデータキーを KMS から生成できるようになり、オブジェクトのアップロードが成功するようになります。
他の選択肢の説明:
- B. kms:GetKeyPolicy: これは KMS キーのポリシーを取得するための権限ですが、データキーを生成するためには必要ありません。
- C. kms:GetPublicKey: 公開鍵を取得するための権限であり、クライアントサイド暗号化に必要なデータキーを生成するためには関係ありません。
- D. kms:Sign: データに署名するための権限ですが、暗号化や復号化に関連する操作には関係しません。
結論:
クライアントサイド暗号化を利用するためには、
kms:GenerateDataKey
アクションをポリシーに追加する必要があります。これにより、S3 バケットへのオブジェクトのアップロードが正常に行えるようになります。- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/16cd7ae8-88e2-8063-aabe-eec8c4efc4a1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章