

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

# VPC 和 Amazon PrivateLink 和 Amazon 代理注册表
<a name="registry-privatelink"></a>

您可以使用 Amazon PrivateLink 在 VPC 和 Amazon 代理注册表之间创建私有连接。您可以像在 VPC 中一样访问 Amazon 代理注册表，无需使用互联网网关、NAT 设备、VPN 连接或 Amazon 直接连接连接。您的 VPC 中的实例不需要公有 IP 地址即可访问 Amazon 代理注册表。

您可以通过创建*接口终端节点来建立此私有连接*，该终端节点由提供支持 Amazon PrivateLink。我们将在您为接口端点启用的每个子网中创建一个端点网络接口。这些是请求者管理的网络接口，用作发往 Amazon 代理注册表的流量的入口点。

有关更多信息，请参阅* Amazon PrivateLink 指南 Amazon PrivateLink[中的通过](https://docs.amazonaws.cn/vpc/latest/privatelink/privatelink-access-aws-services.html)访问 Amazon 服务*。

## 注意事项 Amazon 代理注册表
<a name="registry-privatelink-considerations"></a>

在为 Amazon 代理注册表设置接口终端节点之前，请查看* Amazon PrivateLink 指南[中的](https://docs.amazonaws.cn/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)注意事项*。

 Amazon 代理注册表提供两个 Amazon PrivateLink 端点：
+  **控制平面端点**：`com.amazonaws.region.agent-registry-control`— 用于注册表和记录管理（创建、更新、删除操作等）。
+  **数据平面端点**：`com.amazonaws.region.agent-registry`— 用于记录发现和注册表 MCP 端点（搜索 InvokeRegistryMcp等）。

有关 Amazon 代理注册表接口终端节点可用的 Amazon 区域列表，请参阅[支持的 Amazon 区域](agentcore-regions.md)。接口终端节点在 Amazon 代理注册表可用的每个区域都可用。

**重要**  
数据平面 API 支持用于身份验证的 Amazon 签名版本 4 (SigV4) 标头和持有令牌 (OAuth) 身份验证，并且您的端点策略将针对这两者进行评估。持有者代币调用者没有 IAM 身份，因此它只匹配一个`Principal`为\*的语句——而不是特定的账户、角色或用户 ARN。为了使持有令牌请求成功通过端点，`Principal`设置为\*的`Allow`声明必须涵盖操作和资源；命名特定 Amazon 身份的声明不允许这些请求。要限制持有代币调用者，请使用范围`Principal`设置为 \* 的`Deny`语句 `Resource` ——您不能按`Action`主体单独挑出单个持有调用者，因为不记名调用者在主体级别上无法区分。注册表由 SigV4 或 JWT 根据其进行授权`authorizerType`，绝不能两者兼而有之，因此每个注册表只需要与自己的授权模式相匹配的语句表单即可。

 Amazon 代理注册表支持 Amazon IAM 全局条件上下文密钥，包括`aws:SourceVpc`和`aws:SourceVpce`。默认情况下，您可以通过接口端点完全访问 Amazon 代理注册表。要限制该访问权限，请将自定义终端节点策略附加到接口终端节点或将安全组与端点网络接口关联起来。

## 为创建接口端点 Amazon 代理注册表
<a name="registry-privatelink-create"></a>

您可以使用 Amazon VPC 控制台或 Amazon 命令行接口 (Amazon CLI) 为 Amazon 代理注册表创建接口终端节点。有关更多信息，请参阅* Amazon PrivateLink 指南[中的](https://docs.amazonaws.cn/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)创建接口端点*。

使用以下服务名称格式为 Amazon 代理注册表创建接口端点：
+ 对于控制平面操作（注册表和记录管理）：`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 名称向 Amazon 代理注册表发出 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`）

## 为接口端点创建端点策略
<a name="registry-privatelink-policy"></a>

端点策略是一种 IAM 资源，您可以将其附加到接口端点。使用默认端点策略，您可以通过接口端点完全访问 Amazon 代理注册表。要限制该访问权限，请附加自定义终端节点策略。

端点策略指定以下信息：
+ 可以执行操作的委托人（Amazon 账户、IAM 用户和 IAM 角色）。
  + 对于 Amazon 代理注册表数据平面端点，如果注册表使用 JWT 授权而不是 Amazon 签名版本 4 (SigV4)，则`Principal`将任何授权 JWT 调用者的语句设置为 \*。通过 SigV4-based 身份验证，您可以将定义`Principal`为特定 Amazon 身份。
+ 可执行的操作。
+ 可对其执行操作的资源。

有关更多信息，请参阅* Amazon PrivateLink 指南[中的使用端点策略](https://docs.amazonaws.cn/vpc/latest/privatelink/vpc-endpoints-access.html)控制对服务的访问*。

以下示例显示了每个 Amazon 代理注册端点的端点策略。选择一个选项卡来查看控制平面、数据平面记录发现操作或数据平面 MCP 端点的策略。

**Example**  

1. 以下终端节点策略允许特定的 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/*"
            ]
         }
      ]
   }
   ```

1. 以下终端节点策略允许特定的 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/*"
            ]
         }
      ]
   }
   ```

1. 以下端点策略允许任何经过身份验证的调用者调用注册表上的注册表 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`。