エイリアスを使用したKMSキーへのアクセスの制御 - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

エイリアスを使用したKMSキーへのアクセスの制御

KMS キーに関連付けられたエイリアスに基づいて、KMSキーへのアクセスを制御できます。そのためには、kms:RequestAlias および kms:ResourceAliases 条件キーを使用します。この機能は の一部です。 AWS KMS 属性ベースのアクセスコントロール () のサポート。ABAC

kms:RequestAlias 条件キーは、リクエストのエイリアスに基づいてKMSキーへのアクセスを許可または拒否します。kms:ResourceAliases 条件キーは、KMSキーに関連付けられたエイリアスに基づいて、KMSキーへのアクセスを許可または拒否します。

これらの機能では、ポリシーステートメントの resource要素でエイリアスを使用してKMSキーを識別することはできません。エイリアスが resource要素の値である場合、ポリシーはエイリアスリソースに適用され、関連付けられている可能性のあるKMSキーには適用されません。

注記

タグとエイリアスの変更がKMSキー認証に影響するまでに最大 5 分かかる場合があります。最近の変更は、承認に影響する前に API オペレーションに表示される場合があります。

エイリアスを使用してKMSキーへのアクセスを制御する場合は、次の点を考慮してください。

  • エイリアスを使用して、最小特権アクセスのベストプラクティスを強化します。IAM プリンシパルに、使用または管理する必要があるKMSキーのみに必要なアクセス許可のみを付与します。例えば、エイリアスを使用して、プロジェクトに使用されるKMSキーを識別します。次に、プロジェクトエイリアスでKMSキーのみを使用するアクセス許可をプロジェクトチームに付与します。

  • プリンシパルにエイリアスを追加、編集、削除できる kms:CreateAliaskms:UpdateAliaskms:DeleteAlias 許可を付与する際は注意してください。エイリアスを使用してKMSキーへのアクセスを制御する場合、エイリアスを変更すると、プリンシパルに、使用権限がなかったKMSキーを使用する権限が付与されます。また、他のプリンシパルがジョブを実行するために必要なKMSキーへのアクセスを拒否することもできます。

  • のプリンシパルを確認する AWS アカウント エイリアスを管理し、必要に応じてアクセス許可を調整するアクセス許可を現在持っている 。キーポリシーを変更したり、許可を作成したりするアクセス許可を持たないキー管理者は、エイリアスを管理するアクセス許可を持っている場合にKMS、キーへのアクセスを制御できます。

    例えば、コンソールのキー管理者のデフォルトキーポリシーには、kms:CreateAliaskms:DeleteAliaskms:UpdateAlias アクセス許可があります。IAM ポリシーは、 内のすべてのKMSキーにエイリアスアクセス許可を付与する場合があります。 AWS アカウント。 例えば、 AWSKeyManagementServicePowerUser管理ポリシーでは、プリンシパルがすべてのKMSキーのエイリアスを作成、削除、一覧表示できますが、更新することはできません。

  • エイリアスに依存するポリシーを設定する前に、 のKMSキーのエイリアスを確認してください。 AWS アカウント。 ポリシーが、含めるエイリアスにのみ適用されます。CloudTrail ログCloudWatch アラームを使用して、KMSキーへのアクセスに影響する可能性のあるエイリアスの変更を警告します。また、ListAliasesレスポンスには、各エイリアスの作成日と最終更新日が含まれます。

  • エイリアスポリシー条件はパターンマッチングを使用します。エイリアスの特定のインスタンスには関連付けられません。エイリアスベースの条件キーを使用するポリシーは、パターンに一致するすべての新規および既存のエイリアスに影響します。ポリシー条件に一致するエイリアスを削除して再作成すると、古いエイリアスの場合と同様に、新しいエイリアスに条件が適用されます。

kms:RequestAlias 条件キーは、オペレーションリクエストで明示的に指定されたエイリアスに依存します。kms:ResourceAliases 条件キーは、リクエストに表示されない場合でも、KMSキーに関連付けられているエイリアスによって異なります。

km:RequestAlias

リクエスト内のKMSキーを識別するエイリアスに基づいて、KMSキーへのアクセスを許可または拒否します。kms:RequestAlias 条件キーは、キーポリシーまたは IAMポリシーで使用できます。これは、エイリアスを使用してリクエスト内のKMSキーを識別するオペレーション、つまり暗号化オペレーション DescribeKey、および に適用されますGetPublicKeyCreateAlias や などのエイリアスオペレーションには無効ですDeleteAlias

条件キーで、エイリアス名またはエイリアス名パターンを指定します。エイリアス ARNを指定することはできません。

例えば、次のキーポリシーステートメントでは、プリンシパルがKMSキーに対して指定されたオペレーションを使用することを許可します。アクセス許可は、リクエストが を含むエイリアスを使用してKMSキーalphaを識別する場合にのみ有効です。

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/alpha-developer" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:RequestAlias": "alias/*alpha*" } } }

次の認可済みプリンシパルからのサンプルリクエストは条件を満たします。ただし、キー ID キー ARN、または別のエイリアスを使用したリクエストは、これらの値が同じKMSキーを識別した場合でも、条件を満たしません。

$ aws kms describe-key --key-id "arn:aws:kms:us-west-2:111122223333:alias/project-alpha"

km:ResourceAliases

KMS エイリアスがリクエストで使用されていない場合でも、キーに関連付けられたエイリアスに基づいてKMSキーへのアクセスを許可または拒否します。kms:ResourceAliases 条件キーを使用すると、 などのエイリアスまたはエイリアスパターンを指定できるためalias/test*、 IAMポリシーで使用して、同じリージョン内の複数のKMSキーへのアクセスを制御できます。これは で有効です。 AWS KMS KMS キーを使用する オペレーション。

例えば、次のIAMポリシーでは、プリンシパルが 2 つの のキーの自動KMSキーローテーションを管理できます。 AWS アカウント。 ただし、 アクセス許可は、 で始まるエイリアスに関連付けられたKMSキーにのみ適用されますrestricted

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:DisableKeyRotation", "kms:GetKeyRotationStatus" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringLike": { "kms:ResourceAliases": "alias/restricted*" } } } ] }

kms:ResourceAliases 条件はリクエストではなく、リソースの条件です。したがって、エイリアスを指定しないリクエストは、引き続き条件を満たすことができます。

次のリクエスト例は一致するエイリアスを指定し、条件を満たしています。

$ aws kms enable-key-rotation --key-id "alias/restricted-project"

ただし、次のリクエスト例では、指定されたKMSキーに で始まるエイリアスがあり、そのエイリアスがリクエストで使用されていない場合でもrestricted、 条件も満たしています。

$ aws kms enable-key-rotation --key-id "1234abcd-12ab-34cd-56ef-1234567890ab"