通过端点连接到 AWS 支付密码学 VPC - AWS 支付密码学

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过端点连接到 AWS 支付密码学 VPC

您可以通过虚拟私有云中的私有接口端点直接连接到 AWS 支付密码学 (VPC)。当您使用接口VPC端点时,您的VPC和 AWS 支付密码学之间的通信完全在 AWS 网络内进行。

AWS Payment Cryptography 支持由AWS PrivateLink提供支持的亚马逊虚拟私有云 (AmazonVPC) 终端节点。每个VPC端点都由一个或多个弹性网络接口 (ENIs) 表示,您的VPC子网中有私有 IP 地址。

接口VPC端点无需互联网网关、NAT设备、VPN连接或 AWS Direct Connect 连接即可将您VPC直接连接到 AWS 支付密码学。您的中的实例VPC不需要公有 IP 地址即可与 AWS 支付加密进行通信。

区域

AWS Payment Cryptography 支持VPC所有 AWS 区域 支持AWS 支付加密的VPC端点和端点策略。

AWS 支付加密VPC终端节点的注意事项

注意

尽管VPC终端节点允许您在最少一个可用区 (AZ) 内连接到服务,但出于高可用性和冗余目的,我们建议您连接到三个可用区。

在为 AWS 支付加密设置接口VPC终端节点之前,请查看AWS PrivateLink 指南中的接口终端节点属性和限制主题。

AWS VPC终端节点的支付加密支持包括以下内容。

  • 您可以使用您的VPC终端节点从调用所有AWS 支付密码学控制面板操作AWS 支付密码学数据平面操作。VPC

  • 您可以创建连接 AWS 支付加密区域VPC终端节点的接口终端节点。

  • AWS 支付密码学由控制平面和数据平面组成。您可以选择设置一个或两个子服务,但每个子服务都是单独配置的。

  • 您可以使用 AWS CloudTrail 日志通过VPC端点审核您对 AWS 支付加密密钥的使用情况。有关详细信息,请参阅记录您的VPC终端节点

为 AWS 支付密码学创建VPC终端节点

您可以使用亚马逊VPC控制台或亚马逊为 AWS 支付加密创建VPC终端节点。VPC API有关更多信息,请参阅《AWS PrivateLink 指南》中的创建接口端点

  • 要为 AWS 支付加密创建VPC终端节点,请使用以下服务名称:

    com.amazonaws.region.payment-cryptography.controlplane
    com.amazonaws.region.payment-cryptography.dataplane

    例如,在美国西部(俄勒冈)区域 (us-west-2) 中,服务名称将是:

    com.amazonaws.us-west-2.payment-cryptography.controlplane
    com.amazonaws.us-west-2.payment-cryptography.dataplane

为了便于使用VPC终端节点,您可以为终VPC端节点启用私有DNS名称。如果您选择 “启用DNS名称” 选项,则标准的 AWS 支付加密DNS主机名将解析到您的VPC终端节点。例如,https://controlplane.payment-cryptography.us-west-2.amazonaws.com将解析为连接到服务名称的VPC端点com.amazonaws.us-west-2.payment-cryptography.controlplane

使用此选项可以更轻松地使用VPC终端节点。默认情况下, AWS SDKs和 AWS CLI 使用标准的 P AWS ayment Cryptograp DNS hy 主机名,因此您无需URL在应用程序和命令中指定VPC终端节点。

有关更多信息,请参阅 AWS PrivateLink 指南中的通过接口端点访问服务

连接到 AWS 支付密码学端点 VPC

您可以使用 AWS SDK、 AWS CLI 或 AWS Tools for PowerShell,通过VPC终端节点连接到 “ AWS 支付加密”。要指定VPC端点,请使用其DNS名称。

例如,此 list-keys 命令使用endpoint-url参数来指定端点。VPC要使用这样的命令,请将示例VPC端点 ID 替换为账户中的一个。

$ aws payment-cryptography list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

如果您在创建VPC终端节点时启用了私有主机名,则无需在CLI命令或应用程序配置URL中指定VPC终端节点。标准 AWS 支付密码学DNS主机名解析到您的VPC终端节点。默认情况下, AWS CLI 和SDKs使用此主机名,因此您无需更改脚本和应用程序中的任何内容即可开始使用该VPC终端节点连接到 AWS 支付加密区域终端节点。

要使用私有主机名,您的enableDnsHostnamesenableDnsSupport属性VPC必须设置为。true要设置这些属性,请使用ModifyVpcAttribute操作。有关详情,请参阅《Amazon VPC 用户指南》VPC中的查看和更新您的DNS属性

控制对VPC终端节点的访问

要控制对 AWS 支付加密VPC终端节点的访问权限,请将VPC终端节点策略附加到您的终端VPC节点。终端节点策略决定委托人是否可以使用VPC终端节点通过特定的 AWS 支付加密资源调用 AWS 支付密码学操作。

您可以在创建VPC终端节点时创建终端节点策略,也可以随时更改VPC终端节点策略。使用VPC管理控制台或CreateVpcEndpointModifyVpcEndpoint操作。您也可以使用 AWS CloudFormation 模板创建和更改VPC终端节点策略。有关使用VPC管理控制台的帮助,请参阅AWS PrivateLink 指南中的创建接口终端节点修改接口终端节点

关于VPC终端节点策略

要使使用VPC终端节点的 AWS 支付加密请求成功,委托人需要来自两个来源的权限:

  • 基于身份的策略必须授予委托人对资源调用操作的权限(AWS 付款加密密钥或别名)。

  • VPC终端节点策略必须授予委托人使用终端节点发出请求的权限。

例如,密钥策略可能允许委托人对特定的 AWS 支付加密密钥调用 Decrypt。但是,VPC终端节点策略可能不允许该委托人使用终端节点调Decrypt用该 AWS 支付加密密钥。

或者,VPC终端节点策略可能允许委托人使用终端节点调用StopKeyUsage某些 AWS 支付加密密钥。但是,如果委托人没有IAM策略中的这些权限,则请求将失败。

默认VPC终端节点策略

每个VPC端点都有VPC终端节点策略,但您无需指定策略。如果未指定策略,则默认的终端节点策略允许所有委托人对终端节点上的所有资源执行所有操作。

但是,对于 AWS 支付密码学资源,委托人还必须有权从IAM策略中调用操作。因此,在实践中,默认策略表示,如果委托人有权对资源调用操作,他们也可以通过使用终端节点调用该操作。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Principal": "*", "Resource": "*" } ] }

要允许委托人仅将VPC终端节点用于其允许的部分操作,请创建或更新VPC终端节点策略

创建VPC终端节点策略

VPC终端节点策略决定委托人是否有权使用VPC终端节点对资源执行操作。对于 AWS 支付密码学资源,委托人还必须拥有根据IAM保单执行操作的权限。

每个VPC端点策略声明都需要以下元素:

  • 可执行操作的主体

  • 可执行的操作

  • 可对其执行操作的资源

策略声明未指定VPC终端节点。相反,它适用于该策略所关联的任何VPC终端节点。有关更多信息,请参阅 Amazon VPC 用户指南中的使用VPC终端节点控制对服务的访问

以下是 AWS 支付加密VPC终端节点策略的示例。当连接到VPC终端节点时,此策略ExampleUser允许使用该VPC终端节点对指定的 AWS 支付加密密钥调用指定操作。在使用此类政策之前,请将示例委托人和密钥标识符替换为账户中的有效值。

{ "Statement":[ { "Sid": "AllowDecryptAndView", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Effect":"Allow", "Action": [ "payment-cryptography:Decrypt", "payment-cryptography:GetKey", "payment-cryptography:ListAliases", "payment-cryptography:ListKeys", "payment-cryptography:GetAlias" ], "Resource": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h" } ] }

AWS CloudTrail 记录使用该VPC终端节点的所有操作。但是,您的 CloudTrail 日志不包括其他账户中的委托人请求的操作或其他账户中 AWS 支付密码密钥的操作。

因此,您可能需要创建VPC终端节点策略,以防止外部账户中的委托人使用该VPC终端节点对本地账户中的任何密钥调用任何 AWS 支付密码学操作。

以下示例使用 a ws: g PrincipalAccount lobal 条件密钥拒绝所有委托人访问所有 AWS 支付密码密钥的所有操作,除非委托人位于本地账户中。使用类似于此策略的策略之前,请使用有效值替换示例账户 ID。

{ "Statement": [ { "Sid": "AccessForASpecificAccount", "Principal": {"AWS": "*"}, "Action": "payment-cryptography:*", "Effect": "Deny", "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*", "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

查看VPC终端节点策略

要查看VPC终端节点的终端节点策略,请使用VPC管理控制台DescribeVpcEndpoints操作。

以下 AWS CLI 命令获取具有指定终端节点 ID 的终VPC端节点的策略。

在使用此命令之前,请将示例终端节点 ID 替换为您账户中的有效终端节点 ID。

$ aws ec2 describe-vpc-endpoints \ --query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]' --output text

在策略声明中使用VPC终端节点

当请求来自VPC或使用VPC终端节点时,您可以控制对 AWS 支付加密资源和操作的访问权限。为此,请使用一种IAM策略

  • 使用aws:sourceVpce条件密钥根据VPC端点授予或限制访问权限。

  • 使用aws:sourceVpc条件密钥根据托管私有终端节点的VPC权限来授予或限制访问权限。

注意

当请求来自 Amazon VPC 终端节点时,aws:sourceIP条件密钥无效。要限制对VPC终端节点的请求,请使用aws:sourceVpceaws:sourceVpc条件键。有关更多信息,请参阅AWS PrivateLink 指南中的VPC终端节点和终端VPC节点服务的身份和访问管理

您可以使用这些全局条件密钥来控制对 P AWS ayment Cryptography 密钥、别名以及不依赖于任何特定资源的此类CreateKey操作的访问权限。

例如,以下示例密钥策略允许用户仅在请求使用指定的VPC端点时使用 AWS 支付密码学密钥执行特定的加密操作,从而阻止来自互联网和连接的访问(如果已设置)。当用户向 P AWS ayment Cryptography 发出请求时,会将请求中的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": ["payment-cryptography:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "payment-cryptography:Encrypt", "payment-cryptography:Decrypt" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } } ] }

您还可以使用aws:sourceVpc条件密钥根据VPC终端节点所在的位置来限制对您的 AWS 支付加密密钥VPC的访问。

以下示例密钥策略允许命令仅在 AWS 付款加密密钥来自vpc-12345678时才对其进行管理。此外,它仅允许使用 AWS 支付密码学密钥进行加密操作的命令。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": [ "payment-cryptography:Create*","payment-cryptography:Encrypt*","payment-cryptography:ImportKey*","payment-cryptography:GetParametersForImport*", "payment-cryptography:TagResource", "payment-cryptography:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "payment-cryptography:Encrypt","payment-cryptography:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow list/read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "payment-cryptography:List*","payment-cryptography:Get*" ], "Resource": "*", } ] }

记录您的VPC终端节点

AWS CloudTrail 记录使用该VPC终端节点的所有操作。当向 AWS 支付加密发出的请求使用终端节点时,VPC终VPC端节点 ID 会出现在记录该请求的AWS CloudTrail 日志条目中。您可以使用终端节点 ID 来审核您的 AWS 支付加密VPC终端节点的使用情况。

为了保护您的安全VPC,被VPC终端节点策略拒绝但本来会被允许的请求不会记录在中AWS CloudTrail

例如,此示例日志条目记录了使用该VPC端点的GenerateMac请求。vpcEndpointId 字段出现在日志条目的末尾。

{ "eventVersion": "1.08", "userIdentity": { "principalId": "TESTXECZ5U9M4LGF2N6Y5:i-98761b8890c09a34a", "arn": "arn:aws:sts::111122223333:assumed-role/samplerole/i-98761b8890c09a34a", "accountId": "111122223333", "accessKeyId": "TESTXECZ5U2ZULLHHMJG", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "TESTXECZ5U9M4LGF2N6Y5", "arn": "arn:aws:iam::111122223333:role/samplerole", "accountId": "111122223333", "userName": "samplerole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-05-27T19:34:10Z", "mfaAuthenticated": "false" }, "ec2RoleDelivery": "2.0" } }, "eventTime": "2024-05-27T19:49:54Z", "eventSource": "payment-cryptography.amazonaws.com", "eventName": "CreateKey", "awsRegion": "us-east-1", "sourceIPAddress": "172.31.85.253", "userAgent": "aws-cli/2.14.5 Python/3.9.16 Linux/6.1.79-99.167.amzn2023.x86_64 source/x86_64.amzn.2023 prompt/off command/payment-cryptography.create-key", "requestParameters": { "keyAttributes": { "keyUsage": "TR31_M1_ISO_9797_1_MAC_KEY", "keyClass": "SYMMETRIC_KEY", "keyAlgorithm": "TDES_2KEY", "keyModesOfUse": { "encrypt": false, "decrypt": false, "wrap": false, "unwrap": false, "generate": true, "sign": false, "verify": true, "deriveKey": false, "noRestrictions": false } }, "exportable": true }, "responseElements": { "key": { "keyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "keyAttributes": { "keyUsage": "TR31_M1_ISO_9797_1_MAC_KEY", "keyClass": "SYMMETRIC_KEY", "keyAlgorithm": "TDES_2KEY", "keyModesOfUse": { "encrypt": false, "decrypt": false, "wrap": false, "unwrap": false, "generate": true, "sign": false, "verify": true, "deriveKey": false, "noRestrictions": false } }, "keyCheckValue": "A486ED", "keyCheckValueAlgorithm": "ANSI_X9_24", "enabled": true, "exportable": true, "keyState": "CREATE_COMPLETE", "keyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "createTimestamp": "May 27, 2024, 7:49:54 PM", "usageStartTimestamp": "May 27, 2024, 7:49:54 PM" } }, "requestID": "f3020b3c-4e86-47f5-808f-14c7a4a99161", "eventID": "b87c3d30-f3ab-4131-87e8-bc54cfef9d29", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "vpcEndpointId": "vpce-1234abcdf5678c90a", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "vpce-1234abcdf5678c90a-oo28vrvr.controlplane.payment-cryptography.us-east-1.vpce.amazonaws.com" } }