AWS KMS で IAM ポリシーを使用する - AWS Key Management Service

AWS KMS で IAM ポリシーを使用する

IAM ポリシーをキーポリシー権限VPC エンドポイントポリシーとともに使用して、AWS KMS の AWS KMS keys へのアクセスを制御できます。

注記

IAM ポリシーを使用して KMS キーへのアクセスを制御するには、KMS キーのキーポリシーが IAM ポリシーを使用するアクセス許可をアカウントに付与する必要があります。具体的には、キーポリシーには IAM ポリシーを有効にするポリシーステートメントを含める必要があります。

このセクションでは、IAM ポリシーを使用して、AWS KMS オペレーションへのアクセスを制御する方法について説明します。IAM の一般的な情報については、「 IAM ユーザーガイド」を参照してください。

すべての KMS キーはキーポリシーを持つ必要があります。IAM ポリシーはオプションです。IAM ポリシーを使用して KMS キーへのアクセスを制御するには、KMS キーのキーポリシーが IAM ポリシーを使用するアクセス許可をアカウントに付与する必要があります。具体的には、キーポリシーには IAM ポリシーを有効にするポリシーステートメントを含める必要があります。

IAM ポリシーは、任意の AWS KMS オペレーションへのアクセスを制御できます。キーポリシーとは異なり、IAM ポリシーは複数の KMS キーへのアクセスを制御し、複数の関連 AWS サービスのオペレーションに対するアクセス許可を付与できます。IAM ポリシーは、特定の KMS キーを含まないため、キーポリシーで制御できないオペレーション (CreateKey など) へのアクセスを制御する場合に特に便利です。

Amazon Virtual Private Cloud (Amazon VPC) エンドポイントを介して AWS KMS にアクセスする場合、VPC エンドポイントポリシーを使用して、エンドポイントの使用時に AWS KMS リソースへのアクセスを制限することもできます。例えば、VPC エンドポイントを使用する場合、AWS アカウント のプリンシパルのみにカスタマーマネージドキーへのアクセスを許可できます。詳細については、「VPC エンドポイントポリシー」を参照してください。

JSON ポリシードキュメントの記述と書式設定については、『 IAM ユーザーガイド』の「IAM JSON ポリシーリファレンス 」を参照してください

IAM ポリシーは、次の方法で使用できます。

  • フェデレーションまたはクロスアカウントアクセス権限のロールにアクセス許可ポリシーをアタッチ する — IAM ロールに IAM ポリシーをアタッチして、ID フェデレーションを有効にしたり、クロスアカウントアクセス権限を許可したり、EC2 インスタンスで実行されているアプリケーションにアクセス許可を付与したりできます。IAM ロールのさまざまなユースケースの詳細については、IAM ユーザーガイドIAM ロールを参照してください。

  • ユーザーまたはグループにアクセス許可ポリシーをアタッチする — ユーザーまたはユーザーのグループ に AWS KMS オペレーションの呼び出しを許可するポリシーをアタッチできます。ただし、IAM ベストプラクティスでは、可能な限り IAM ロールなどの一時的な認証情報を持つアイデンティティを使用することが推奨されています。

次の例は、AWS KMS のアクセス許可を使用する IAM ポリシーを示しています。このポリシーは、アタッチされた IAM アイデンティティで、すべての KMS キーとエイリアスを一覧表示できるようにします。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } }

すべての IAM ポリシーと同様に、このポリシーには Principal 要素がありません。IAM アイデンティティ に IAM ポリシーをアタッチすると、そのアイデンティティは、ポリシーで指定されたアクセス権限を取得します。

すべての AWS KMS API アクションとそれらが適用されるリソースの表については、「アクセス許可に関するリファレンス」を参照してください。

複数の IAM プリンシパルが KMS キーにアクセスできるようにする

IAM グループは、キーポリシー内の有効なプリンシパルではありません。複数のユーザーおよびロールが KMS キーにアクセスできるようにするには、次のいずれかを行います。

  • IAM ロールをキーポリシーのプリンシパルとして使用します。必要に応じて、複数の権限を持つユーザーがそのロールを引き受けることができます。詳細については、「IAM ユーザーガイド」の「IAM ロール」を参照してください。

    複数の IAM ユーザーをキーポリシーにリストすることは可能ですが、許可されたユーザーのリストが変更されるたびにキーポリシーを更新する必要があるため、この方法は推奨されません。また、IAM のベストプラクティスでは、長期的な認証情報を持つ IAM ユーザーの使用は推奨されていません。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

  • IAM ポリシーを使用して IAM グループに許可を付与します。そのためには、キーポリシーに、IAM ポリシーでKMS キーへのアクセスを許可するステートメントが含まれていることを確認します。次に、KMS キーへのアクセスを許可する IAM ポリシーを作成し、そのポリシーを IAM グループ (許可された IAM ユーザーを含む) にアタッチします。このアプローチを使用すると、承認されたユーザーのリストが変更されたときにポリシーを変更する必要はありません。代わりに、適切な IAM グループに対してそれらのユーザーを追加または削除するだけで済みます。詳細については、「IAM ユーザーガイド」の「IAM ユーザーグループ」を参照してください。

AWS KMS キーポリシーと IAM ポリシーがどのように連携するかについての詳細は、AWS KMS アクセス許可のトラブルシューティング を参照してください。