View a markdown version of this page

与跨账户共享注册表 AWS RAM - 亚马逊基岩 AgentCore

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

与跨账户共享注册表 AWS RAM

您可以使用 AWS 资源访问管理器 (RAM) 与其他 AWS 账户共享 AWS 代理注册表。通过 RAM 共享,您自己的账户可以发现、发布或管理注册表中的记录,而无需拥有注册表本身。

当您共享注册表时,RAM 会代表您创建和管理基于资源的策略。您可以选择托管权限来控制消费者账户可以执行的操作,其余操作由 RAM 处理。

跨账户共享的工作原理

Cross-account 共享遵循三个步骤:

  1. 注册表所有者共享注册表-所有者创建 RAM 资源共享,选择托管权限,并添加一个或多个消费者账户 ID 作为委托人。RAM 将基于资源的策略附加到注册表。

  2. 消费者接受邀请 -对于所有者 AWS 组织以外的账户,RAM 会发送消费者必须接受的邀请。对于同一组织内的帐户(启用了与组织共享 RAM),系统会自动接受——无需邀请。

  3. 消费者访问共享注册表 — 消费者使用自己的凭据对应所有者的注册表 ARN 调用 AWS 代理注册表 API。他们可以执行的操作取决于附加到共享的管理权限。

主要特性:

  • 只有注册表所有者才能发起共享。

  • RAM 代表您创建和管理基于资源的策略——您可以选择托管权限来控制其授予的操作。

  • 您选择的托管权限决定了消费者可以做什么(发现、发布或管理)。

  • Control-plane 注册表变更 (UpdateRegistry,DeleteRegistry) 始终归所有者所有,不能通过 RAM 进行委托。

先决条件

在共享注册表之前,请确保满足以下要求:

在注册表所有者账户中:

  • 注册表处于READY状态。

  • 调用者拥有 AWS RAM 操作(ram:CreateResourceShare、、、ram:AssociateResourceShare、ram:DisassociateResourceShareram:DeleteResourceShareram:GetResourceShares、ram:GetResourceShareAssociations)和 IAM 权限agent-registry:PutResourcePolicy。

在消费者账户中:

  • 调用者拥有 AWS 代理注册表操作的 IAM 权限,这些权限与附加到共享的托管权限相对应。

  • 对于外部(跨组织)共享,调用者还需要ram:GetResourceShareInvitations和ram:AcceptResourceShareInvitation(或ram:RejectResourceShareInvitation)。

对于组织内部共享:

  • AWS 必须启用与 AWS 组织共享 RAM。有关更多信息,请参阅 AWS RAM 用户指南中的启用与 AWS 组织共享。

  • 启用组织共享后,组织内的账户无需接受邀请,共享会自动生效。

的 RAM 管理权限 AWS 代理注册表

共享注册表时,您可以附加一个 AWS RAM 管理权限,用于控制消费者账户可以执行哪些操作。 AWS 代理注册表提供四种托管权限:一种默认权限和三种基于角色的权限。这些允许您授予每个用例所需的最低访问权限。

AWSRAMDefaultPermissionAgentRegistryReadOnly

这是agent-registry:Registry资源类型的默认权限。当您在未指定权限的情况下创建资源共享时,RAM 会自动附加此权限。它授予对注册表元数据和记录(控制平面读取和数据平面发现)的只读访问权限,但不允许发布记录或调用注册表的模型上下文协议 (MCP) 端点。

用例:共享注册表以实现可见性和审计。消费者可以浏览和搜索目录,但不能通过 MCP 端点发布、修改或调用工具。

授予的权限:

  • agent-registry:GetRegistry—查看注册表配置和元数据。

  • agent-registry:GetRegistryRecord—读取单个记录的详细信息(控制平面)。

  • agent-registry:ListRegistryRecords—列出注册表(控制平面)中的所有记录。

  • agent-registry:SearchDiscoverableRegistryRecords—使用混合搜索搜索批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录(数据平面)的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords—列出批准的记录(数据平面)。

AWSRAMPermissionAgentRegistryForConsumer

此权限授予数据平面发现权限以及调用注册表的 MCP 端点的能力。将此权限用于消费者角色——需要发现和使用目录中注册的工具的 AI 代理或人类用户。

用例:与其代理需要发现工具并通过 MCP 端点调用工具的账户共享注册表。消费者无法创建或管理记录。

授予的权限:

  • agent-registry:SearchDiscoverableRegistryRecords—搜索批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords—列出批准的记录。

  • agent-registry:InvokeRegistryMcp—调用注册表的 MCP 端点。

AWSRAMPermissionAgentRegistryForPublisher

此权限授予消费者权限所授予的所有权限,以及创建、更新、删除和提交记录以供批准的控制平面访问权限。将此权限用于发布商角色——共享账户中向中央注册管理机构贡献资源的创建者。

用例:与需要将 MCP 服务器、代理或工具发布到您的目录中的团队共享注册表。出版商可以管理自己的记录并发现其他记录,但不能批准或拒绝记录。

授予的权限:

  • agent-registry:GetRegistry—查看注册表配置。

  • agent-registry:CreateRegistryRecord—创建新记录。

  • agent-registry:UpdateRegistryRecord—更新现有记录。

  • agent-registry:DeleteRegistryRecord—删除记录。

  • agent-registry:GetRegistryRecord—阅读个人记录的详细信息。

  • agent-registry:ListRegistryRecords—列出所有记录。

  • agent-registry:SubmitRegistryRecordForApproval—提交记录供策展人审查。

  • agent-registry:SearchDiscoverableRegistryRecords—搜索批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords—列出批准的记录。

  • agent-registry:InvokeRegistryMcp—调用注册表的 MCP 端点。

AWSRAMPermissionAgentRegistryForAdmin

此权限授予出版商授予的所有权限,以及批准、拒绝或弃用记录的能力。将此权限用于管理员角色,即另一个账户中的委派管理员,代表所有者管理共享注册表。

用例:与一个无需拥有注册基础设施本身即可管理整个记录生命周期(发布、审查和批准记录)的账户共享注册表。管理员无法更新或删除注册表。

授予的权限:

  • agent-registry:GetRegistry—查看注册表配置。

  • agent-registry:CreateRegistryRecord—创建新记录。

  • agent-registry:UpdateRegistryRecord—更新现有记录。

  • agent-registry:UpdateRegistryRecordStatus—批准、拒绝或弃用记录。

  • agent-registry:DeleteRegistryRecord—删除记录。

  • agent-registry:GetRegistryRecord—阅读个人记录的详细信息。

  • agent-registry:ListRegistryRecords—列出所有记录。

  • agent-registry:SubmitRegistryRecordForApproval—提交记录供策展人审查。

  • agent-registry:SearchDiscoverableRegistryRecords—搜索批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords—列出批准的记录。

  • agent-registry:InvokeRegistryMcp—调用注册表的 MCP 端点。

选择托管权限

如果你想让消费者... 选择此权限

浏览和搜索目录(只读,不调用 MCP)

AWSRAMDefaultPermissionAgentRegistryReadOnly

发现工具并调用 MCP 端点

AWSRAMPermissionAgentRegistryForConsumer

发布和管理记录 + 探索工具

AWSRAMPermissionAgentRegistryForPublisher

完整记录生命周期(发布 + approve/reject /deprecate)

AWSRAMPermissionAgentRegistryForAdmin

提示

对于消费者账户代理需要发现和调用工具的典型共享场景,我们建议使用消费者权限。

创建客户管理的权限

对于高级用例(例如仅限特定账户使用条件密钥创建的记录),您可以创建客户管理的 RAM 权限。 Customer-managed 权限允许您定义引用 AWS 代理注册表条件键的自定义Condition块。

有关创建客户管理权限的更多信息,请参阅 AWS RAM 用户指南中的可共享资源。

有关可用于 AWS 代理注册表的条件密钥,请参见用于细粒度记录访问的条件密钥。

与其他账户共享注册表

只有注册表所有者才能发起共享。

控制台

  1. 打开AWS 代理注册表控制台。

  2. 选择要共享的注册表。

  3. 在注册表详细信息页面上,向下滚动到注册表共享部分。

  4. 选择 “共享注册表” 。

  5. 在共享注册表面板的 AWS 资源访问管理器 (RAM) 共享下,选择以下选项之一:

  6. 在 AWS RAM 共享管理权限下,从下拉列表中选择托管权限。这是必填项——必须选择权限才能共享。

    有关选择权限的帮助,请参阅选择托管权限。

  7. 在 “帐户” 下,输入您要共享的每个账户的账户 ID。 AWS 选择 “添加其他帐户” 以添加更多帐户。

  8. 选择共享。

注册表共享表显示了关联。对于外部共享,在消费者接受邀请之前,关联状态显示为正在关联。

AWS CLI

使用create-resource-share命令使用注册表 ARN 和消费者账户 ID 创建 RAM 资源共享:

aws ram create-resource-share \ --name "my-registry-share" \ --resource-arns "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" \ --principals "444455556666" \ --permission-arns "arn:aws:ram::aws:permission/AWSRAMPermissionAgentRegistryForConsumer" \ --allow-external-principals

替换以下内容:

  • my-registry-share—资源共享的描述性名称。

  • 注册表 ARN — 您要共享的注册表的 ARN。

  • 444455556666—消费者的 AWS 账户 ID。

  • 权限 ARN-要附加的托管权限的 ARN。省略--permission-arns使用默认值AWSRAMDefaultPermissionAgentRegistryReadOnly。

  • --allow-external-principals—如果消费者账户在您的 AWS 组织之外,请添加此标志。将其省略以供组织内部共享。

验证共享是否处于活动状态:

aws ram get-resource-share-associations \ --association-type RESOURCE \ --resource-arns "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId"

接受分享邀请

当注册表与所有者 AWS 组织之外的账户共享时,消费者账户会收到邀请。消费者必须接受邀请才能访问共享注册表。

注意

如果两个账户位于同一个 AWS 组织中,并且启用了与组织共享 AWS RAM 的功能,则会自动接受——无需邀请,您可以跳过此步骤。

控制台

  1. 打开AWS 代理注册表控制台。

  2. 在注册表概述页面的顶部,蓝色横幅显示待处理的共享请求(一次最多显示 3 个):

    “新的注册共享申请——账户 111122223333 想在 2026 年 8 月 11 日 MyRegistryId 与你共享注册表。”

  3. 选择 Accept (接受)。

接受后,共享注册表将出现在消费者的注册表列表中。您也可以选择查看邀请详细信息以在 AWS RAM 控制台中查看共享。

AWS CLI

查找待处理的邀请:

aws ram get-resource-share-invitations \ --query 'resourceShareInvitations[?status==`PENDING`]'

使用响应中的邀请 ARN 接受邀请:

aws ram accept-resource-share-invitation \ --resource-share-invitation-arn "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/12345678-abcd-efgh-ijkl-123456789012"

拒绝分享邀请

如果您不想访问共享注册表,则可以拒绝邀请。拒绝邀请意味着您将无权访问共享注册表。

控制台

  1. 打开AWS 代理注册表控制台。

  2. 在注册表概述页面的顶部,找到待处理的共享请求横幅。

  3. 选择 Reject (拒绝)。

AWS CLI

查找待处理的邀请:

aws ram get-resource-share-invitations \ --query 'resourceShareInvitations[?status==`PENDING`]'

拒绝邀请:

aws ram reject-resource-share-invitation \ --resource-share-invitation-arn "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/12345678-abcd-efgh-ijkl-123456789012"
注意

接受共享邀请后,权限可能需要很短的时间才能传播。

访问共享注册表

共享处于活动状态后(通过接受邀请或自动接受组织级别),消费者使用自己的证书对照所有者的注册表 ARN 调用 AWS 代理注册表 API。可用的具体操作取决于附加到共享的托管权限。

示例:以消费者身份发现记录

# List approved records in the shared registry aws agent-registry list-discoverable-registry-records \ --registry-id "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" # Search for tools aws agent-registry search-discoverable-registry-records \ --registry-ids "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" \ --search-query "order management" # Get full record details aws agent-registry batch-get-discoverable-registry-record \ --entries '[{"registryId":"arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId","recordIds":["arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId/record/MyRecordId"]}]'

示例:以出版商身份发布记录

aws agent-registry-control create-registry-record \ --registry-id "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" \ --name "my-mcp-server" \ --display-name "Order Management MCP Server" \ --record-type MCP \ --descriptors '{"mcpServer": {"data": "{\"name\": \"order-mgmt\", \"description\": \"Order management tools\", \"version\": \"1.0.0\"}", "dataSchemaVersion": "2025-12-11"}}' \ --record-version "1.0"

停止与账号共享

要撤消使用者对共享注册表的访问权限,请从资源共享中移除该消费者账户。

控制台

  1. 打开AWS 代理注册表控制台。

  2. 选择您要共享的注册表。

  3. 在注册表详细信息页面上,向下滚动到注册表共享部分。

  4. 选择您要移除的账户。

  5. 选择 Stop sharing(停止共享)。

消费者立即失去对注册表的访问权限。在完全撤消访问权限之前,可能存在短暂的传播延迟(最多 30 秒)。

AWS CLI

disassociate-resource-share用于从共享中移除消费者账户:

aws ram disassociate-resource-share \ --resource-share-arn "arn:aws:ram:us-east-1:111122223333:resource-share/12345678-1234-1234-1234-123456789012" \ --principals "444455556666"

验证主体已取消关联:

aws ram get-resource-share-associations \ --association-type PRINCIPAL \ --resource-share-arns "arn:aws:ram:us-east-1:111122223333:resource-share/12345678-1234-1234-1234-123456789012"

要删除整个资源共享(一次移除所有消费者帐户),请执行以下操作:

aws ram delete-resource-share \ --resource-share-arn "arn:aws:ram:us-east-1:111122223333:resource-share/12345678-1234-1234-1234-123456789012"

用于细粒度记录访问的条件密钥

AWS 代理注册表提供两个特定于服务的条件密钥。您可以在客户管理的 RAM 权限、IAM 身份策略和 SCP 中使用这些密钥来控制个人记录级别的访问权限。它们在跨账户共享注册表时特别有用,在这些账户中,即使另一个账户拥有注册表本身,你也希望消费者账户仅根据其拥有或来自自己账户的记录进行操作。

这两个密钥都是在授权时从存储的记录中解析出来的,不能通过请求输入进行设置,因此消费者无法伪造它们以获取对属于其他账户的记录的访问权限。

注册表记录条件键

以下条件密钥适用于 API 操作列中列出的记录级别操作。

条件键 Type API 操作 说明

agent-registry:RecordCreatorAccount

字符串

GetRegistryRecord, UpdateRegistryRecord, DeleteRegistryRecord, SubmitRegistryRecordForApproval, UpdateRegistryRecordStatus, GetDiscoverableRegistryRecord

按创建注册记录的委托人的 AWS 账户 ID 筛选访问权限。在授权时从存储的记录中解析;无法通过请求输入进行设置。

agent-registry:RecordSourceAccount

字符串

GetRegistryRecord, UpdateRegistryRecord, DeleteRegistryRecord, SubmitRegistryRecordForApproval, UpdateRegistryRecordStatus, GetDiscoverableRegistryRecord

按与注册表记录关联的源资源的 AWS 账户 ID 筛选访问权限,例如,自动检测到的资源所在的帐户。在授权时从存储的记录中解析;无法通过请求输入进行设置。

注意

这些条件键仅对引用特定记录的操作进行评估。不对它们进行评估的依据是:

  • CreateRegistryRecord—记录在创建时尚不存在,因此没有存储的创建者或源帐户可供比较。

  • SearchDiscoverableRegistryRecordsListRegistryRecords、和 ListDiscoverableRegistryRecords —无论条件密钥的限制如何,这些操作都会返回所有匹配记录的摘要。密钥适用于单个记录读取和记录写入操作,不适用于搜索或列表枚举。

如果您需要将其他账户的记录完全保存在消费者视野之外,请不要在共享权限中授予搜索和列出操作。

示例:限制访问消费者创建的记录

以下客户管理的 RAM 权限仅允许消费者读取、更新和删除创建者账户与消费者自己的账户匹配的记录:

{ "Effect": "Allow", "Action": [ "agent-registry:GetDiscoverableRegistryRecord", "agent-registry:GetRegistryRecord", "agent-registry:UpdateRegistryRecord", "agent-registry:DeleteRegistryRecord" ], "Condition": { "StringEquals": { "agent-registry:RecordCreatorAccount": "${aws:PrincipalAccount}" } } }

${aws:PrincipalAccount}策略变量在评估时会动态解析——每个消费者只能访问他们自己创建的记录,即使在共享注册表中也是如此。

示例:限制访问源自消费者账户的记录

以下客户管理的 RAM 权限允许消费者仅读取源资源位于消费者自己的账户中的记录,当从消费者拥有的资源中自动检测到记录时很有用:

{ "Effect": "Allow", "Action": [ "agent-registry:GetDiscoverableRegistryRecord", "agent-registry:GetRegistryRecord" ], "Condition": { "StringEquals": { "agent-registry:RecordSourceAccount": "${aws:PrincipalAccount}" } } }

有关创建客户管理的 RAM 权限的说明,请参阅 AWS RAM 用户指南中的创建客户管理的权限。

问题排查

症状 可能原因 解决方案

消费者接受邀请AccessDeniedException后获得

该共享尚未完全激活,或者消费者的 IAM 角色缺少agent-registry:*权限。

确认共享状态正在ACTIVE使用aws ram get-resource-shares --resource-owner OTHER-ACCOUNTS。验证消费者的身份策略包括托管权限授予的操作。

创建共享FAILED后显示资源关联状态

RAM 未接受注册表 ARN。

确认 ARN 开头为arn:aws:agent-registry:且注册表处于READY状态。

消费者找不到待处理的邀请

账户位于启用了 RAM AWS 组织共享的同一个组织中。

对于组织内部共享,系统会自动接受。验证共享注册表是否显示在中aws ram list-resources --resource-owner OTHER-ACCOUNTS --resource-type agent-registry:Registry。

消费者可以致电list-discoverable-registry-records但search或batch-get退货 403

附加了客户管理的 RAM 权限,该权限仅授予ListDiscoverableRegistryRecords不带SearchDiscoverableRegistryRecords或GetDiscoverableRegistryRecord。

使用验证附加了哪个权限aws ram list-resource-share-permissions --resource-share-arn …​。切换到 AWS 托管权限(所有四个权限都包括列出、搜索和获取),或者更新客户管理的权限以包括缺失的操作。

停止共享后,消费者仍然可以短暂访问注册表

Resource-based 策略传播的延迟很短。

等待大约 30 秒,然后重试。访问权限撤销最终是一致的。

ram:CreateResourceShare 返回 AccessDeniedException

所有者的 IAM 角色缺少 RAM 权限。

将ram:CreateResourceShare和附加agent-registry:PutResourcePolicy到所有者的 IAM 角色。