知识卡片
部署的推模式与拉模式的安全权限差异
内容
传统持续部署是推模式:CI/CD 流水线(如 GitHub Actions)在生产阶段直接拿着凭证去认证目标平台、把新版本推上去,这意味着流水线本身要长期持有能操作生产集群的高权限凭证,一旦流水线的凭证或第三方 action 被攻破,攻击者就直接拿到了操作生产环境的能力。GitOps 反过来用拉模式:流水线到此为止只更新 Git 仓库里的期望状态清单,真正的部署动作由一个运行在集群内部的代理(如 Argo CD)主动去拉取 Git 变更并应用,集群的操作权限被收拢在这一个代理身上,流水线本身完全不需要持有集群凭证。发散:这和[[拉取式与推送式遥测采集的取舍]]是同一对”推/拉”术语在不同场景下的复用,但这里的取舍标准不再是应用生命周期长短,而是权限暴露面——谁主动发起连接,谁就需要持有更高权限,把”谁来推”换成”谁来拉”能显著缩小凭证暴露的攻击面。
参考来源
《Cloud Native Spring in Action》第15章《Continuous delivery and GitOps》