本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
VPC 和 AWS PrivateLink 和 AWS 代理注册表
您可以使用 AWS PrivateLink 在 VPC 和 AWS 代理注册表之间创建私有连接。您可以像在 VPC 中一样访问 AWS 代理注册表,无需使用互联网网关、NAT 设备、VPN 连接或 AWS 直接连接连接。您的 VPC 中的实例不需要公有 IP 地址即可访问 AWS 代理注册表。
您可以通过创建接口终端节点来建立此私有连接,该终端节点由提供支持 AWS PrivateLink。我们将在您为接口端点启用的每个子网中创建一个端点网络接口。这些是请求者管理的网络接口,用作发往 AWS 代理注册表的流量的入口点。
有关更多信息,请参阅 AWS PrivateLink 指南 AWS PrivateLink中的通过访问 AWS 服务。
注意事项 AWS 代理注册表
在为 AWS 代理注册表设置接口终端节点之前,请查看 AWS PrivateLink 指南中的注意事项。
AWS 代理注册表提供两个 AWS PrivateLink 端点:
有关 AWS 代理注册表接口终端节点可用的 AWS 区域列表,请参阅支持的 AWS 区域。接口终端节点在 AWS 代理注册表可用的每个区域都可用。
数据平面 API 支持用于身份验证的 AWS 签名版本 4 (SigV4) 标头和持有令牌 (OAuth) 身份验证,并且您的端点策略将针对这两者进行评估。持有者代币调用者没有 IAM 身份,因此它只匹配一个Principal为*的语句——而不是特定的账户、角色或用户 ARN。为了使持有令牌请求成功通过端点,Principal设置为*的Allow声明必须涵盖操作和资源;命名特定 AWS 身份的声明不允许这些请求。要限制持有代币调用者,请使用范围Principal设置为 * 的Deny语句 Resource ——您不能按Action主体单独挑出单个持有调用者,因为不记名调用者在主体级别上无法区分。注册表由 SigV4 或 JWT 根据其进行授权authorizerType,绝不能两者兼而有之,因此每个注册表只需要与自己的授权模式相匹配的语句表单即可。
AWS 代理注册表支持 AWS IAM 全局条件上下文密钥,包括aws:SourceVpc和aws:SourceVpce。默认情况下,您可以通过接口端点完全访问 AWS 代理注册表。要限制该访问权限,请将自定义终端节点策略附加到接口终端节点或将安全组与端点网络接口关联起来。
为创建接口端点 AWS 代理注册表
您可以使用 Amazon VPC 控制台或 AWS 命令行接口 (AWS CLI) 为 AWS 代理注册表创建接口终端节点。有关更多信息,请参阅 AWS PrivateLink 指南中的创建接口端点。
使用以下服务名称格式为 AWS 代理注册表创建接口端点:
-
对于控制平面操作(注册表和记录管理):com.amazonaws.region.agent-registry-control(例如,com.amazonaws.us-east-1.agent-registry-control)
-
对于数据平面操作(记录发现和注册表 MCP 端点):com.amazonaws.region.agent-registry(例如,com.amazonaws.us-east-1.agent-registry)
如果您为接口终端节点启用私有 DNS,则可以使用代理注册表的默认区域 DNS 名称向 AWS 代理注册表发出 API 请求:
-
控制平面:agent-registry-control.region.api.aws(例如,agent-registry-control.us-east-1.api.aws)
-
数据平面:agent-registry.region.api.aws(例如,agent-registry.us-east-1.api.aws)
为接口端点创建端点策略
端点策略是一种 IAM 资源,您可以将其附加到接口端点。使用默认端点策略,您可以通过接口端点完全访问 AWS 代理注册表。要限制该访问权限,请附加自定义终端节点策略。
端点策略指定以下信息:
有关更多信息,请参阅 AWS PrivateLink 指南中的使用端点策略控制对服务的访问。
以下示例显示了每个 AWS 代理注册端点的端点策略。选择一个选项卡来查看控制平面、数据平面记录发现操作或数据平面 MCP 端点的策略。
例
- Control plane (registry and record management)
-
-
以下终端节点策略允许特定的 IAM 委托人通过控制平面终端节点管理注册表及其记录。
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:root"
},
"Action": [
"agent-registry:CreateRegistry",
"agent-registry:GetRegistry",
"agent-registry:UpdateRegistry",
"agent-registry:DeleteRegistry",
"agent-registry:ListRegistries",
"agent-registry:CreateRegistryRecord",
"agent-registry:GetRegistryRecord",
"agent-registry:UpdateRegistryRecord",
"agent-registry:DeleteRegistryRecord",
"agent-registry:ListRegistryRecords",
"agent-registry:SubmitRegistryRecordForApproval",
"agent-registry:UpdateRegistryRecordStatus"
],
"Resource": "arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/*"
}
]
}
以下终端节点策略允许特定的 IAM 委托人通过控制平面终端节点对注册表和记录元数据进行只读访问——这对于在不修改注册表的情况下清点注册表的工具很有用。
Read-only 访问注册表元数据
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:root"
},
"Action": [
"agent-registry:GetRegistry",
"agent-registry:ListRegistries",
"agent-registry:GetRegistryRecord",
"agent-registry:ListRegistryRecords"
],
"Resource": "arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/*"
}
]
}
要限制控制平面对单个注册表及其记录的访问,请使用两个针对特定REGISTRY_ID注册表的资源 ARN,一个用于注册表本身(registry/REGISTRY_ID),一个用于其记录(registry/REGISTRY_ID/record/*)。CreateRegistry并在账户级别ListRegistries进行操作,不能限定到特定的注册表 ARN,因此请将它们从操作列表中删除——如果调用者需要,则单独向他们授予通配符资源。
限定对单个注册表的访问权限
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:root"
},
"Action": [
"agent-registry:GetRegistry",
"agent-registry:UpdateRegistry",
"agent-registry:DeleteRegistry",
"agent-registry:CreateRegistryRecord",
"agent-registry:GetRegistryRecord",
"agent-registry:UpdateRegistryRecord",
"agent-registry:DeleteRegistryRecord",
"agent-registry:ListRegistryRecords",
"agent-registry:SubmitRegistryRecordForApproval",
"agent-registry:UpdateRegistryRecordStatus"
],
"Resource": [
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/REGISTRY_ID",
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/REGISTRY_ID/record/*"
]
}
]
}
- Data plane (record discovery)
-
-
以下终端节点策略允许特定的 IAM 委托人通过数据平面终端节点搜索和浏览一个注册表中的批准记录。
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:root"
},
"Action": [
"agent-registry:SearchDiscoverableRegistryRecords",
"agent-registry:ListDiscoverableRegistryRecords",
"agent-registry:GetDiscoverableRegistryRecord"
],
"Resource": [
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/REGISTRY_ID",
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/REGISTRY_ID/record/*"
]
}
]
}
以下策略允许特定的 IAM 委托人通过相同的终端节点搜索 SigV4-authorized 注册表,并允许任何经过身份验证的 JWT 调用者搜索 JWT-authorized 注册表。
混合 SigV4 和 JWT 授权
{
"Statement": [
{
"Sid": "AllowIamSearchOnSigV4Registry",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:root"
},
"Action": [
"agent-registry:SearchDiscoverableRegistryRecords",
"agent-registry:ListDiscoverableRegistryRecords",
"agent-registry:GetDiscoverableRegistryRecord"
],
"Resource": [
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/SIGV4_REGISTRY_ID",
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/SIGV4_REGISTRY_ID/record/*"
]
},
{
"Sid": "AllowJwtSearchOnJwtRegistry",
"Effect": "Allow",
"Principal": "*",
"Action": [
"agent-registry:SearchDiscoverableRegistryRecords",
"agent-registry:ListDiscoverableRegistryRecords",
"agent-registry:GetDiscoverableRegistryRecord"
],
"Resource": [
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/JWT_REGISTRY_ID",
"arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/JWT_REGISTRY_ID/record/*"
]
}
]
}
- Data plane (registry MCP endpoint)
-
-
以下端点策略允许任何经过身份验证的调用者调用注册表上的注册表 MCP 端点。 JWT-authorized 因为 JWT-authorized 注册表上的 MCP 端点是通过持有者令牌而不是 SigV4 进行身份验证的,因此设置为 *。Principal
{
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"agent-registry:InvokeRegistryMcp",
"agent-registry:SearchDiscoverableRegistryRecords"
],
"Resource": "arn:aws:agent-registry:us-east-1:ACCOUNT_ID:registry/REGISTRY_ID"
}
]
}
InvokeRegistryMcp不作为 SDK 客户端方法公开,是 IAM 操作授权通过数据平面终端节点发送到注册表的 MCP 协议路径的流量。调用注册表 MCP 端点需要同时执行agent-registry:InvokeRegistryMcp发现搜索操作。在agent-registry命名空间中,搜索操作是agent-registry:SearchDiscoverableRegistryRecords;在旧bedrock-agentcore命名空间中,搜索操作是bedrock-agentcore:SearchRegistryRecords。