翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
へのアクセスを保護する AWS KMS keys ことは、すべての AWS リソースのセキュリティにとって重要です。KMS キーは、 AWS アカウントで最も機密性の高いリソースの多くを保護するために使用されます。KMS キーへのアクセスを制御するキーポリシー、IAM ポリシー、グラント (権限付与)、VPC エンドポイントポリシーを設計します。
KMS キーへのアクセスを制御する IAM ポリシーステートメントでは、最小権限の原則を使用します。IAM プリンシパルで、使用または管理する必要がある KMS キーのみに対して、必要なアクセス許可のみを付与します。
AWS KMS キーとエイリアスへのアクセスを制御する IAM ポリシーには、次のベストプラクティスが適用されます。IAM ポリシーの一般的なベストプラクティスのガイダンスについては、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。
- キーポリシーを使用する
-
可能であれば、他の AWS アカウントを含む多くの KMS キーに適用できる IAM ポリシーではなく、1 つの KMS キーに影響するキーポリシーでアクセス許可を付与します。これは、 kms:PutKeyPolicy や kms:ScheduleKeyDeletion などの機密性の高いアクセス許可にとって特に重要ですが、データの保護方法を決定する暗号化オペレーションでも重要です。
- CreateKey アクセス許可を制限する
-
キー (kms:CreateKey) を作成する権限を必要なプリンシパルにのみ付与します。KMS キーを作成するプリンシパルは、そのキーポリシーも設定するため、自分自身や他のユーザーに、作成した KMS キーを使用および管理するためのアクセス許可を付与できます。このアクセス許可を許可する場合は、 ポリシー条件を使用して制限することを検討してください。例えば、kms:KeySpec 条件を使用して、対称暗号化 KMS キーに対する許可を制限できます。
- IAM ポリシーで KMS キーを指定する
-
ベストプラクティスとして、ポリシーステートメントの
Resource
要素でアクセス許可が適用する各 KMS キーの キー ARN を指定します。この方法は、プリンシパルが必要とする KMS キーへのアクセス許可を制限します。例えば、このResource
要素は、プリンシパルが使用する必要がある KMS キーのみを一覧表示します。"Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ]
KMS キーの指定が実用的でない場合は、 などの信頼できる AWS アカウント およびリージョンの KMS キーへのアクセスを制限する
Resource
値を使用しますarn:aws:kms:
。または、 など AWS アカウント、信頼できる のすべてのリージョン (*) の KMS キーへのアクセスを制限しますregion
:account
:key/*arn:aws:kms:*:
。account
:key/*キー ID、エイリアス名、エイリアス ARN を使用して、IAM ポリシーの
Resource
フィールド内の KMS キーを表すことはできません。エイリアス ARN を指定する場合、ポリシーは KMS キーではなく、エイリアスに適用されます。エイリアスの IAM ポリシーの詳細については、エイリアスへのアクセスの制御 を参照してください。 - IAM ポリシーの「リソース」:「*」を避ける
-
ワイルドカード文字 (*) を慎重に使用してください。キーポリシーでは、
Resource
要素のワイルドカード文字は、キーポリシーがアタッチされている KMS キーを表します。ただし、IAM ポリシーでは、Resource
要素 ("Resource": "*"
) のワイルドカード文字だけが、プリンシパルのアカウント AWS アカウント が使用するアクセス許可を持つすべての のすべての KMS キーにアクセス許可を適用します。これには、他の の KMS キー AWS アカウントと、プリンシパルの アカウントの KMS キーが含まれる場合があります。たとえば、別の で KMS キーを使用するには AWS アカウント、プリンシパルに、外部アカウントの KMS キーのキーポリシーと、自分のアカウントの IAM ポリシーからのアクセス許可が必要です。任意のアカウントが自分の KMS キーに対する AWS アカウント kms:Decrypt アクセス許可を付与したとします。この場合、すべての KMS キー (
"Resource": "*"
) に対するロールkms:Decrypt
のアクセス許可を付与するアカウントの IAM ポリシーは、要件の IAM パートを満たします。その結果、そのロールを引き受けることができるプリンシパルは、信頼されていないアカウントの KMS キーを使用して、暗号テキストを復号できるようになります。オペレーションのエントリは、両方のアカウントの CloudTrail ログに表示されます。特に、次の API オペレーションを許可するポリシーステートメントではを使用しないでください。
"Resource": "*"
これらのオペレーションは、他の の KMS キーで呼び出すことができます AWS アカウント。 - 「リソース」を使用する場合:「*」
-
IAM ポリシーでは、
Resource
要素でワイルドカード文字は、それを必要とするアクセス権限に対してのみ使用します。"Resource": "*"
要素が必要なのは、次の権限のみです。-
kms:CreateCustomKeyStore や kms:ConnectCustomKeyStore などのカスタムキーストアのアクセス許可。などのカスタムキーストアの権限。
注記
エイリアスオペレーションのアクセス許可 (kms:CreateAlias、kms:UpdateAlias、kms:DeleteAlias) は、エイリアスと KMS キーにアタッチする必要があります。IAM ポリシーで
"Resource": "*"
を使用し、エイリアスと KMS キーを表すことも、Resource
エレメントでエイリアスと KMS キーを指定することもできます。例については「エイリアスへのアクセスの制御」を参照してください。
このトピックの例では、KMS キーの IAM ポリシーを設計するための詳細情報とガイダンスを示します。すべての AWS リソースの IAM ベストプラクティスについては、「IAM ユーザーガイド」の「IAM のセキュリティのベストプラクティス」を参照してください。