在临时预览变成永久入口之前关掉它
评审预览需要狭窄的入口、具名的评审人,以及可以实际测试的吊销动作。一个 DNS TTL 和「临时」这个词本身关闭不了任何东西。
无法接入 VPN 的评审人需要一个下午用的链接,而到了傍晚,生产服务已经挂上一个没人记得批准过的公网主机名。请求很小,变更却不小。临时预览是一条新的访问路径,它有受众、数据范围和一个结束时间。请像对待任何其他入口一样对待它,因为「临时」这个词本身关闭不了任何东西。
临时是时长,不是控制
「临时」描述的是某样东西应该存在多久,而不是它在存在期间受什么限制。一个没有到期时间的公网主机名,在创建者换组的那一刻就变成了永久入口。
在任何东西暴露之前,服务负责人和安全负责人应当批准三件事:受众、数据和时长。
已有的访客 VPN 或评审环境往往比发布生产服务更简单。它已经有负责人、审批路径和下线流程。为一下午单独造一个新的例外,正是小请求变成常设资产的过程。先问一句:这次评审能不能放在已经存在的东西里做。
只发布一个操作,绝不发布整个子网
选择仍能支撑评审的最小入口。优先使用数据合适的测试副本而不是生产环境,优先选择能到达单个私有源站的已认证前端,而不是任何子网路由。
具备 VPN 可达性的中继不必发布整个私有子网,更不应该发布网关的管理界面。
写明允许通过的账户以及它们可以执行的操作。按来源 IP 限制确实缩小了谁能连接。但它并不识别具体的人,因为公网地址是共享的,而且会变化。
保留应用自身的授权,或一个明确可信、能识别身份的入口。要保护下载、API 和管理路径,而不仅是落地页。终止 TLS 的前端会成为可信端点,而它身后的私有路由并不会把公网访客变成 VPN 成员。被排除的路径要和落地页一样认真测试。
身份在前端,不在来源地址
来源 IP 规则适合收窄暴露面,却不适合证明评审人是谁。家庭连接会变,移动网络共享地址,同事可能处在同一个 NAT 之后。
能识别身份的代理或应用自身的登录,让你做到按人决策。这才使后续的吊销成为可能,因为你可以移除一个身份而不必改动网络。
保持证书校验开启,并阻断对源站的直接访问。如果源站仍能从互联网到达,前端就只是装饰。
吊销授权和路由
在已经跟踪访问的操作系统里记录负责人和确切的到期时间。在平台支持的地方使用限时访问或计划下线,并为自动化失败的情况加一道检查。
到约定的结束时间,通过各自的负责人下线临时前端、路由许可和评审人授权。现存会话和长连接需要单独处理,因为移除一条路由并不会结束它们。
很短的 DNS TTL 并不是访问到期。它改变的是解析器保留答案的时长。它不会停用账户、切断正在进行的会话,也不会关闭仍在监听的端口。
缓存副本属于同一个问题。把源站路径下线,收不回别人已经保存的文件;共享缓存可能在网络中继消失之后仍然分发副本。在评审开始之前就选好响应与存储策略。
确认旧路径真的消失了
验收是一个失败的新请求,加上 正常的 VPN 工作流 仍然可用。两样都要测,因为破坏常规路径的移除不算干净的移除。
从网络外部确认名称和源站两者都已关闭:
dig +short review.example
curl -sSI --max-time 5 https://review.example/
ss -ltnp | grep ':443'
保留一份狭窄的审计记录:批准了什么、谁能到达、何时移除。这份记录正是受控例外与来历不明的主机名之间的区别。临时预览的成功在于它提供了被请求的评审,然后不再提供。URL 从聊天记录里消失,并不是那个测试。