保护 Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines 提出了不同的安全挑战。 虽然管道允许你执行脚本或将代码部署到生产环境,但防止它们成为恶意代码的管道至关重要。 与开发团队所需的灵活性和能力平衡安全性至关重要。
注意
Azure Pipelines 是 Azure DevOps Services 套件的一部分,全部构建在 Azure 中的安全基础结构之上。 若要全面了解所有 Azure DevOps Services 的安全概念,建议查看以下资源:
传统上,组织通过严格的锁定强制实施安全性。 代码、管道和生产环境面临严重的访问限制。 虽然此方法在具有有限用户和项目的小型组织中工作良好,但大型组织面临着不同的现实。 由于许多参与者有权访问代码,“假设违规”原则变得至关重要。 它涉及到操作,仿佛对手拥有对存储库的参与者访问权限,这需要增强警惕。
若要实现安全目标,请考虑以下几点:
防止恶意代码执行:
- 确保管道配置为防止未经授权的恶意代码执行,其中包括以下任务:
- 限制对敏感机密和凭据的访问。
- 验证输入参数和参数以防止意外行为。
- 定期查看和审核管道脚本,了解潜在的安全风险。
- 实现以下安全做法:
- 在脚本中使用参数化查询来防止 SQL 注入。
- 转义参数中的特殊字符以避免 shell 命令注入。
- 限制管道服务连接的权限。
- 请考虑使用 YAML 管道,该管道可对执行提供精细的控制,并且不太容易出现安全风险。
- 确保管道配置为防止未经授权的恶意代码执行,其中包括以下任务:
缓解横向曝光:
- 隔离管道,防止组织项目和存储库内的横向移动。
- 仅限制对每个管道所需的存储库和资源的访问权限。
- 监视管道活动并设置可疑行为的警报。
- 查看和更新权限,以尽量减少定期公开。
使用 YAML 管道:
安全性是一个持续的过程,定期评估和更新至关重要。 YAML 管道为 Azure Pipelines 提供最佳安全性。
以下文章概述了有助于开发基于 YAML 的安全管道的建议: