Microsoft AZ-400: 安全、合规性与 DevSecOps — 学习指南
属于 Microsoft DevOps Engineer Expert AZ-400 — 学习指南. 使用经过验证的答案练习: Microsoft 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
在以 Azure 为中心的交付流水线中,安全性、合规性与 DevSecOps 要求将风险检测尽可能地左移,持续地强制执行策略,并自动化地收集证据。有效的实施方案会将应用程序安全测试(SAST/DAST/SCA)、机密治理、基础设施即代码(IaC)扫描以及监管控制统一集成到 CI/CD 生命周期中。在 Azure DevOps 和 GitHub 中,这意味着在每个拉取请求上运行分析器,通过质量阈值控制合并,使用从 Azure Key Vault 检索限时机密的最小权限标识进行部署,并利用 Microsoft Defender for DevOps 和 Defender for Cloud 持续监控安全态势。其目标不仅是发现问题,更是为了防止不安全的变更触及受保护的资源,通过审计追踪证明合规性,并保持安全的高速交付。
安全左移、OWASP Top 10 缓解措施与流水线加固
安全左移始于 PR 阶段的 SAST 和 SCA,并在发布前通过机密扫描和有针对性的 DAST 进行增强。SAST 能揭示代码级别的漏洞,例如注入点、不安全的反序列化器以及缺失的输出编码。集成 SonarQube/SonarCloud 或 GitHub code scanning(例如 CodeQL)来分析每个变更集;用关联到特定代码行的问题来装饰拉取请求;并强制执行质量门禁,当漏洞或覆盖率阈值未满足时,构建将失败。SAST 应重点关注 OWASP Top 10 类别:
- 注入:强制使用参数化查询/ORM,验证/规范化输入,并禁止动态 SQL/字符串拼接。通过 SAST 规则集和断言使用了经审查的数据访问辅助工具的单元测试来强制执行。
- 跨站脚本(XSS):要求输出编码和内容安全策略(Content Security Policy)。SAST 的污点分析应追踪不受信任的输入到接收器(sinks,如 innerHTML, Response.Write)的路径。
- 跨站请求伪造(CSRF):强制使用反伪造令牌和 SameSite Cookie。流水线可以运行框架分析器来断言相关中间件/设置已启用。
- 不安全的反序列化:禁止不安全的二进制/XML 序列化器,限制允许的类型,并优先选择配置了安全默认值的 JSON 序列化器。SAST 检查和依赖项策略可防止使用已知的非安全库。
DAST 在预演(staging)环境中验证运行中的构建。将 OWASP ZAP 或等效工具自动化为部署到非生产环境后的流水线作业,使用经过身份验证的扫描和针对您的应用特性调整的规则集。基于漏洞基线来控制发布:阻止包含新引入的高/危级别发现的发布,并持久化带有过期时间的已接受例外。
软件成分分析(SCA)在合并前检测易受攻击的第三方软件包。使用 Dependabot 提出版本升级的 PR,并使用 OWASP Dependency-Check 在 CI 中生成 SBOM 和 CVE 报告。通过定义允许/拒绝列表(例如,对于专有产品拒绝 copyleft 许可证)来强制执行许可证合规性,并在构建包含不允许的许可证时使其失败。机密扫描必须在提交时和 CI 过程中运行:采用 GitHub Advanced Security 的机密扫描功能,或集成 Gitleaks/Microsoft Security DevOps 来捕获硬编码的凭据、令牌和密钥;当检测到机密模式时阻止合并,并轮换受影响的凭据。
流水线加固是不可协商的。锁定分支保护,要求 PR 审查,并为 SAST/SCA/DAST 强制执行状态检查。在 Azure Pipelines 中,使用受保护的资源、环境审批和检查,以及必需的模板来标准化安全阶段。优先使用短期的、最小权限的令牌;通过工作负载标识联合完全避免使用静态凭据。将自托管代理限制在私有网络中,最小化其标识范围,并通过强制执行禁止不受信任的存储库执行任意脚本步骤的模板来禁用脚本注入。
机密、标识、Azure Key Vault 与证书轮换
Azure Key Vault 是机密、密钥和证书的权威存储。将其直接与 CI/CD 集成以消除明文机密:
- 流水线机密:在 Azure DevOps 中,使用范围仅限于所需机密名称的服务连接,将变量组链接到 Key Vault。机密在运行时检索并在日志中被屏蔽。在 GitHub Actions 中,使用带有联合标识的 azure/login 来获取令牌并调用 Key Vault;避免在存储库设置中存储客户端机密。
- 托管标识访问:只要可能,就让工作负载和部署代理使用托管标识或工作负载标识联合向 Microsoft Entra ID 进行身份验证,这样就不需要存储任何机密。遵循最小权限原则,使用 RBAC 或访问策略来限定 Key Vault 的访问范围(例如,仅对特定机密版本有 get/list 权限;没有 purge/delete 权限)。
- 证书轮换:将 TLS/MTLS 证书存储在 Key Vault Certificates 中,并通过集成的证书颁发机构(CA)实现自动轮换。配置消费服务(如 App Service、Application Gateway、通过 CSI Secrets Store 的 AKS Ingress)引用 Key Vault,以便在无需重新部署的情况下获取续订的证书。利用 Key Vault 的 certificateNearExpiry 事件通过 Event Grid 触发自动化 Runbook 或 Function,以验证绑定并预热缓存。在部署清单中跟踪证书版本的使用情况;在需要时固定版本,并在维护窗口期间有计划地向前滚动版本。
通过私有终结点、防火墙规则、清除保护、软删除以及将日志记录到 Log Analytics 或存储中以供审计,来加固 Key Vault。除非有明确的理由,否则应拒绝跨租户访问,并定期轮换用于紧急情况的“break-glass”帐户的访问权限。
依赖项、容器、IaC 与合规即代码
依赖项扫描必须同时处理安全缺陷和许可证问题。Dependabot 会持续提出安全更新建议;使用依赖项审查策略来阻止引入易受攻击版本的 PR。OWASP Dependency-Check(或生态系统原生工具,如 npm audit、pip-audit)应在 CI 中运行,以生成 SBOM(CycloneDX/SPDX),并在超出严重性阈值或违反许可证规则时使构建失败。对于高级许可证治理,可搭配能够执行法律策略和修复工作流的 SCA 平台。
容器镜像安全始于 CI,并延伸到镜像仓库和运行时:
- Trivy:作为流水线步骤运行,扫描 Dockerfile 和构建好的镜像,查找操作系统/软件包的 CVE 和错误配置;在发现“严重/高”级别问题时中断构建。强制使用最小化基础镜像和无根容器。
- Azure Container Registry 漏洞扫描:启用 Microsoft Defender for Containers,在推送/导入镜像时以及按计划扫描镜像。在 Defender for Cloud 中呈现扫描结果,将其导出为工作项,并强制执行部署门禁,以阻止包含未解决的“严重/高”级别问题的镜像。
- Defender for Containers:通过运行时威胁检测、类似 kube-bench 的检查和准入控制,将保护扩展到 AKS/ECS/Kubernetes。使用策略规定只能从受信任的、已通过 Notation/ACR 内容信任签名的 ACR 中拉取镜像,并在 CI 和集群准入时验证签名。
IaC 安全确保云资源在默认情况下被安全地预配:
- Checkov 和 tfsec:扫描 Terraform 和 Kubernetes 清单,查找不安全的配置(例如公共存储、开放的安全组、缺少加密)。在达到严重性阈值时使构建失败;对现有技术债进行基线化,以专注于新增/变更的资源。
- ARM/Bicep linting:启用 Bicep linter (bicepconfig.json) 和 ARM Template Tool Kit (arm-ttk) 来强制执行关于标记、仅 HTTPS 的终结点、客户管理的密钥和诊断设置的规则。结合 what-if 部署,在应用前检测配置漂移。
合规即代码使用 Azure Policy 和 Defender for Cloud 来持续强制执行和报告控制措施:
- 分配与 CIS、NIST、ISO 27001 或内部基线对齐的 Azure Policy 计划;选择 Deny 等效果来设置关键护栏(例如,禁止数据库使用公共 IP),选择 DeployIfNotExists 来部署诊断设置,选择 Audit 来实现可观察性。将策略定义作为版本化构件存储,通过“策略即代码”流水线进行测试,并通过拉取请求进行推广。
- 使用 Defender for Cloud 的法规遵从性仪表板,跨订阅和管理组可视化控制措施的符合性。与 Azure Monitor 集成,并将证据导出到 Log Analytics 或 Event Hubs 以便 SIEM 提取。
- 维护审计跟踪:使用 Azure Activity Logs 跟踪策略事件和分配,使用 Resource Graph 进行合规性查询,使用 Azure DevOps/GitHub 审计日志跟踪代码仓库和流水线变更,以及将流水线运行期间自动捕获的发布证据作为构件。
← 发布管理与部署策略 · 所有领域 · 测试策略与质量工程 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →