AWS KMS での IAM ポリシーの使用 - AWS Key Management Service

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

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

以下を使用できます。 IAM ポリシー、および 主要なポリシー助成金、および VPCエンドポイント・ポリシーで、 カスタマーマスターキー (CMKs) AWS KMS.

注記

を使用するために IAM ポリシーを使用して、 CMK、 CMK は、アカウントが IAM 方針。具体的には、キーポリシーには、IAM ポリシーを有効にするポリシーステートメントを含める必要があります。

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

すべて CMKs 重要ポリシーを持っている必要があります。 IAM ポリシーはオプションです。を使用するために IAM ポリシーを使用して、 CMK、 CMK は、アカウントが IAM 方針。具体的には、キーポリシーには、IAM ポリシーを有効にするポリシーステートメントを含める必要があります。

IAM ポリシーは、任意の AWS KMS オペレーションへのアクセスを制御できます。主要なポリシーとは異なり、 IAM ポリシーは複数の CMKs およびは、関連する複数の AWS サービス。しかし IAM ポリシーは、 キーを作成重要なポリシーは特定のポリシーには関係しないため、これらのポリシーは重要なポリシーによって制御できません。 CMK.

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

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

IAM ポリシーの概要

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

  • ユーザーまたはグループにアクセス権限ポリシーをアタッチする – IAM ユーザーまたはユーザーのグループに AWS KMS オペレーションの呼び出しを許可するポリシーをアタッチできます。

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

以下に示しているのは、AWS KMS のアクセス権限を使用する IAM ポリシーの例です。このポリシーでは、 IAM 添付されているIDをすべて一覧表示する CMKs およびエイリアス。

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

すべての IAM ポリシーと同様、このポリシーには Principal 要素がありません。IAM ユーザーまたは IAM ロールに IAM ポリシーをアタッチすると、ユーザーまたは ロールを引き受けたユーザーは、ポリシーに指定されているクセス許可を取得します。

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

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

以下へのアクセスの保護 AWS KMS カスタマーマスターキー (CMKs) は、 AWS リソースです。 AWS KMS CMKs は、 AWS アカウント。時間をかけて、 主要なポリシー、 IAM ポリシー、 助成金、および VPCエンドポイント・ポリシー 管理し、 CMKs.

内 IAM アクセス権を制御するポリシーステートメント CMKs、 最小限の特権の原則. 与える IAM プリンシパルは、 CMKs 使用または管理する必要があります。

主要なポリシーを使用する

可能な場合は常に、1つのポリシーに影響を与える主要なポリシーに権限を提供する CMK、 IAM 多数の企業や組織に適用される CMKs、他の AWS アカウント。これは、次のような機密性の高い権限では特に重要です。 km:PutKeyPolicy および km:スケジュールキー削除 また、データの保護方法を決定する暗号化操作にも使用されます。

CreateKey権限の制限

キーの作成を許可します(km:CreateKey)を、それを必要とする本人のみに提供する。権限を CMK また、主要なポリシーを設定し、自分自身と他の人に、 CMKs 生み出します。この許可を許可する場合は、 ポリシー条件. たとえば、 kms:CustomerMasterKeySpec 対称に許可を制限する条件 CMKs.

具体的に記入してください CMKs の IAM ポリシー

ベストプラクティスとして、 キーARN のそれぞれ CMK 許可が適用される Resource 方針声明の要素です。このプラクティスでは、権限を CMKs そのプリンシパルが要求します。たとえば、 Resource 要素には、プリンシパルが使用する必要のあるCMKのみが表示されます。

"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の指定が現実的でない場合、 Resource 信頼された AWS アカウントと地域(例: arn:aws:kms:region:account:key/*。 または、 CMKs 信頼された AWS アカウント(例: arn:aws:kms:*:account:key/*.

「リソース」を避ける: IAM ポリシー

ワイルドカード文字 (*) は慎重に使用してください。キー ポリシーでは、 Resource 要素は CMK キーポリシーが添付されています。しかし IAM ポリシー、 Resource 要素("Resource": "*") は、すべての に許可を適用します。 CMKs すべてにおいて AWS 本人のアカウントで使用が許可されているアカウント。これには、 他のAWSアカウントのCMK、および CMKs 本人の口座に入金されます。

たとえば、別の AWS 本人は、外部アカウントのCMKの主要ポリシー、および IAM 独自のアカウントで管理できます。任意のアカウントが AWS アカウント km:復号 許可を CMKs. その場合は、 IAM 役割を与えるアカウント内のポリシー kms:Decrypt すべてのCMKに対する許可("Resource": "*")は、 IAM 要件の一部。その結果、その役割を仮定できるプリンシパルは、 CMK 信頼できないアカウントで。それらの操作のエントリは、両方のアカウントのCloudTrailログに表示されます。

特に、 "Resource": "*" 次の API 操作を許可するポリシーステートメント。これらの操作は、 CMKs 他の AWS アカウント。

「リソース」を使用するタイミング:「*」

で IAM ポリシーでは、 Resource エレメントは、それを必要とする許可に対してのみです。次の権限のみが必要です "Resource": "*" 要素。

注記

エイリアス操作の権限(km:エイリアスの作成km:アップデートエイリアスkm:DeleteAlias[km:DeleteAlias]) をエイリアスおよび CMK. 以下を使用できます。 "Resource": "*" の IAM エイリアスとCMKを表すポリシー、またはエイリアスと CMKs の Resource 要素。例については、「エイリアスへのアクセスの制御」を参照してください。

 

このトピックの例は、設計に関する詳細な情報とガイダンスを提供します。 IAM CMKのポリシー。一般用 AWS KMS ベストプラクティスのガイダンスについては、 AWS Key Management Service のベストプラクティスホワイトペーパー.

指定 CMKs () IAM ポリシーステートメント

_を使用できます。 IAM プリンシパルによる使用または管理を許可するポリシー CMKs. CMKは Resource 方針声明の要素です。

保険証券を作成する際は、 ベストプラクティス すべてのCMKへのアクセスを本人に許可するのではなく、本人が使用する必要のあるCMKに制限すること。

  • 特定の CMKs の IAM ポリシーステートメント、 キーARN のそれぞれ CMK. を使用することはできません キーIDエイリアス名、または エイリアスARN 特定するには CMK の IAM 方針声明。

    たとえば、 と指定します。"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"

  • 複数を指定するには CMKs アカウントと地域では、鍵ARNの地域またはリソースID位置にワイルドカード文字(*)を使用します。

    たとえば、すべての CMKs の 米国西部 (オレゴン) アカウントの地域。"Resource": "arn:aws:kms:us-west-2:111122223333:key/*"。すべてを指定するには CMKs アカウントのすべての地域で、"Resource": "arn:aws:kms:*:111122223333:key/*"。

  • すべてを表すには CMKs、ワイルドカード文字のみを使用します("*")。この形式は、特定の CMK、すなわち、 キーを作成ランダムを生成リストエイリアス、および リストキー.

たとえば、次の IAM ポリシーステートメントでは、プリンシパルは 説明キーデータキーを生成復号化 操作は、 CMKs にリストされている Resource 方針声明の要素です。指定 CMKs ベスト プラクティスであるキー ARN によって、権限が指定された CMKs.

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

許可をすべての CMKs 特定の信頼される AWS 科目では、ワイルドカード文字 (*) を [地域] およびキー ID の位置で使用できます。たとえば、次のポリシーステートメントでは、プリンシパルは、すべての CMKs 2つの信頼できるサンプルアカウントで。

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

ワイルドカード文字("*")のみ Resource 要素。アカウントが使用許可を持っているすべてのCMKにアクセスできるため、主に特定のCMKを使用しないオペレーションに推奨されます。 CMK および 用 Deny ステートメント。また、機密性の低い読み取り専用操作のみを許可するポリシーステートメントでも使用できます。が AWS KMS 業務には特定の CMK、 CMK 値( リソース 列、テーブルの AWS KMS API権限: アクションとリソース参照.

たとえば、次のポリシーステートメントでは、 Deny 本人がCMKで指定操作を使用することを禁止するという効果。これは、 Resource すべてのCMKを表す要素です。

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

次のポリシー文では、ワイルドカード文字のみを使用してすべてのCMKを表します。ただし、特定のCMKには適用されない、より機密性の低い読み取り専用操作と操作のみが可能になります。

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

AWS KMS コンソールの使用に必要なアクセス許可

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

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

ユーザーが AWS KMS 作成と管理のためのコンソール CMKs、 AWSKeyManagementServicePowerUser (AWSKeyManagementServicePowerUser) 管理されたポリシーをユーザーに配信します。

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

AWS パワーユーザーのマネージドポリシー

_を使用できます。 AWS 管理ポリシー 与えるために IAM 本人がパワーユーザーの権限をアカウントで付与します。電力ユーザーは CMKsを使用して管理します。 CMKs すべてのCMKと IAM アイデンティティ。

注記

このポリシーはパワーユーザーに km:説明キー 許可を CMK 業務を許可する重要な方針を掲げる。これには、 CMKs 信頼できない AWS アカウント。詳細については、「のベストプラクティス IAM ポリシー」を参照してください。

は、 AWSKeyManagementServicePowerUser (AWSKeyManagementServicePowerUser) 管理ポリシーには、以下の権限が含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:CreateKey", "kms:DeleteAlias", "kms:Describe*", "kms:GenerateRandom", "kms:Get*", "kms:List*", "kms:TagResource", "kms:UntagResource", "iam:ListGroups", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }
  • ユーザーが作成できるようにする CMKs. このプロセスには、キーポリシーの設定が含まれるため、パワーユーザーは自身と他者に対して、自身が作成するCMKを使用および管理するための許可を与えることができます。

  • ユーザーが作成および削除できるようにします エイリアス および タグ すべて CMKs.

  • ユーザーは、すべての CMKs鍵ARN、暗号構成、鍵ポリシー、エイリアス、タグ、 回転ステータス.

  • ユーザーは IAM ユーザー、グループ、ロール。

  • このポリシーは、これらのユーザーに使用または管理する権限を与えません。 CMKs すべてのCMKでエイリアスとタグを管理できますが、作成していません。

_を持つユーザー AWSKeyManagementServicePowerUser マネージドポリシーは、キーポリシー、その他の IAM ポリシー、および助成金。

カスタマー管理ポリシーの例

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

重要

次のポリシーの一部の権限は、 CMKのキーポリシーも許可しています。詳細については、「AWS KMS API アクセス許可リファレンス」を参照してください。

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

ユーザーに表示を許可 CMKs の AWS KMS コンソール

次の IAM ポリシーでは、AWS KMS コンソールへの読み取り専用アクセスをユーザーに許可します。これらの権限を持つユーザーは、 CMKs 彼らの AWS アカウントの作成や変更はできません。 CMKs.

表示するには CMKs 上の AWS 管理キー および 顧客管理キー ページ、プリンシパルには km:ListKeys および kms:ListAliass 許可。残りの権限、特に km:説明キーは、オプションの CMK テーブル列とデータを CMK 詳細ページで表示するには必要です。は、 iam:ListUsers および iam:リスト役割 権限は、キーポリシーをエラーなくデフォルトビューで表示するには必要です。データを表示するには、 カスタムキーストア ページと詳細 CMKs カスタムキーストアでは、プリンシパルは km:CustomKeyStoresの説明 許可を得ます。

ユーザーのコンソールアクセスを特定の CMKsコンソールに各エラーが表示されます。 CMK 表示されます。

本方針には、2つの方針声明が含まれます。は、 Resource 最初のポリシー ステートメントのエレメントは、すべての CMKs 例のすべての地域 AWS アカウント。コンソール・ビューアは、 AWS KMS コンソール表示のみ CMKs 本人の口座に入金されます。これは、閲覧する権限がある場合にも当てはまります。 CMKs 他の AWS アカウント。残りの AWS KMS および IAM 権限には "Resource": "*" 特定要素に当てはまらないため CMK.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow read-only permission to all CMKs in the account", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "Allow read-only access to operations with no CMK resource", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }

ユーザーに作成を許可 CMKs

以下 IAM ポリシーにより、ユーザーは CMKs. 値 Resource 要素は * なぜなら、 CreateKey 操作では特定の AWS KMS リソース(CMKs またはエイリアス)。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" } }

キーを作成するプリンシパルには、関連する権限が必要な場合があります。

  • km:PutKeyPolicy — 以下を有するプリンシパル kms:CreateKey 権限は、 CMK. ただし、 CreateKey 呼び出し側は km:PutKeyPolicy CMKのキーポリシーを変更できるようにするか、 BypassPolicyLockoutSafetyCheck のパラメータ CreateKey、これは推奨されません。は、 CreateKey 呼び出し側は kms:PutKeyPolicy 許可を CMK から IAM または、この許可を CMK 構築しています

  • km:タグリソース — タグを CMK の期間中 CreateKey 操作、 CreateKey 呼び出し側は km:タグリソース 許可を IAM ポリシー。この許可を新しいCMKのキーポリシーに含めるだけでは不十分です。ただし、 CreateKey 呼び出し側に含まれるもの kms:TagResource 最初のキーポリシーで、 CMK が作成されました。

  • km:エイリアスの作成 — 権限を CMK の AWS KMS コンソールには km:エイリアスの作成 CMK およびエイリアスに対する許可。(コンソールは2つの呼び出しを行います。1つは CreateKey そして1つは CreateAlias)。エイリアス権限は、 IAM ポリシー。以下を提供できます。 CMK 許可を得るか、 IAM ポリシー。詳細については、「エイリアスへのアクセスの制御」を参照してください。

さらに、 kms:CreateKey、以下 IAM ポリシーは kms:TagResource 許可を CMKs の AWS アカウントと kms:CreateAlias アカウントのすべてのエイリアスに対する権限。また、 IAM ポリシー。

これは IAM 保険には kms:PutKeyPolicy 権限、またはキーポリシーに設定できるその他の権限。これは ベストプラクティス これらの権限をキーポリシーに設定し、 CMK.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAM permissions for particular CMKs", "Effect": "Allow", "Action": { "kms:TagResource" }, "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAM permissions for particular aliases", "Effect": "Allow", "Action": { "kms:CreateAlias" }, "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAM permission that must be set for all CMKs", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

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

以下 IAM ポリシーにより、ユーザーは、 CMK () AWS アカウント 111122223333.

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

ユーザーが暗号化と復号化を CMK 具体的な AWS アカウントと地域

以下 IAM ポリシーにより、ユーザーは、 CMK () AWS アカウント 111122223333 の 米国西部 (オレゴン) 地域。

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

ユーザーに特定の暗号化と復号化を許可 CMKs

以下 IAM ポリシーにより、ユーザーは2つの CMKs 指定される Resource 要素。指定する場合 CMK の IAM ポリシーステートメントは、 キーARN の 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" ] } }

ユーザーが CMKs

以下 IAM ポリシーにより、ユーザーは CMKs、他の IAM ポリシーまたはキーポリシーでは、これらの権限が許可されます。アクセス権限を明示的に拒否するポリシーは、同じアクセス権限を明示的に付与するポリシーを含め、他のすべてのポリシーを上書きします。詳細については、「キーアクセスのトラブルシューティング」を参照してください。

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