ekaumoh/devsecops-azure-pipeline

GitHub: ekaumoh/devsecops-azure-pipeline

一个在 Azure 上实现左移安全扫描与自动阻断的 DevSecOps 流水线示例。

Stars: 1 | Forks: 0

# DevSecOps Azure Pipeline 一个左移安全流水线,在资源部署到 Azure 之前自动扫描 Terraform 基础设施代码中的错误配置。 ## 功能说明 对 `main` 分支的每一次拉取请求都会触发自动的 Checkov 安全扫描。如果 Terraform 代码违反安全策略,流水线会失败并阻止合并。实现安全代码合并,不安全代码无法合并。 ## 架构 开发者推送代码 → GitHub Actions 触发 Checkov 扫描 → Checkov 依据 CIS/NIST 控制项验证 Terraform → 通过:允许合并,Terraform 部署到 Azure | 不通过:合并被阻止,开发者必须先修复问题 ## 强制执行的安全控制 | 控制项 | 实现方式 | |---|---| | 禁止公共 Blob 访问 | allow_nested_items_to_be_public = false | | 仅 HTTPS 访问 | https_traffic_only_enabled = true | | 最低 TLS 1.2 | min_tls_version = "TLS1_2" | | 禁用公共网络访问 | public_network_access_enabled = false | | 禁用共享密钥认证 | shared_access_key_enabled = false | | SAS 令牌过期策略 | 1 小时过期窗口 | | Blob 软删除 | 7 天保留策略 | | 队列服务日志 | 完整的读/写/删除审计日志 | ## 技术栈 - **Terraform** — 用于 Azure 资源编排的基础设施即代码 - **Checkov** — 静态 IaC 安全扫描器(CIS/NIST 基准检查) - **GitHub Actions** — CI/CD 流水线自动化 - **Azure** — 目标云环境(存储账户、资源组) - **分支保护规则** — 对 main 分支强制合并检查 ## 流水线实际运行 本仓库中的 `test/insecure-config` 分支演示了安全门的工作机制 — 一个启用了公共 Blob 访问的存储账户无法通过 Checkov 扫描,因此被阻止合并到 `main`。 ## 项目状态 - [x] 具备安全控制的 Terraform IaC - [x] 本地 Checkov 扫描(11 项通过,3 项故意软失败) - [x] 推送与拉取请求触发的 GitHub Actions 流水线 - [x] 强制执行 Checkov 通过的分支保护 - [ ] 通过服务主体进行 Azure 部署(进行中) - [ ] Microsoft Defender for Cloud 集成 - [ ] Microsoft Sentinel 分析规则
标签:Anthropic, Azure, Blob存储, CIS基准, DevSecOps, EC2, ECS, GitHub Actions, HTTPS, IaC, NIST, PR安全门禁, SAS令牌, Shift-left安全, Streamlit, Terraform, TLS1.2, 上游代理, 代码即安全, 公有云安全, 共享密钥禁用, 分支保护, 合并策略, 存储账户安全, 安全合规, 安全扫描, 安全管道, 时序注入, 最小权限, 网络代理, 网络安全, 自动化安全治理, 自动笔记, 访问控制, 软删除, 错误基检测, 隐私保护, 静态代码分析