AWS グローバル条件キー - AWS Key Management Service

AWS グローバル条件キー

アクセスコントロールのために IAM を使用する、すべての AWS のサービスのポリシー条件キーのセットであるグローバル条件キーが、AWS により定義されています。AWS KMS がグローバル条件キーのすべてをサポートします。AWS KMS キーポリシーと IAM ポリシーで、それらのキーを使用できます。

例えば、aws:PrincipalArn グローバル条件キーを使用すると、リクエスト内のプリンシパルが条件キーバリューの Amazon リソースネーム (ARN) で表されている場合にのみ、AWS KMS key (KMS キー) へのアクセスを許可できます。AWS KMS で属性ベースのアクセス制御 (ABAC) をサポートするには、IAM ポリシーの aws:ResourceTag/tag-key グローバル条件キーを使用して、特定のタグを持つ KMS キーへのアクセスを許可できます。

プリンシパルが AWS サービスプリンシパルであるポリシーで AWS のサービスが「混乱した代理」として使用されるのを防ぐために、aws:SourceArn または aws:SourceAccount グローバル条件キーを使用できます。詳細については、「aws:SourceArn または aws:SourceAccount 条件キーの使用」を参照してください。

AWS グローバル条件キー (使用可能なリクエストのタイプを含む) の詳細については、IAM ユーザーガイドAWS グローバル条件コンテキストキーを参照してください。IAM ポリシーでグローバル条件キーを使用する例については、IAM ユーザーガイドリクエストへのアクセスの制御およびタグキーの制御を参照してください。

以下のトピックでは、IP アドレスと VPC エンドポイントに基づく条件キーを使用するための特別なガイダンスを提供します。

AWS KMS アクセス許可を持つポリシーでの IP アドレス条件の使用

AWS KMS を使用して、統合された AWS サービスでデータを保護できます。ただし、同じポリシーステートメントで、 へのアクセスを許可または拒否する IP アドレス条件の演算子aws:SourceIpまたは AWS KMS 条件キーを指定するときは注意が必要です。例えば、AWS: 送信元 IP に基づいて AWS へのアクセスを拒否するのポリシーでは、AWS アクションは、指定された IP 範囲からのリクエストに制限されます。

次のシナリオを考えてみます。

  1. AWS: 送信元 IP に基づいて AWS へのアクセスを拒否する」に示されているようなポリシーを、IAM アイデンティティにアタッチします。aws:SourceIp 条件キーの値は、ユーザーの会社の IP アドレス範囲に設定します。この IAM アイデンティティには、Amazon EBS、Amazon EC2、AWS KMS の使用を許可する他のポリシーがアタッチされています。

  2. アイデンティティは、暗号化された EBS ボリュームを EC2 インスタンスにアタッチしようとします。このアクションは、関連するすべてのサービスを使用するためのアクセス権限がユーザーに付与されているにもかかわらず、承認エラーが発生して失敗します。

ボリュームの暗号化されたデータキーを復号する AWS KMS へのリクエストが、Amazon EC2 インフラストラクチャに関連付けられた IP アドレスから送信されるため、ステップ 2 は失敗します。成功させるには、リクエストは、元のユーザーの IP アドレスからリクエストが送られてこなければなりません。ステップ 1 のポリシーでは、指定されたもの以外の IP アドレスからのすべてのリクエストが明示的に拒否されるため、Amazon EC2 は EBS ボリュームの暗号化されたデータキーを復号化する権限を拒否されます。

また、リクエストが Amazon VPC エンドポイントから送信される場合、aws:SourceIP 条件キーは無効です。リクエストを AWS KMS VPC エンドポイントなどの VPC エンドポイントに制限するには、aws:SourceVpce または aws:SourceVpc 条件キーを使用します。詳細については、Amazon VPC ユーザーガイドの「VPC エンドポイント - エンドポイントの使用の管理」を参照してください。

AWS KMS アクセス許可を持つポリシーでの VPC エンドポイント条件の使用

AWS KMS は、AWS PrivateLink を搭載した Amazon Virtual Private Cloud (Amazon VPC) エンドポイントをサポートします。キーポリシーおよび IAM ポリシーで次のグローバル条件キーを使用して、リクエストが VPC から送信されるとき、または VPC エンドポイントを使用するときに AWS KMS リソースへのアクセスを制御できます。詳細については、「VPC エンドポイントを使用して AWS KMS リソースへのアクセスを制御する」を参照してください。

  • aws:SourceVpc は、指定した VPC からのリクエストにアクセスを制限します。

  • aws:SourceVpce は、指定した VPC エンドポイントからのリクエストにアクセスを制限します。

これらの条件キーを使用して KMS キーへのアクセスを制御すると、ユーザーの代わりに AWS KMS を使用する AWS サービスへのアクセスを誤って拒否する可能性があります

IP アドレス条件キーの例のような状況にならないように注意してください。KMS キーのリクエストを VPC または VPC エンドポイントに制限すると、Amazon S3 や Amazon EBS などの統合サービスから AWS KMS への呼び出しに失敗することがあります。ソースリクエストの最初の送信元が VPC 内または VPC エンドポイントであっても、これは発生することがあります。

IAM および AWS KMS キーポリシーでの IPv6 アドレスの使用

IPv6 経由で AWS KMS にアクセスを試みる前に、IP アドレス制限を含むすべてのキーポリシーと IAM ポリシーが更新され、IPv6 アドレス範囲が含まれていることを確認してください。IPv6 アドレスを処理するように更新されていない IP ベースのポリシーでは、IPv6 の使用を開始する際、クライアントが誤ってアクセスを取得する場合やアクセスを失う場合があります。KMS アクセスコントロールの一般的なガイダンスについては、「KMS キーのアクセスとアクセス許可」を参照してください。KMS とデュアルスタックのサポートについては、「デュアルスタックエンドポイントのサポート」を参照してください。

重要

これらのステートメントでは、アクションは許可されません。これらのステートメントは、特定のアクションを許可する他のステートメントと組み合わせて使用します。

次のステートメントは、IPv4 アドレスの 192.0.2.* 範囲から送信されるリクエストに対するすべての KMS アクセス許可へのアクセスを明示的に拒否します。この範囲外の IP アドレスは、KMS アクセス許可が明示的に拒否されません。すべての IPv6 アドレスが拒否範囲外であるため、このステートメントは IPv6 アドレスに対する KMS アクセス許可を明示的に拒否しません。

{ "Sid": "DenyKMSPermissions", "Effect": "Deny", "Action": [ "kms:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24" ] } } }

次の例に示すように、Condition 要素を変更して、IPv4 (192.0.2.0/24) と IPv6 (2001:db8:1234::/32) のアドレス範囲の両方を拒否できます。

{ "Sid": "DenyKMSPermissions", "Effect": "Deny", "Action": [ "kms:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "2001:db8:1234::/32" ] } } }