← 中文资源

简体中文版本

安全下线服务而不破坏依赖方

通过日志找出所有调用方、返回 410 提示迁移、撤销凭据,并在保留期结束后才删除数据。

阅读英文原文

目标

安全下线一个内部服务:先证明还有哪些调用方,再让请求显式失败并提示迁移,随后撤销访问权限,最后在保留期和审批完成后删除数据。

步骤

  1. 记录业务负责人、替代服务、下线日期和数据保留要求,形成签字决策记录。
  2. 汇总网关日志、服务网格遥测和 DNS 查询日志,并在所有代码仓库中搜索主机名和客户端库,列出调用方和定时任务。
  3. 公告下线日期,对已退役路径返回 410 并添加 Sunset 头;迁移期内保留只读接口:
location /api/legacy-reports/ {
    add_header Sunset "2026-12-01T00:00:00Z" always;
    add_header Link "<https://api.example.com/v2/reports>; rel=\"successor-version\"" always;
    return 410;
}
  1. 从 DNS 和负载均衡摘除服务,撤销 API 密钥、Webhook 订阅和数据库角色,停用 CI 流水线。
  2. 把最终数据和配置导出到归档位置,等待保留期结束,再删除数据存储、备份和基础设施。

验证

DNS 不再返回记录;负载均衡没有对应监听器;访问旧域名返回 410 或连接拒绝;凭据清单中没有有效密钥;归档可读且能恢复到临时环境;服务目录和值班轮转中已移除该服务。

回滚

删除数据之前,回滚是用基础设施即代码重新部署服务、恢复 DNS 并重新启用流水线,因此镜像和配置至少保留 30 天。保留期结束并经审批删除后,只能把归档恢复到新环境,无法恢复原服务。删除最后一份数据及其备份是不可逆步骤,必须由数据所有者和合规负责人签字;不要把这一步和代码下线放在同一个变更窗口。