AWS Key Management Service
開発者ガイド

AWS KMS での IAM ポリシーの使用

IAM ポリシーをキーポリシーと組み合わせて使用して、AWS KMS でカスタマーマスターキー (CMK) へのアクセスを制御できます。

注記

このセクションでは、AWS KMS のコンテキストでの IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全なドキュメントについては、IAMIAM ユーザーガイド を参照してください

IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチされたポリシーはアイデンティティベースのポリシー (または IAM ポリシー) と呼ばれ、IAM の外部のリソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。AWS KMS では、CMK にリソースベースのポリシーをアタッチする必要があります。これをキーポリシーと呼びます。すべての KMS CMK がキーポリシーを持っており、CMK へのアクセスを制御するにはキーポリシーを使用する必要があります。IAM ポリシー単独では、CMK へのアクセスを許可するのに十分ではありませんが、CMK のキーポリシーと組み合わせて使用することができます。そのためには、CMK のキーポリシーに、IAM ポリシーを有効にするポリシーステートメントが含まれている必要があります。

IAM ポリシーの概要

以下の方法で IAM ポリシーを使用できます。

  • ユーザーまたはグループにアクセス権限ポリシーをアタッチする – IAM ユーザーまたはユーザーのグループにたとえば CMK の新規作成を許可するポリシーをアタッチできます。

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

以下に示しているのは、AWS KMS のアクセス権限を使用する IAM ポリシーの例です。このポリシーにより、アタッチ先の IAM アイデンティティで、すべての CMK とエイリアスのリストを取得できるようになります。

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

IAM のポリシーでアクセス権限を付与するプリンシパルを指定していないため、このポリシーでは Principal要素を指定していません。このポリシーを IAM ユーザーにアタッチすると、そのユーザーは暗黙のプリンシパルになります。IAM ロールにこのポリシーをアタッチすると、引き受けたロールユーザーはアクセス権限を取得します。

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

AWS KMS コンソールを使用するために必要なアクセス権限

AWS KMS コンソールを使用して作業するユーザーには、AWS アカウントの AWS KMS リソースの使用を許可する最小限のアクセス権限が必要です。これらの AWS KMS アクセス権限に加えて、ユーザーには、IAM ユーザーおよびロールを一覧表示するためのアクセス権限が必要です。これらの最小限必要なアクセス権限よりも制限された IAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対して AWS KMS コンソールは意図したとおりには機能しません。

AWS KMS コンソールへの読み取り専用アクセスをユーザーに許可するために必要な最小限のアクセス権限については、「AWS KMS コンソールですべての CMK へのユーザー読み取り専用アクセスを許可する」を参照してください。

ユーザーが AWS KMS コンソールを使用して CMK の生成と管理ができるようにするには、次のセクションで説明しているように、AWSKeyManagementServicePowerUser 管理ポリシーをユーザーにアタッチします。

AWS SDK またはコマンドラインツールから AWS KMS API を使用するユーザーに、最小限のコンソールアクセス権限を付与する必要はありません。ただし、これらのユーザーには、API を使用するためのアクセス権限を付与する必要はあります。詳細については、「AWS KMS API アクセス権限のリファレンス」を参照してください。

AWS KMS での AWS 管理 (事前定義) ポリシー

AWS には、多くの一般的ユースケースに対応するために、AWS によって作成されて管理されるスタンドアロンの IAM ポリシーが用意されています。これらは AWS 管理ポリシーと呼ばれており、AWS 管理ポリシーには一般的ユースケースに必要なアクセス権限が用意されているため、必要なアクセス権限を調べる必要はありません。詳細については、『IAM ユーザーガイド』の「AWS 管理ポリシー」を参照してください。

AWS には、AWSKeyManagementServicePowerUser という、AWS KMS 用の AWS 管理ポリシーが用意されています。このポリシーでは、以下のアクセス権限が付与されます。

  • すべての CMK とエイリアスをユーザーが一覧表示できるようにします。

  • 各 CMK に関する情報 (識別子、作成日、更新ステータス、キーポリシーなど) をユーザーが取得できるようにします。

  • 管理または使用可能な CMK をユーザーが作成できるようにします。ユーザーは CMK を作成するとき、CMK のキーポリシーでアクセス権限を設定できます。つまり、ユーザーは CMK を作成できるとともに、その CMK を管理したり使用したりするためのアクセス権限を設定できます。AWSKeyManagementServicePowerUser ポリシーでは、ユーザーは自分で作成した CMK のみを管理したり使用したりできます。

お客様が管理するポリシーの例

このセクションでは、さまざまな AWS KMS アクションのためのアクセス権限を付与する IAM ポリシーの例を示しています。

重要

以下のポリシーのアクセス権限の一部は、CMK のキーポリシーによっても同じアクセス権限が付与されるときにのみ、付与されます。詳細については、「AWS KMS API アクセス権限のリファレンス」を参照してください。

AWS KMS コンソールですべての CMK へのユーザー読み取り専用アクセスを許可する

以下のポリシーでは、ユーザーに AWS KMS コンソールへの読み取り専用アクセスを許可します。つまり、ユーザーはコンソールを使用して CMK を表示できますが、CMK を変更したり新規に作成したりすることはできません。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:GetKeyPolicy", "kms:GetKeyRotationStatus", "iam:ListUsers", "iam:ListRoles" ], "Resource": "*" } }

特定の AWS アカウントでユーザーが CMK により暗号化および復号化できるようにします。

以下のポリシーでは、AWS アカウント 111122223333 で、AWS KMS での CMK によるデータの暗号化と復号化をユーザーが正常にリクエストできるようになります。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*" ] } }

特定の AWS アカウントとリージョンでユーザーが CMK を暗号化および復号化できるようにします。

以下のポリシーでは、米国西部 (オレゴン) リージョンの AWS アカウント 111122223333 で、AWS KMS での CMK によるデータの暗号化と復号化をユーザーが正常にリクエストできるようになります。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] } }

ユーザーが特定の CMK で暗号化および復号化できるようにする

以下のポリシーでは、AWS KMS でポリシーの Resource 要素で指定された 2 つの CMK によるデータの暗号化と復号化をユーザーが正常にリクエストできるようにします。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "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" ] } }

ユーザーが CMK を無効化または削除できないようにする

以下のポリシーでは、CMK の無効化や削除をユーザーができないようにします。これは、別の IAM ポリシーまたはキーポリシーでこれらのアクセス権限を付与されていても同様です。アクセス権限を明示的に拒否するポリシーは、同じアクセス権限を明示的に付与するポリシーを含め、他のすべてのポリシーを上書きします。詳細については、『IAM ユーザーガイド』の「リクエストの許可または拒否を決定する」を参照してください。

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" } }