惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
S
Securelist
U
Unit 42
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog
T
Tenable Blog
The Hacker News
The Hacker News
The Register - Security
The Register - Security
IT之家
IT之家
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
博客园_首页
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
A
Arctic Wolf
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
V2EX
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
V
Visual Studio Blog
月光博客
月光博客
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

暗无天日

读:AI Agent 安全日志——从可见性与隐私的两难说起 - 暗无天日 读:AI Agent 生产化——一份从原型到上线的速查清单 - 暗无天日 AI写作的语言指纹——如何让文字不那么像机器 - 暗无天日 读:50 条 Claude Code 技巧——一个工程经理的六个月使用心得 读:AI 辅助开发为什么让 E2E 测试更有价值 - 暗无天日 读:在Emacs中使用Claude Code(Spacemacs适配版) - 暗无天日 Claude Code 背后的工程哲学——读 Agent Harness Engineering 读:Agent Harness Engineering——AI 智能体不只是模型,还有套件 - 暗无天日 browser-harness:让 AI 直接接管你的浏览器 - 暗无天日 TIL: 数字小键盘的小数点陷阱与行内算术求值 - 暗无天日 读:Immutability 不是万能药,它是一种权衡 - 暗无天日 Conducty:给 Claude Code 加上项目记忆和并行执行能力 - 暗无天日 读 — GitHub Trending 里的 Claude Code 技能包 读 — Prompt Caching 省钱指南 TIL: Emacs 中那些跟鼠标配合的冷门快捷键 - 暗无天日 读:Anvil——把 Emacs 变成 AI 的工具服务器 读:Emacs 代码折叠终极指南 - 暗无天日 读:Clojure 搭车客指南 - 暗无天日 git推送失败后恢复仓库损坏的完整记录 - 暗无天日 多智能体系统的两个有效模式——以及对 Claude Code 用户的启示 - 暗无天日 用 Org Babel 写 Literate 博文:扩展执行 + 定制导出 proced:Emacs 内置的进程查看器 - 暗无天日 从 proced 定制中学到的 Elisp 模式 读:让 Emacs proced 在 macOS 上显示 CPU 和内存 异步编程的函数着色税 - 暗无天日 链式调用的代价:JavaScript 和 Clojure 的共同教训 - 暗无天日 hyperfine:命令行基准测试工具 - 暗无天日 管道中的变量去哪了?——子 shell 作用域陷阱 - 暗无天日 开源包装器的信任陷阱:四个危险信号 - 暗无天日 程序员愿意为 AI 写文档,却不愿为同事写 - 暗无天日 mktemp: Shell 脚本中临时文件的安全陷阱与最佳实践 - 暗无天日 WSL9x —— 在 Windows 9x 里跑 Linux 内核 6.19 用 ox.el 做你想做的事 —— org-export 高级编程指南 读:Hot-wiring the Lisp Machine —— 用纯 Elisp 构建零依赖的 Org 静态站点生成器 Elisp 性能优化的六个实战教训 - 暗无天日 fcitx5 下 Emacs 无法切换输入法的排查 - 暗无天日 ERT 测试交互命令的三种方式 - 暗无天日 SEM Assistant: 当 Elisp 守护进程遇上 LLM 用 dmsg 给 Elisp 加上结构化调试日志 用 org-habit 追踪非每日习惯 - 暗无天日 Clojure X-Men:当编程语言特性变成超能力 - 暗无天日 TIL: 用 diff-hl 在 fringe 中显示 git 变更 读:llm-test —— 用 LLM agent 驱动 Emacs 测试 TIL: AI 时代的橡皮鸭调试 - 暗无天日 fcitx 启动后键盘输入卡顿的排查 - 暗无天日 TIL: 早期网页的图片热区导航 - 暗无天日 读 Seeing the Whole System 用 Emacs 自动生成每周链接推荐 - 暗无天日 读:ASCII control characters in my terminal 读 What to learn - 暗无天日 Lisp 的括号之痛——一个愚人节玩笑揭开的老伤疤 - 暗无天日 一本书该"线性读"还是"并行读" - 暗无天日 读 How to Monetize a Blog:一篇伪装成变现指南的讽刺文 Python Mock 第三方依赖的四种策略 - 暗无天日 Emacs Lisp 热重载实用指南 - 暗无天日 Prot 的 Emacs 配置哲学 - 暗无天日 TIL: 从直播对谈中学到的三个 Emacs 技巧 - 暗无天日 TIL: 自动使用项目虚拟环境的 Python - 暗无天日 TIL: 让 Help buffer 自动获得焦点 一条命令让本地开发用上 HTTPS —— slim 工具介绍 用 fsck 检查和修复 Linux 文件系统 排查Linux进程"卡死"实战:从strace到gdb全流程 - 暗无天日 PostgreSQL 索引:从基础到你可能不知道的高级用法 - 暗无天日 用 .pdbrc 自定义 Python 调试器 ANSI 转义码的标准化现状 - 暗无天日 终端程序的潜规则 - 暗无天日 PARA Org-mode 测试配置 - 暗无天日 AI越强越辣鸡?控制论说这是必然的 - 暗无天日 AI 越强越需要你盯着——反馈循环实操指南 - 暗无天日 你的AI代理正在偷你的密钥——四种你没想到的泄露通道 - 暗无天日 LLM 在 DevOps 中的三种角色 - 暗无天日 写作风格的反建议 - 暗无天日 反驳本质复杂性——Dan Luu 论为什么《没有银弹》错了 - 暗无天日 文件充满了危险——Dan Luu 谈文件系统的可靠性陷阱 - 暗无天日 AI 时代的 PARA 方法:用 Org-mode 和 AI 打造个人知识管理系统 Linux 数据去重学习笔记 - 暗无天日 创建跨平台 ZIP 文件的隐藏陷阱:Extra Field - 暗无天日 X11 Forwarding 排障指南 - 暗无天日 IP欺骗端口扫描:当别人冒充你去扫描别人 - 暗无天日 Linux 输入栈全景解析:从硬件按键到屏幕响应 - 暗无天日 Unix 系统中那些被埋没的配置开关——以 FontConfig 为例 - 暗无天日 在Linux上限制儿童使用电脑 - 暗无天日 GIF不仅仅是一种图片格式——用GIF流做些奇怪的事 - 暗无天日 Leiningen 学习笔记:Clojure 项目构建与管理从入门到实战配置 - 暗无天日 Google SRE Book 读书笔记 - 暗无天日 yes 管道 head 发生了什么 - 暗无天日 为什么 nohup 在 crontab 中不起作用 Bash中的Indirection与Nameref - 暗无天日 Linux PAM 简介 - 暗无天日 从Linux ISO文件启动计算机 - 暗无天日 用 Bash 打造一个Screen Locker 用GitHub Actions自动构建EGO博客 - 暗无天日 blocking I/O 的作用 - 暗无天日 mobileog 手机端同步提示Error:2 No such file 的解决方法 回收 WSL2 VHDX 文件占用空间 使用 org-mode columnview 生成任务列表 - 暗无天日 Emacs 作为 MPD 客户端 - 暗无天日 移动文件路径却不破坏org file link的方法 - 暗无天日 如何合理的导出help link 成HTML - 暗无天日 笑话理解之Biology - 暗无天日
读:Security-First CI/CD —— DevSecOps 自动化实践指南
2026-04-30 · via 暗无天日

本文是 DZone 2026 Trend Report 中一篇 DevSecOps 实践指南的读后笔记。原文按流水线从前往后的顺序,介绍了安全 CI/CD 的五个关键阶段:先定基线和风险等级,再把安全检查左移到开发早期,用代码化的策略自动拦截违规配置,通过软件物料清单看清依赖链,最后用零信任和 AI 修复加固整条流水线。

基线:风险分级与 KPI

安全 CI/CD 流水线的底层逻辑很简单:尽早扫描、保护访问、管好密钥、检查基础设施、降低供应链风险、在发布前强制执行控制。一条典型的路径是 开发(快速反馈)→ 预发布(更广的验证和发布检查)→ 生产(最强的门控)。

门控(gate)就是代码进入下一个阶段之前必须通过的自动检查,像安检门一样,不通过就拦下来,不让继续往前走。生产环境是真实用户在用,所以门控最严。

关键在于按风险分级设置门控强度。高风险变更(生产部署、基础设施变更、依赖更新、权限变更)走更强的门控,常规工作保持轻量快速。这样才能兼顾速度和安全性。

原文给出了一套 KPI 体系,覆盖效率、质量、安全、流水线健康四个维度:

KPI 类别 指标 含义
效率 构建时间 流水线完成一次构建的平均时间
效率 部署频率 新代码发布到生产的频率
质量 变更失败率 部署失败需要回滚或热修复的比例
质量 代码覆盖率 自动化测试覆盖的代码比例
安全 密钥暴露事件 在提交或流水线检查中发现密钥的次数
安全 漏洞检测率 自动扫描发现的安全问题数量
健康 流水线成功率 流水线运行成功的比例
健康 平均修复时间 修复已检测安全问题的平均时间

Stage 1:左移扫描,但不制造噪音

左移(Shift Left)的意思是把安全检查尽可能往开发流程的前端移。扫描对象包括源码、第三方依赖、密钥和凭证、容器镜像、基础设施即代码(IaC)模板、运行中的应用、流水线配置文件。

全量扫描 ~ 和 ~ 快速反馈 之间存在矛盾。原文给出的解法是 PR 和主分支采用差异化扫描策略:

  • PR 扫描:只跑核心检查(密钥、代码、依赖、基础 IaC),目标是快速反馈,不阻塞合并
  • 主分支扫描:加全量依赖扫描、容器镜像扫描、流水线文件检查,有时加 DAST(动态应用安全测试)

还有个容易被忽略的问题:噪音。如果流水线报告太多 findings,团队会开始忽视它们。解决方法是只阻塞最明确、最严重的问题,低风险 finding 留到后续审查。已批准的例外和简单的审查规则也能防止同一个已知问题反复失败。

Stage 2:策略即代码(Policy-as-Code)

Open Policy Agent(OPA)在这里扮演中央策略引擎的角色,在部署之前检查 Terraform 计划、Kubernetes 清单等配置,确保只有合规的变更能继续往前走。

Terraform 是管理云基础设施的工具,Terraform 计划就是 terraform plan 命令生成的变更预览,列出了将要创建、修改或删除的云资源(比如 AWS 上的 S3 存储桶、虚拟机等)。OPA 在部署前审查这个计划,拦截不安全的配置。

OPA 策略通常覆盖四类规则:

  1. 依赖风险 :阻止包含已知严重漏洞或来自不可信源的包
  2. 许可证规则 :识别项目或公司不允许的依赖许可证
  3. 密钥保护 :防止 token、密码、密钥、证书在流水线中流通
  4. 部署和环境规则 :控制应用可以部署到哪里、允许哪些基础镜像、需要哪些安全设置

原文给了一个 Rego 策略示例,阻止创建公开访问的 AWS S3 bucket:

package terraform.security

# 如果任何 S3 bucket 的 'public' 被设为 true,则拒绝
deny[msg] {
    # 遍历 Terraform 计划中的所有资源变更
    resource := input.resource_changes[_]
    resource.type == "aws_s3_bucket"

    # 检查公开访问设置是否被启用
    resource.change.after.public == true

    msg = sprintf("安全违规:S3 bucket %s 不允许设为公开。", [resource.address])
}

这个策略的使用方式是把 Terraform 计划转成 JSON,然后交给 OPA 评估:

terraform plan -out=tfplan

terraform show -json tfplan > tfplan.json

opa eval --input tfplan.json --data policy.rego "data.terraform.security.deny" --fail-defined

当策略违规被检测到时, opa eval --fail-defined 返回非零退出码,流水线自动失败。

策略本身也需要治理:放在版本控制中、在 PR 中审查变更、记录审批人。例外必须包含明确理由和截止日期,不能永不过期。

Stage 3:SBOM,知道你的软件里有什么

SBOM(Software Bill of Materials,软件物料清单)是 DevSecOps 的核心实践。它的价值在于:

  • 看清直接依赖和传递依赖
  • 提高供应链可追溯性
  • 出现严重漏洞时能快速定位影响范围
  • 增强合规和审计准备

SBOM 通常在构建阶段生成,随构建产物一起保存,并发送到安全平台做持续检查。同时还要保存 构建证据 ,证明产物来自可信流程,事后未被篡改。

原文给出了一个 CycloneDX 格式的 SBOM 示例,展示了策略检查时会评估的数据结构:组件名、版本、purl(包 URL)、哈希值、许可证信息。

在 SBOM 上可以加安全门控:阻止包含被禁许可证或高危漏洞的组件;阻止未知或未签名的产物;检查 drift,即产物、镜像或依赖是否偏离了最初批准或构建的状态。

Stage 4:零信任,不信任流水线中的任何部分

把零信任应用到 CI/CD 意味着:默认不信任流水线的任何部分,不管是代码、用户还是构建 agent。不依赖网络边界,而是持续验证每一次访问和每一个操作。

具体做法从 用短期身份替代长期密钥 开始(比如 OIDC)。每个流水线阶段只拥有它需要的权限(最小权限原则),runner 与环境的其他部分隔离,尽量使用短期 runner。

密钥和部署权限需要持续管理:定期轮换密钥,人员角色变更或离开团队时审查部署权限。只有受信任的镜像和构建产物才能往前走,不安全的配置、未批准的组件、有风险的构建被策略直接阻断。每次部署都要保留清晰的审计记录:谁触发了部署、什么时候、涉及哪个提交和产物。

Stage 5:安全的 AI 自动修复

这是原文最具前瞻性的部分。把 AI agent 引入 DevSecOps 流水线,修复工作从手动、被动变成自动、主动。AI agent 可以扫描代码变更、识别风险模式、排定优先级,然后建议甚至直接应用修复。

但 AI 驱动修复也引入新风险:目标劫持(goal hijacking)、中毒记忆(poisoned memory)、被操纵的上下文。OWASP Agentic Security Initiative(ASI)和 AI Security Verification Standard(AISVS)提供了安全使用 AI agent 的指导框架。

一个关键概念是 Least Agency (最小自主权):agent 只应该拥有完成任务所需的最小自主权。在实践中,这通常意味着 agent 准备 修复方案,然后走正常的 review 流程再合入,而不是直接自动提交。

还需要区分"什么可以自动修"和"什么必须人工审":

可以自动修复 必须人工审查
小范围依赖更新、版本提升 访问控制变更
简单配置修复 安全策略变更
遵循已知模式的代码修复(低风险、范围明确) 生产部署逻辑
  共享基础设施
  关键业务代码

回滚和隔离也同样重要。如果 agent 做了一个有问题的修复,必须能停止发布、回退变更、快速回到上一个良好状态。追踪是哪个 agent 操作导致的变更,限制自动化变更可以走多远。

量子安全加密

原文还有一节讲量子安全加密:不是说现在就要把所有加密算法都换掉,而是先摸清家底,搞清楚代码、库、容器、平台设置中哪些地方用了加密,跟踪哪些算法是批准的,用策略检查阻止弱算法,维护一份以后需要更新的系统清单。这事对长期数据保护、密钥交换和数字签名最重要。

可观测性

流水线安全应该是可度量的。有用的指标包括策略检查失败频率、生产前拦截了多少严重漏洞、修复时间、例外数量。自动保存日志、SBOM 记录、构建产物详情、策略审批、例外记录,这些在审计和事件响应时都是关键证据。

小结

这篇指南把 DevSecOps 描述为一个从"检测"到"执行"的演进,不只是发现问题,而是用策略门控、流水线保护、更快更精准的响应来系统性地解决问题。2026 年的趋势是 AI 修复、短期身份、供应链策略门控、以及把流水线本身作为攻击面来保护。AI agent 安全、可审计性和人工审批正在成为标准要求,不是因为 AI 不可靠,而是因为安全流水线 必须 可追溯、可回滚、可问责。