你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
DevOps 平台的安全注意事项
在 Azure DevOps 和 GitHub 等基于云的开发平台中,安全性永远是第一位的。 Microsoft 更新和维护底层云基础结构的安全性,但你可以为自己的 Azure DevOps 组织和 GitHub 实例查看和配置安全最佳做法。
无论是通过基础结构作为持续集成和持续部署 (CI/CD) 管道中的代码来部署环境,还是将代码部署到托管在 Azure 中的应用程序,请考虑以下关键安全领域。
限制对 DevOps 工具的访问
通过 Microsoft Entra ID 使用基于角色的访问控制(RBAC),遵循最低特权原则。 为用户和服务提供执行业务功能所需的对 DevOps 平台的最低访问权限。 有关详细信息,请参阅以下文章:
将 Microsoft Entra ID 建立为标识管理平面后,请遵循最佳做法,使用 Microsoft Entra 组成员身份管理 Azure DevOps 角色分配。 可以将 Azure DevOps 角色分配给 Microsoft Entra 组,并调整用户的 Microsoft Entra 成员身份以更改或删除其 Azure DevOps 访问权限。
使用 Microsoft Entra ID 权利管理 创建访问包,使 Microsoft Entra 用户对所需资源进行时间限制访问以完成其任务。
还可以使用 Microsoft Entra Privileged Identity Management 进行实时访问,以便在一段时间内将个人提升到 Azure DevOps 管理员角色。
使用 Azure DevOps 组织、项目或对象级别的安全组、策略和设置来管理 Azure DevOps 中的安全性。 如果可能,请考虑在 Azure DevOps 中禁用权限继承。
限制存储库和分支访问
限制存储库访问、权限和分支创建,以保护你的代码和环境免受意外或恶意更改。 使用 Azure DevOps 中的安全组限制对存储库的访问。 通过设置分支权限来限制谁可以读取和更新你的分支中的代码。
限制管道访问和权限
恶意代码可能会窃取企业数据和机密,并破坏生产环境。 实施防护措施以防止在管道中部署恶意代码。 通过限制访问和实现防护措施,还可以防止从任何泄露的管道中横向暴露给其他项目、管道和存储库。
考虑采用增量方法来保护你的 YAML 管道。 有关更多信息,请参阅规划如何保护你的 YAML 管道。
根据安全需求选择 DevOps 代理
可以使用 Microsoft 托管或自托管代理来支持 Azure DevOps 和 GitHub 管道。 每种类型的代理都需要权衡取舍。
使用 Microsoft 托管的代理,无需担心升级或维护。 使用自托管代理,可以更灵活地实施安全护栏。 可以控制代理硬件、操作系统和已安装的工具。
请参阅 Azure Pipelines 代理以查看代理类型之间的差异并确定潜在的安全注意事项。
使用安全和限定范围的服务连接
尽可能使用服务连接在 Azure 环境中部署基础结构或应用程序代码。 服务连接应对特定 Azure 资源或资源组的具有有限部署访问权限,以减少任何潜在的攻击面。 此外,还要考虑为开发、测试、QA 和生产环境创建单独的服务连接。
使用机密存储
永远不要在代码库中的代码或辅助文档中硬编码机密。 攻击者会通过扫描存储库来搜索暴露的机密数据以进行利用。 设置 Azure 密钥保管库等机密存储,并在 Azure Pipelines 中引用该存储以安全地检索密钥、机密或证书。 有关更多信息,请参阅保护管道和 CI/CD 工作流。 你还可以在 GitHub Actions 工作流中使用密钥保管库机密。
使用强化的 DevOps 工作站来构建和部署代码
平台和开发团队通常在 Azure 平台或其他服务(如 Azure DevOps 和 GitHub)上拥有提升的权限。 这种访问大大增加了潜在的攻击面。 实施护栏以保护你用于开发和部署代码的任何终结点和工作站。
使用强化的安全管理工作站 (SAW) 将任何更改部署到高风险和生产环境。 有关更多信息,请参阅使用零信任保护终结点。
进行安全扫描和测试
无论你是部署应用程序代码还是基础架构即代码,都应在你的管道中实施 DevSecOps 最佳做法和控制。 在 CI/CD 历程的早期集成安全性,以防止日后出现代价高昂的安全漏洞。 创建策略以在你的管道中实施静态代码分析、单元测试、秘密扫描和包/依赖项扫描。
Microsoft Defender for Cloud 等企业安全工具可以与 DevOps 工具集成。 例如,Defender for Cloud 可以识别 CI/CD 工作流中易受攻击的容器映像。 对于 GitHub Actions 和存储库,请使用 GitHub Advanced Security 进行代码和机密扫描以及依赖项审查。
定期 查看审核事件 ,以监视管理员和其他用户的意外使用模式并做出反应。 你可以访问、筛选和导出 Azure DevOps 组织的审核日志。 对于长期存储和详细的日志查询,请创建一个审计流以流式传输到 Azure Monitor Log Analytics 工作区,或者一个安全信息和事件管理 (SIEM) 系统,如 Microsoft Sentinel。