API 密钥泄漏后如何无停机处置:双密钥轮换、审计与最小权限实践
## 适用场景 代码仓库、CI 日志、工单截图或聊天记录中出现了生产 API 密钥。密钥仍在被多个服务使用,直接禁用可能造成业务中断,但继续保留又会扩大攻击窗口。 本文面向服务到服务调用的静态 API 密钥,给出一套可执行的处置流程:先确认影响范围并限制风险,再创建权限更小的新密钥,通过短暂的双密钥窗口迁移调用方,
Tag
包含这个标签的文章。
## 适用场景 代码仓库、CI 日志、工单截图或聊天记录中出现了生产 API 密钥。密钥仍在被多个服务使用,直接禁用可能造成业务中断,但继续保留又会扩大攻击窗口。 本文面向服务到服务调用的静态 API 密钥,给出一套可执行的处置流程:先确认影响范围并限制风险,再创建权限更小的新密钥,通过短暂的双密钥窗口迁移调用方,
## 适用场景 本文适用于通过 Kubernetes Deployment 滚动发布的 HTTP 服务。系统平时运行正常,但每次发布、缩容或节点驱逐时都会出现少量 502、连接重置或上游提前关闭;错误只持续几秒,Pod 日志里又看不到明显异常。 这类问题通常不是新版本启动失败,而是旧 Pod 的进程退出、Endpo
## 适用场景 本文适用于 Node.js 20.3 及以上版本使用原生 `fetch` 调用内部 API、第三方服务或网关的 TypeScript 项目。示例使用该版本提供的 `AbortSignal.any()`;更早版本可以用等价的信号组合函数替代。典型现象是:业务层已经返回“请求超时”,但下游仍持续收到请求;
## 适用场景 本文适用于网站、API 网关或反向代理已经配置 HTTPS,但出现“浏览器能访问,部分 Java、Android、容器或命令行客户端却握手失败”的场景。典型报错包括 `unable to get local issuer certificate`、`PKIX path building failed`
## 适用场景 业务使用 RS256 JWT 在网关、API 服务和后台任务之间传递身份。为了满足密钥泄露应急、合规轮换或证书到期要求,需要定期替换签名私钥,但又不能让尚未过期的旧令牌突然失效。 本文给出一套可直接落地的轮换方法:令牌头携带 `kid`,验证端同时信任新旧公钥,签发端再切换当前私钥,最后根据令牌最长
## 适用场景 本文适用于 Go 服务通过 `net/http` 调用内部 API、第三方接口或对象存储的场景。典型现象是:下游偶发变慢后,请求大量超时;下游恢复后,调用方吞吐仍然偏低;连接数、TIME_WAIT 或新建 TLS 连接数明显上升;日志只看到 `context deadline exceeded`,却无
## 适用场景 支付、订单、代码托管或消息平台通过 Webhook 主动回调业务系统。接口已经校验 HMAC 签名,但偶尔仍出现同一事件被重复执行,甚至攻击者截获一条合法请求后,可以在数小时后原样重放。 本文以 Python 3.11、FastAPI 和 Redis 为例,实现一套可直接落地的接收端:对原始请求体进
## 适用场景 业务通过 Nginx 上传图片、安装包、备份文件或导入数据时,小文件正常,大文件刚提交便收到 `413 Request Entity Too Large`。应用日志没有请求记录,客户端通常只看到一个 Nginx 错误页。 本文以“上传 80 MB 压缩包失败、10 MB 图片正常”为例,说明怎样确认
## 适用场景 业务服务部署在负载均衡、CDN、Kubernetes Ingress 或四层代理之后。应用日志中的 `remote_addr` 全是代理的内网地址,限流、风控和审计都无法识别真实访问者;更危险的是,直接信任请求携带的 `X-Forwarded-For`,会让攻击者伪造来源 IP 绕过白名单。 本文以
## 适用场景 线上服务切换负载均衡、迁移 API 网关或故障切流后,权威 DNS 已显示新 IP,但仍有一部分客户端持续访问旧地址。常见表现包括:请求间歇超时、少量用户仍命中已下线机房、发布后错误率在一个较长窗口内缓慢回落。 本文以 `api.example.com` 从 `203.0.113.10` 切换到 `