IAM ポリシーのベストプラクティス - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM ポリシーのベストプラクティス

へのアクセスを保護する 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:PutKeyPolicykms: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:region:account:key/*。または、 など AWS アカウント、信頼できる のすべてのリージョン (*) の KMS キーへのアクセスを制限します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:CreateAliaskms:UpdateAliaskms:DeleteAlias) のアクセス許可は、エイリアスと KMS キーにアタッチする必要があります。IAM ポリシーで "Resource": "*" を使用し、エイリアスと KMS キーを表すことも、Resource エレメントでエイリアスと KMS キーを指定することもできます。例については、「エイリアスへのアクセスの制御」を参照してください。

 

このトピックの例では、KMS キーの IAM ポリシーを設計するための詳細情報とガイダンスを示します。一般的な AWS KMS ベストプラクティスのガイダンスについては、AWS Key Management Service 「ベストプラクティス (PDF)」を参照してください。すべての AWS リソースの IAM ベストプラクティスについては、「IAM ユーザーガイド」の「IAM のセキュリティのベストプラクティス」を参照してください。