摘要

  • ACSP 2026.4 的提交者称,在把一个详细重新分配交给另一 Org 后,父级登记方的 API 密钥不能按子级 NET handle 执行 GET;但它能够 DELETE 该对象,也能在已知精确起止地址时通过 mostSpecificNet 取得 NET Payload。接收方 Org 的密钥据称可以按 handle 读取。
  • ARIN 于 2026 年 3 月 30 日关闭建议,理由是已有其他检索工具,且已考虑未来开发计划,因此当时无需修改 API 权限检查。这段答复没有逐项确认提交者的复现结果;Closed 只是建议状态,不是上线或修复证明。
  • 详细重新分配本来就把日常管理权交给接收方,同时保留直接登记方的回收权。公共 Whois/RDAP、认证后的 NET Payload 与回收操作因此不应被视为同一种访问。
  • 更稳妥的改进不是让父级取得全部 GET/PUT 权限,而是提供有限字段的删除前预览、版本令牌和一张按参与者、关系、对象、标识路径、动作与字段集展开的能力矩阵。

“能回收”与“能管理”不是同一句话的两种说法。前者结束一段资源关系,后者决定关系存在期间由谁维护其中的记录。把它们混为一谈,会把最小权限变成空话;把它们切得彼此不可见,则会让一次破坏性操作失去前置核验。

ARIN 的资源记录管理说明把简单重新分配、详细重新分配(Detailed Reassignment)和再分配区分开来。简单重新分配的接收者没有直接管理能力。详细重新分配面向已有 Org 的接收方,接收方获得直接管理权,直接登记方仍保有 reclaim 权力;部分反向 DNS 与 IRR 管理还可能由双方共享。再分配又是另一种关系,因为下游 Org 可以继续重新分配资源。

这套区分首先应当得到辩护。详细重新分配若仍让父级随意读取和改写接收方的全部配置,接收方所谓的直接管理权就只剩名义。ARIN 文档定义的 NET Payload可能包含版本、注释、登记日期、Org 或 customer handle、地址块、父级 handle、名称、origin AS 以及 POC 关联。公共目录里能查到某个网络,并不意味着任何查询者都应取得相同字段,更不意味着父级理应获得接收方的全部 PUT 能力。

所以,DELETE、GET 与 PUT 并不存在一条放之四海而皆准的权限阶梯。父级可以只被授权结束自己授出的关系;接收方可以在关系存续期间管理详细记录;公众可以从 Whois 或 RDAP 取得较窄的登记信息。三种能力并不矛盾。

难题出现在执行层:如果系统允许父级结束关系,它是否同时提供足够但不过量的证据,让父级确认自己将要结束的是哪一段关系?

同一个 NET,经过三条路径

ARIN 的ACSP 2026.4记录了一位提交者的具体描述。提交者先从自己的父级 NET 做了一个详细重新分配,把子级交给另一 Org。随后,父级 API 密钥按子级 handle GET 时因权限不足被拒;只有接收方 Org 的密钥据称可以成功。提交者同时称,父级能够按 handle DELETE 该子级,能够在给出精确起止地址时用 mostSpecificNet GET,也能通过公共 Whois 按 handle 或 IP 查询登记信息。

提交者据此主张:既然父级能删除,就应该能读;既然可以删除后重建,就应该能 PUT。ARIN 没有接受这条推导。3 月 30 日的答复说,团队讨论了现有其他工具提供的检索方式以及未来开发计划,并认为当时没有必要改变现有 API 权限。建议在提交者同意下被关闭。

事实边界必须停在这里。这是 ARIN 官方保存的一份用户报告和官方关闭答复,不是 ARIN 自己发布的故障报告,也不是独立复测。当前所有账号和对象是否仍表现相同,材料没有证明。ARIN 的现行文档证明相应路径和 payload 形态存在,却不能代替对特定权限结果的复现。

不过,文档足以揭示路径差异为何重要。Reg-RWS 方法目录列出:

操作 标识方式 文档所述结果
GET /rest/net/NETHANDLE 稳定 NET handle 返回 NET Payload
GET /rest/net/mostSpecificNet/STARTIP/ENDIP 精确起止地址 返回 NET Payload
DELETE /rest/net/NETHANDLE 稳定 NET handle 返回 Ticketed Request Payload
PUT /rest/net/NETHANDLE 稳定 NET handle与 NET Payload 返回修改后的 NET Payload

handle 是对象身份;精确地址范围是调用者必须预先知道的对象属性;Whois/RDAP 则是面向公共发现的目录界面。三条路可能指向同一注册对象,却不必暴露相同字段,也不必接受相同参与者。

2023 年的另一份社区建议 ACSP 2023.13补上了一个经常被忽略的限制:mostSpecificNet 的精确范围调用并不是从任意一个包含其中的 IP 自动发现目标 NET 的通用入口。调用者需要先知道准确的开始和结束地址。若本地库存已经过时,这条“替代路径”可能只是在用旧数据确认旧数据。

对人工操作来说,ARIN Online 的搜索界面可能足以跨过这个障碍。对自动化来说,替代工具并不等于可验证的前置条件。脚本需要回答:本地 handle 与地址范围是否仍指向同一对象?对象是否在排队期间发生变化?它有没有子级 NET?删除会自动完成还是生成工单?哪些关联记录会受影响?

删除结果不应成为第一份完整证据

ARIN 文档说,DELETE 只适用于重新分配和再分配。若目标下面没有进一步的重新分配或再分配,请求可以自动处理,并返回带有被删除网络信息的 Ticketed Request Payload;若存在嵌套 NET,则会进入工单流程,运营者必须等到成功处理后才能把地址空间重新交给其他客户。

重新分配操作说明也要求用户先找到目标网络、选择 Net Handle,再确认一个被明确提示为不可撤销的操作。这里已经形成了一个清楚的安全逻辑:对象身份、子级状态和处理结果都会决定地址何时可以重新使用。

问题在于,最丰富的证据似乎出现在 DELETE 之后。若父级按 handle 的认证 GET 被有意限制,那么系统仍需要某种较窄的方式,在提交删除之前证明“这就是你有权回收的直接子级,而且当前状态与刚才审阅的一致”。

这不是扩大读取权限的借口。它是一种把不可逆动作与已观察状态绑定起来的要求。

权限至少有八个坐标

一张只有“对象 × 动作”的权限表不足以指导生产自动化。可验证的单元应当是:

参与者角色 × 关系 × 对象类别 × 标识路径 × 动作 × 字段集 × 前置条件 × 结果

仅仅写“父级可以删除 NET”,没有说明参与者是 Org 管理员、resource POC、技术联系人还是直接登记方;没有说明对象是简单重新分配、详细重新分配还是再分配;没有说明它是直接子级还是更深层后代;没有说明返回全部 NET Payload、公共字段还是删减视图;也没有说明子级、DNS、IRR、路由对象、通知和工单如何处理。

同一张矩阵也能保护接收方。父级为了回收而查看的预览,不需要包括接收方的私密 POC 信息、注释或只能由接收方修改的字段。字段集本身就是权限的一部分。

ARIN 的网络修改说明要求修改前先 GET 当前 NET,以保证准确性。这条原则实际上是在要求调用者不要把过期对象写回登记系统。对于 DELETE,同样需要当前状态,只是所需字段更少。如果现有权限阻止父级取得完整 GET,正确答案不是放弃前置核验,而是提供另一种最小化的当前状态证明。

一扇比完整 GET 更窄的窗口

可行的删除或回收预览只需返回八类信息:稳定 handle 与规范化地址范围;对象类别与直接父级关系;不含私密联系方式的接收方类型;是否存在子级 NET;将自动处理还是进入工单;与 DNS、IRR、路由登记有关的影响摘要;将发送的通知和保留的审计证据;以及一个短时有效的版本令牌。

随后 DELETE 必须携带该令牌。如果对象范围、子级结构或关键关联状态已经变化,请求就失败并要求重新预览。父级得到的是可观察性,不是接收方管理权;ARIN 保留最小权限边界,同时避免脚本依据一份过期库存完成不可逆操作。

配套的公开能力矩阵还应带版本和生效日期。它应逐类说明:哪些参与者可以用哪些标识路径解析哪种 NET,能看到哪些字段,可以执行哪些动作,必须满足什么前置条件,会得到自动结果还是工单,失败后如何安全纠正。刻意不对称的单元格应说明理由,而不是让运营者靠试错发现。

这样一来,权限差异不再自动被视为缺陷。测试可以明确断言:详细重新分配的接收方能取得其管理 payload;直接登记方只获得回收预览;简单客户没有管理能力;再分配遵循不同的下游规则。不同是一种设计,前提是不同能够被验证。

Closed 不是技术结论的句号

ARIN 认为现有工具与未来计划使权限变更在当时没有必要,这是合理的产品判断。人工界面可以满足一部分需要,开发资源也必须排序。提交者同意关闭建议。

但 Closed 只表明建议流程结束。它不证明 ARIN 逐项确认了报告,不证明新机制已经部署,也不证明同类自动化问题永远不会再次出现。答复中的“at this time”本身就是边界。

若 ARIN 的本意是:直接登记方可以回收详细重新分配,却不能按 handle 读取接收方完整的 provisioning payload,那么能力矩阵应当把这条规则写清楚。若精确范围查询或 ARIN Online 是推荐的前置路径,也应写明它依赖哪些本地库存、返回哪些有限字段、如何判断对象没有变化。

拒绝可以保护数据,允许却必须能被审阅。父级不应因为拥有外层空间就继承接收方身份;接收方也不应让父级剩余的回收责任只能盲目履行。公共目录不是 provisioning API;可执行的删除权也不等于完整管理权。

把这些边界同时保住,需要的不是更宽的钥匙,而是一份更小、更明确的契约。