翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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:PutKeyPolicy や kms:ScheduleKeyDeletion などの機密性の高いアクセス許可だけでなく、データの保護方法を決定する暗号化オペレーションにも特に重要です。
- アクセス CreateKey 許可を制限する
-
キー (kms:CreateKey) を作成するアクセス許可を、それを必要とするプリンシパルにのみ付与します。KMS キーを作成するプリンシパルもそのキーポリシーを設定するため、自分や他のユーザーに、作成したKMSキーを使用および管理するためのアクセス許可を付与できます。このアクセス許可を許可する場合は、 ポリシー条件を使用して制限することを検討してください。例えば、kms:KeySpec 条件を使用して、アクセス許可を対称暗号化KMSキーに制限できます。
- IAM ポリシーでKMSキーを指定する
-
ベストプラクティスとして、ポリシーステートメントARNの
Resource
要素でアクセス許可が適用される各キーの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:
。または、 など AWS アカウント、信頼された のすべてのリージョン (*) のKMSキーへのアクセスを制限しますregion
:account
:key/*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:CreateCustomKeyStore や kms:ConnectCustomKeyStore などのカスタムキーストアのアクセス許可。
注記
エイリアスオペレーション (kms:CreateAlias、kms:UpdateAlias、kms:DeleteAlias) のアクセス許可は、エイリアスとKMSキーにアタッチする必要があります。IAM ポリシー
"Resource": "*"
で を使用して、エイリアスとKMSキーを表すか、Resource
要素でエイリアスとKMSキーを指定できます。例については、「エイリアスへのアクセスの制御」を参照してください。
このトピックの例では、KMSキーのIAMポリシーを設計するための詳細情報とガイダンスを提供します。すべての AWS リソースのIAMベストプラクティスについては、「 IAMユーザーガイド」の「 のセキュリティのベストプラクティスIAM」を参照してください。