本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用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 指南 中的VPC端點和VPC端點服務的身分和存取管理。
您可以使用這些全域條件金鑰來控制對 AWS KMS keys (KMS 金鑰)、別名和 操作的存取CreateKey,這些操作不依賴於任何特定資源。
例如,以下範例金鑰政策允許使用者僅在請求使用指定的VPC端點時,才使用KMS金鑰執行一些密碼編譯操作。當使用者向 提出請求時 AWS KMS,請求中的VPC端點 ID 會與政策中的aws:sourceVpce
條件索引鍵值進行比較。如果不相符,則會拒絕請求。
若要使用像這樣的政策,請將預留位置 AWS 帳戶 ID 和VPC端點取代IDs為帳戶的有效值。
{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM policies", "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
條件金鑰,根據VPCVPC端點所在的 限制對KMS金鑰的存取。
下列範例金鑰政策允許僅在金鑰來自 時才管理KMS金鑰的命令vpc-12345678
。此外,它允許僅在金鑰來自 時,才使用KMS金鑰進行密碼編譯操作的命令vpc-2b2b2b2b
。如果應用程式在一個 中執行VPC,但您使用第二個隔離VPC的 管理函數,則可以使用像這樣的政策。
若要使用像這樣的政策,請將預留位置 AWS 帳戶 ID 和VPC端點取代IDs為帳戶的有效值。
{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from
vpc-12345678
", "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": "Allow key usage fromvpc-2b2b2b2b
", "Effect": "Allow", "Principal": {"AWS": "111122223333
"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b
" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333
"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ] }