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

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

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

へのアクセスを保護する AWS KMS keys ことは、すべての AWS リソースのセキュリティにとって重要です。 KMSキーは、 で最も機密性の高いリソースの多くを保護するために使用されます AWS アカウント。キーへのアクセスを制御するキーポリシー、IAMポリシー、権限、VPCエンドポイントポリシーを設計しますKMS。

KMS キーへのアクセスを制御するIAMポリシーステートメントでは、最小特権の原則を使用します。プリンIAMシパルに、使用または管理する必要があるKMSキーに対してのみ必要なアクセス許可を付与します。

AWS KMS キーとエイリアスへのアクセスを制御するIAMポリシーには、次のベストプラクティスが適用されます。一般的なIAMポリシーのベストプラクティスガイダンスについては、「 IAMユーザーガイド」の「 のセキュリティのベストプラクティスIAM」を参照してください。

キーポリシーを使用する

可能な限り、他のキーを含む多くのKMSキーに適用できる ポリシーではなく、1 つのキーに影響するKMSキーIAMポリシーでアクセス許可を付与します AWS アカウント。これは、kms:PutKeyPolicykms:ScheduleKeyDeletion などの機密性の高いアクセス許可だけでなく、データの保護方法を決定する暗号化オペレーションにも特に重要です。

アクセス CreateKey 許可を制限する

キー (kms:CreateKey) を作成するアクセス許可を、それを必要とするプリンシパルにのみ付与します。KMS キーを作成するプリンシパルもそのキーポリシーを設定するため、自分や他のユーザーに、作成したKMSキーを使用および管理するためのアクセス許可を付与できます。このアクセス許可を許可する場合は、 ポリシー条件を使用して制限することを検討してください。例えば、kms:KeySpec 条件を使用して、アクセス許可を対称暗号化KMSキーに制限できます。

IAM ポリシーでKMSキーを指定する

ベストプラクティスとして、ポリシーステートメントARNResource要素でアクセス許可が適用される各キーのKMSキーを指定します。この方法では、プリンシパルが必要とする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/*

IAM ポリシーの Resourceフィールドでキーを表すために、キー IDエイリアス名、またはエイリアスARNを使用することはできません。 KMSエイリアス を指定するとARN、ポリシーはKMSキーではなくエイリアスに適用されます。エイリアスのIAMポリシーの詳細については、「」を参照してください。 エイリアスへのアクセスの制御

IAM ポリシーで "Resource": "*" を避ける

ワイルドカード文字 (*) を慎重に使用してください。キーポリシーでは、 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 リソースのIAMベストプラクティスについては、「 IAMユーザーガイド」の「 のセキュリティのベストプラクティスIAM」を参照してください。