本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS 安全代理和接口 VPC 终端节点 (AWS PrivateLink)
您可以使用 AWS PrivateLink 在您的 VPC 和 AWS 安全代理之间创建私有连接。您可以像访问您的 VPC 一样访问安全代理,无需使用互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。您的 VPC 中的实例不需要公有 IP 地址即可访问安全代理。
您可以通过创建由 AWS PrivateLink 提供支持的接口端点来建立此私有连接。我们将在您为接口端点启用的每个子网中创建一个端点网络接口。这些是请求者管理的网络接口,用作发往安全客户端的流量的入口点。
有关更多信息,请参阅 AWS PrivateLink 指南 AWS PrivateLink中的通过访问 AWS 服务。
安全代理的注意事项
在为安全客户端设置接口端点之前,请查看 AWS PrivateLink 指南中的注意事项。
安全代理支持从您的 VPC 调用其所有 API 操作,包括管理代理空间、渗透测试和安全发现的操作。
在创建终端节点时,您可以选择 IPv4、IPv6 或双堆栈。
安全客户端支持 VPC 终端节点策略。默认情况下,允许通过接口端点对安全客户端进行完全访问。您可以通过将终端节点策略附加到接口终端节点或将安全组与端点网络接口关联来控制访问权限。
对安全代理的所有 API 调用均使用 TLS 1.2 或更高版本进行加密,包括通过 VPC 终端节点进行的调用。有关数据保护的更多信息,请参阅 AWS 安全代理中的数据保护。安全客户端 API 调用已登录 AWS CloudTrail。有关更多信息,请参阅 示例: AWS 安全客户端日志文件条目。
为安全客户端创建接口终端节点
您可以使用 Amazon VPC 控制台或 AWS 命令行界面 (AWS CLI) 为安全代理创建接口终端节点。有关更多信息,请参阅 AWS PrivateLink 指南中的创建接口终端节点。
使用以下服务名称为安全客户端创建接口终端节点:
com.amazonaws.<region>.securityagent
要使用 AWS CLI 创建接口终端节点,请运行以下命令。将区域、VPC ID、子网 ID 和安全组 ID 替换为您自己的值。
aws ec2 create-vpc-endpoint \ --vpc-id vpc-1a2b3c4d \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.<region>.securityagent \ --subnet-ids subnet-1a2b3c4d subnet-5e6f7a8b \ --security-group-ids sg-1a2b3c4d \ --private-dns-enabled
重要
必须为接口终端节点启用私有 DNS。安全客户端要求您使用默认的区域 DNS 名称(例如securityagent.us-east-1.api.aws)通过终端节点发出 API 请求。不支持直接调用端点特定的 VPCE URL。
要使用私有 DNS,您必须将您的 VPC true 的enableDnsSupport和enableDnsHostnames属性都设置为。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 的 DNS 属性。
为接口终端节点配置安全组
创建接口终端节点时,可以将安全组与端点网络接口关联以控制安全代理的流量。创建一个安全组,允许来自您的 VPC 中需要与安全代理通信的资源的入站 HTTPS 流量(端口 443)。
安全组应包含以下入站规则:
-
类型:HTTPS
-
协议:TCP
-
端口范围:443
-
来源:您的 VPC CIDR 块(例如
10.0.0.0/16)或需要访问安全客户端的资源的安全组 ID
有关更多信息,请参阅 AWS PrivateLink 指南中的安全组。
为接口端点创建端点策略
端点策略是一种 IAM 资源,您可以将其附加到接口端点。默认端点策略允许通过接口端点对安全客户端进行完全访问权限。要控制允许从您的 VPC 访问安全代理的权限,请将自定义终端节点策略附加到接口终端节点。
端点策略指定以下信息:
-
可以执行操作的委托人(AWS 账户、IAM 用户和 IAM 角色)。
-
可执行的操作。
-
可对其执行操作的资源。
有关更多信息,请参阅 AWS PrivateLink 指南中的使用终端节点策略控制对服务的访问权限。
示例: AWS 安全代理操作的 VPC 终端节点策略
以下是 AWS 安全客户端的端点策略示例。当连接到终端节点时,此策略向所有资源的所有委托人授予访问列出的 AWS 安全客户端操作的权限。
{ "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "securityagent:CreatePentest", "securityagent:ListPentests", "securityagent:BatchGetPentests", "securityagent:StartPentestExecution", "securityagent:StopPentestExecution", "securityagent:ListFindings", "securityagent:BatchGetFindings" ], "Resource": "*" } ] }
示例:拒绝来自指定 AWS 账户的所有访问的 VPC 终端节点策略
以下 VPC 终端节点策略拒绝 AWS 账户使用该终端节点访问123456789012所有资源。此策略允许来自其他账户的所有操作。
{ "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "securityagent:*", "Resource": "*" }, { "Effect": "Deny", "Principal": { "AWS": "123456789012" }, "Action": "securityagent:*", "Resource": "*" } ] }
问题排查
调用安全客户端 API 时连接超时
-
验证 VPC 终端节点状态是否为
available:aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-1a2b3c4d \ --query "VpcEndpoints[].State" -
确认与终端节点关联的安全组允许端口 443 上来自您的 VPC CIDR 或源安全组的入站 TCP 流量。
-
检查您的 VPC 路由表是否未将安全客户端流量路由到 Internet 网关或 NAT 网关,而不是终端节点。
的 DNS 解析失败 securityagent.<region>.api.aws
-
确认终端节点上已启用私有 DNS:
aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-1a2b3c4d \ --query "VpcEndpoints[].PrivateDnsEnabled" -
确认您的 VPC
true上enableDnsSupport和enableDnsHostnames都设置为:aws ec2 describe-vpc-attribute --vpc-id vpc-1a2b3c4d --attribute enableDnsSupport aws ec2 describe-vpc-attribute --vpc-id vpc-1a2b3c4d --attribute enableDnsHostnames
Access denied调用安全客户端 API 时出错
-
检查 VPC 终端节点策略,确保它允许您尝试执行的操作。
-
验证您的 IAM 身份策略是否授予了所需的
securityagent:权限。 -
如果使用自定义终端节点策略,请确认终端节点策略和 IAM 策略都允许请求。