VPC エンドポイントを使用して AWS KMS リソースへのアクセスを制御する - AWS Key Management Service

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

VPC エンドポイントを使用して AWS KMS リソースへのアクセスを制御する

リクエストが VPC から送信されたとき、または VPC エンドポイントを使用する場合に、 AWS KMS リソースとオペレーションへのアクセスを制御できます。このためには、キーポリシーまたは IAM ポリシーで、次のいずれかのグローバル条件キーを使用します。

  • aws:sourceVpce 条件キーを使用して、VPC エンドポイントに基づいてアクセスを許可または制限します。

  • aws:sourceVpc 条件キーを使用して、プライベートエンドポイントをホストする VPC に基づいてアクセスを許可または制限します。

注記

VPC エンドポイントに基づいてキーポリシーと IAM ポリシーを作成する場合は、注意が必要です。ポリシーステートメントで特定の VPC または VPC エンドポイントからのリクエストが要求されている場合、ユーザーに代わって AWS KMS リソースを使用する統合 AWS サービスからのリクエストは失敗する可能性があります。ヘルプについては、「AWS KMS アクセス許可を持つポリシーでの VPC エンドポイント条件の使用」を参照してください。

また、リクエストが Amazon VPC エンドポイントから送信される場合、aws:sourceIP 条件キーは無効です。リクエストを VPC エンドポイントに制限するには、aws:sourceVpce または aws:sourceVpc 条件キーを使用します。詳細については、AWS PrivateLink ガイドの「Identity and access management for VPC endpoints and VPC endpoint services」を参照してください。

これらのグローバル条件キーを使用して、 AWS KMS keys (KMS キー)、エイリアス、および特定のリソースに依存しない CreateKey などのオペレーションへのアクセスを制御できます。

例えば、次のサンプルキーポリシーでは、リクエストが指定された VPC エンドポイントを使用する場合にのみ、KMS キーを使用してユーザーが一部の暗号化オペレーションを実行できます。ユーザーがリクエストを行うと AWS KMS、リクエストの VPC エンドポイント ID がポリシーaws:sourceVpceの条件キー値と比較されます。一致しない場合、要求は拒否されます。

このようなポリシーを使用するには、プレースホルダー AWS アカウント ID と VPC エンドポイント IDsをアカウントの有効な値に置き換えます。

JSON
{ "Id": "example-key-1", "Version":"2012-10-17", "Statement": [ { "Sid": "EnableIAMpolicies", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } } ] }

また、aws:sourceVpc 条件キーを使用して、VPC エンドポイントが存在する VPC に基づいて、KMS キーへのアクセスを制限することもできます。

次のサンプルキーポリシーでは、コマンドが vpc-12345678 から送信される場合にのみ、KMS キーを管理するコマンドが許可されます。また、コマンドが vpc-2b2b2b2b から送信される場合にのみ、暗号化オペレーションで KMS キーを使用するコマンドが許可されます。ある VPC でアプリケーションが実行されていれば、このようなポリシーを使用できますが、管理機能のために 2 番目の切り離された VPC を使用します。

このようなポリシーを使用するには、プレースホルダー AWS アカウント ID と VPC エンドポイント IDsをアカウントの有効な値に置き換えます。

JSON
{ "Id": "example-key-2", "Version":"2012-10-17", "Statement": [ { "Sid": "AllowAdministrativeActionsFromVPC", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "kms:Create*", "kms:Enable*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Delete*", "kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "AllowKeyUsageFromVPC2b2b2b2b", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "AllowReadActionsEverywhere", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "kms:Describe*", "kms:List*", "kms:Get*" ], "Resource": "*" } ] }