你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

DevOps 资源的安全建议

本文列出了在使用“环境设置”页连接 Azure DevOpsGitHubGitLab 环境时,Microsoft Defender for Cloud 中可能看到的建议。 环境中显示的建议基于要保护的资源和自定义配置。

若要了解可以针对这些建议采取的操作,请参阅 Defender for Cloud 修正建议

详细了解 DevOps 安全性的优点和功能。

DevOps 建议不会影响 安全评分。 要确定要首先解决的建议,请查看每条建议的严重级别及其对安全评分的潜在影响。

Azure DevOps 建议

Azure DevOps 存储库应为 Azure DevOps (GHAzDO) 启用 GitHub Advanced Security

说明:Defender for Cloud 中的 DevOps 安全性使用中央控制台,使安全团队能够在 Azure DevOps 中将应用程序和资源从代码保护到云。 通过启用适用于 Azure DevOps 的 GitHub 高级安全性(GHAzDO)存储库(包括 GitHub Advanced Security for Azure DevOps),可以获取有关 Azure DevOps 存储库中显示在 Microsoft Defender for Cloud 中的机密、依赖项和代码漏洞的发现。

严重性:高

Azure DevOps 存储库应处理机密扫描结果

说明:在代码存储库中找到机密。 立即修正以防止安全漏洞。 在存储库中找到的机密可能会泄露,或被攻击者发现,从而导致应用程序或服务遭到入侵。 Microsoft安全 DevOps 凭据扫描工具仅扫描配置为运行其版本。 因此,结果可能无法反映存储库中机密的完整状态。

严重性:高

Azure DevOps 存储库应处理代码扫描结果

说明:代码存储库中发现了漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。

严重性:中等

Azure DevOps 存储库应处理依赖项漏洞扫描结果

说明:在代码存储库中找到的依赖项漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。

严重性:中等

Azure DevOps 存储库应处理基础结构即代码扫描结果

说明:在存储库中找到基础结构即代码安全配置问题。 模板文件中检测到这些问题。 若要改善相关云资源的安全状况,强烈建议修复这些问题。

严重性:中等

Azure DevOps 管道不应有可用于生成分叉的机密

说明:在公共存储库中,组织外部的人员有可能在分叉存储库中创建分支并运行生成。 在这种情况下,如果启用此设置,外部人员可以访问内部的生成管道机密。

严重性:高

Azure DevOps 服务连接不应该授予对所有管道的访问权限

说明:服务连接用于创建从 Azure Pipelines 到外部和远程服务的连接,以便在作业中执行任务。 管道权限控制哪些管道有权使用服务连接。 为了支持管道操作的安全性,不应该向服务连接授予对所有 YAML 管道的访问权限。 这有助于维护最低特权原则,因为攻击者可以使用一个管道使用的组件中的漏洞攻击有权访问关键资源的其他管道。

严重性:高

Azure DevOps 安全文件不应该授予对所有管道的访问权限

说明:安全文件为开发人员提供了一种存储可在管道之间共享的文件的方法。 这些文件通常用于存储机密,例如签名证书和 SSH 密钥。 如果向安全文件授予对所有 YAML 管道的访问权限,则未经授权的用户可以通过生成 YAML 管道并访问安全文件来窃取安全文件中的信息。

严重性:高

具有机密变量的 Azure DevOps 变量组不应该授予对所有管道的访问权限

说明:变量组存储可能需要传递到 YAML 管道中的值和机密,或跨多个管道提供这些值和机密。 可以在同一项目中的多个管道中共享和使用变量组。 如果包含机密的变量组被标记为可供所有 YAML 管道访问,则攻击者可以通过创建新管道来利用涉及机密变量的资产。

严重性:高

Azure DevOps 经典 Azure 服务连接不应该用于访问订阅

说明:使用 Azure 资源管理器 (ARM) 类型的服务连接而不是 Azure 经典服务连接连接到 Azure 订阅。 ARM 提供多种安全增强功能,例如更强的访问控制、改进的审核、基于 ARM 的部署/治理、托管标识访问权限和用于提供机密的密钥保管库的访问权限、基于 Entra 权限的身份验证以及可简化管理的标记和资源组支持。

严重性:中等

(预览版)Azure DevOps 存储库应已解析 API 安全测试发现

说明:在代码存储库中找到的 API 安全漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。

严重性:中等

(预览版)Azure DevOps 存储库应要求对代码推送进行至少两个审阅者批准

说明:若要防止直接提交意外或恶意更改,请务必为 Azure DevOps 存储库中的默认分支实施保护策略。 建议在代码与默认分支合并之前,至少需要两个代码审阅者批准拉取请求。 通过要求至少两名审阅者批准,可以降低未经授权的修改的风险,这可能导致系统不稳定或安全漏洞。

如果已将 Azure DevOps 连接到 Defender for Cloud,则此建议在 Defender for Cloud 基础安全状况中提供。

严重性:高

(预览版)Azure DevOps 存储库不应允许请求者批准其自己的拉取请求

说明:若要防止直接提交意外或恶意更改,请务必为 Azure DevOps 存储库中的默认分支实施保护策略。 我们建议禁止拉取请求创建者批准自己的提交,以确保每个更改都由作者以外的其他人进行客观审查。 通过执行此操作,可以降低未经授权的修改的风险,这可能导致系统不稳定或安全漏洞。

如果已将 Azure DevOps 连接到 Defender for Cloud,则此建议在 Defender for Cloud 基础安全状况中提供。

严重性:高

(预览版)Azure DevOps 项目应禁用经典管道的创建

说明:禁用经典生成和发布管道的创建可防止安全考虑源自 YAML 和经典管道共享同一资源,例如同一服务连接。 潜在攻击者可以利用经典管道来创建绕过新式 YAML 管道设置的典型防御机制的进程。

严重性:高

GitHub 建议

GitHub 组织不应让所有存储库都可以访问操作机密

说明:对于存储在 GitHub 组织级别的 GitHub Action 工作流中使用的机密,可以使用访问策略来控制哪些存储库可以使用组织机密。 组织级机密可让你在多个存储库之间共享机密。 这减少了创建重复机密的需求。 但是,在存储库可以访问机密后,对存储库具有写入访问权限的任何人都可以从工作流中的任何分支访问机密。 若要减少攻击面,请确保只能从所选存储库访问机密。

如果已将 Azure DevOps 连接到 Defender for Cloud,则此建议在 Defender for Cloud 基础安全状况中提供。

严重性:高

GitHub 存储库应启用机密扫描

说明:GitHub 扫描存储库中已知类型的机密,以防止对意外提交到存储库的机密的欺诈性使用。 机密扫描将扫描 GitHub 存储库中存在的所有分支上的整个 Git 历史记录,以查找任何机密。 机密的示例包括服务提供程序为进行身份验证而颁发的令牌和私钥。 如果将机密签入存储库,任何对存储库具有读取权限的人都可以使用该机密和这些权限访问外部服务。 机密应存储在项目存储库外部的专用、安全位置。

严重性:高

GitHub 存储库应启用代码扫描

说明:GitHub 使用代码扫描分析代码,以便查找代码中的安全漏洞和错误。 代码扫描可用于查找、会审和优先排列代码中现有问题的修复。 代码扫描还可防止开发人员引入新问题。 扫描可安排在特定的日期和时间,也可以在存储库中发生特定事件(例如推送)时触发。 如果代码扫描发现代码中的潜在漏洞或错误,GitHub 会在存储库中显示警报。 漏洞是项目代码中的问题,可能被人利用来损害项目的机密性、完整性或可用性。

严重性:中等

GitHub 存储库应启用 Dependabot 扫描

说明:GitHub 在检测到影响存储库的代码依赖项中的漏洞时发送 Dependabot 警报。 漏洞是项目代码中的问题,可能被利用来损害机密性、完整性或者该项目或其他使用其代码的项目的可用性。 漏洞的类型、严重性和攻击方法各不相同。 代码依赖于具有安全性漏洞的包时,这种易受攻击的依赖项会导致一系列问题。

严重性:中等

GitHub 存储库应处理机密扫描结果

说明:在代码存储库中找到的机密。 应立即修正此问题以防止安全漏洞。 在存储库中发现的机密可能会被泄露或被攻击者发现,导致应用程序或服务遭到入侵。

严重性:高

GitHub 存储库应处理代码扫描结果

说明:在代码存储库中找到的漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。

严重性:中等

GitHub 存储库应处理依赖项漏洞扫描结果

说明:GitHub 存储库应已解决依赖项漏洞扫描发现。

严重性:中等

GitHub 存储库应处理基础结构即代码扫描结果

说明:存储库中发现了基础结构即代码安全配置问题。 模板文件中检测到这些问题。 若要改善相关云资源的安全状况,强烈建议修复这些问题。

严重性:中等

GitHub 存储库应该为默认分支启用保护策略

说明:应通过分支保护策略保护存储库的默认分支,以防止意外/恶意更改直接提交到存储库。

严重性:高

GitHub 存储库应该禁用强制推送到默认分支

说明:由于默认分支通常用于部署和其他特权活动,因此应谨慎处理对它所做的任何更改。 启用强制推送可能会对默认分支引入意外或恶意更改。

严重性:中等

GitHub 组织应该启用机密扫描推送保护

说明:推送保护将阻止包含机密的提交,从而防止意外泄露机密。 为了避免凭据泄露的风险,应该为每个已启用机密扫描的存储库自动启用推送保护。

严重性:高

GitHub 存储库不应该使用自承载运行程序

说明:GitHub 上的自承载运行程序缺乏在临时清理虚拟机中操作的保证,并且工作流中的不受信任的代码可能会持续受到威胁。 因此,不应将自承载运行程序用于操作工作流。

严重性:高

GitHub 组织应该将操作工作流权限设置为只读

说明:默认情况下,应向操作工作流授予只读权限,以防止恶意用户利用过度权限的工作流来访问和篡改资源。

严重性:高

GitHub 组织应该让不止一个人拥有管理员权限

说明:至少有两个管理员可降低失去管理员访问权限的风险。 在破窗帐户场景中,这非常有用。

严重性:高

GitHub 组织应将基本权限设置为无权限或读取

说明:应将基本权限设置为“无”或“读取”,以便组织遵循最低特权原则并防止不必要的访问。

严重性:高

(预览版)GitHub 存储库应处理 API 安全测试结果

说明:在代码存储库中找到 API 安全漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。

严重性:中等

(预览版)GitHub 组织不应使操作机密可供所有存储库访问

说明:对于存储在 GitHub 组织级别的 GitHub Action 工作流中使用的机密,可以使用访问策略来控制哪些存储库可以使用组织机密。 组织级机密允许在多个存储库之间共享机密,从而减少创建重复机密的需求。 但是,当存储库可以访问机密时,对存储库具有写入访问权限的任何人都可以从工作流中的任何分支访问机密。 若要减少攻击面,请确保只能从所选存储库访问机密。

严重性:高

(预览版)GitHub 组织应阻止与公共代码匹配的 Copilot 建议

说明:启用 GitHub Copilot 的筛选器以阻止与 GitHub 上的公共代码匹配的代码建议,从而提高安全性和法律合规性。 它防止无意中合并公共或开源代码,降低法律问题的风险,并确保遵守许可条款。 此外,它还有助于避免将公共代码的潜在漏洞引入组织的项目中,从而保持更高的代码质量和安全性。 启用筛选器后,GitHub Copilot 会根据 GitHub 上的公共代码检查代码建议及其周围代码约 150 个字符。 如果存在匹配或接近匹配,将不会显示建议。

严重性:高

(预览版)GitHub 组织应为外部协作者强制实施多重身份验证

说明:对 GitHub 组织中外部协作者强制实施多重身份验证是一种安全措施,它要求协作者除了使用密码之外的其他标识形式来访问组织的存储库和资源。 这通过防范未经授权的访问来增强安全性,即使密码遭到入侵,也有助于确保符合行业标准。 它涉及通知协作者有关转换的要求和提供支持,最终降低了数据泄露的风险。

严重性:高

(预览版)GitHub 存储库应要求对代码推送进行至少两个审阅者批准

说明:若要防止直接提交意外或恶意更改,请务必为 GitHub 存储库中的默认分支实施保护策略。 建议在代码与默认分支合并之前,至少需要两个代码审阅者批准拉取请求。 通过要求至少两名审阅者批准,可以降低未经授权的修改的风险,这可能导致系统不稳定或安全漏洞。

严重性:高

GitLab 建议

GitLab 项目应处理机密扫描结果

说明:在代码存储库中找到机密。 应立即修正此问题以防止安全漏洞。 在存储库中发现的机密可能会被泄露或被攻击者发现,导致应用程序或服务遭到入侵。

严重性:高

GitLab 项目应处理代码扫描结果

说明:代码存储库中发现了漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。

严重性:中等

GitLab 项目应处理依赖项漏洞扫描结果

说明:GitHub 存储库应已解决依赖项漏洞扫描发现。

严重性:中等

GitLab 项目应处理基础结构即代码扫描结果

说明:存储库中发现了基础结构即代码安全配置问题。 模板文件中检测到显示的问题。 若要改善相关云资源的安全状况,强烈建议修复这些问题。

严重性:中等

弃用的 DevOps 安全建议

代码存储库应处理代码扫描结果

说明:Defender for Cloud 中的 DevOps 安全性在代码存储库中发现了漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。 (无相关策略)

严重性:中等

代码存储库应处理机密扫描结果

说明:Defender for Cloud 中的 DevOps 安全性在代码存储库中找到了机密。 应立即修正此问题以防止安全漏洞。 在存储库中发现的机密可能会被泄露或被攻击者发现,导致应用程序或服务遭到入侵。 对于 Azure DevOps,Microsoft Security DevOps CredScan 工具仅扫描它配置为运行的生成。 因此,结果可能无法反映存储库中机密的完整状态。 (无相关策略)

严重性:高

代码存储库应处理 Dependabot 扫描结果

说明:Defender for Cloud 中的 DevOps 安全性在代码存储库中发现了漏洞。 若要改善存储库的安全状况,强烈建议修复这些漏洞。 (无相关策略)

严重性:中等

与处理代码扫描结果一样,代码存储库应处理基础结构调查结果

说明:Defender for Cloud 中的 DevOps 安全性已发现基础结构作为存储库中的代码安全配置问题。 模板文件中检测到显示的问题。 若要改善相关云资源的安全状况,强烈建议修复这些问题。 (无相关策略)

严重性:中等

GitHub 存储库应启用代码扫描

说明:GitHub 使用代码扫描分析代码,以便查找代码中的安全漏洞和错误。 代码扫描可用于查找、会审和优先排列代码中现有问题的修复。 代码扫描还可防止开发人员引入新问题。 扫描可安排在特定的日期和时间,也可以在存储库中发生特定事件(例如推送)时触发。 如果代码扫描发现代码中的潜在漏洞或错误,GitHub 会在存储库中显示警报。 漏洞是项目代码中的问题,可能被人利用来损害项目的机密性、完整性或可用性。 (无相关策略)

严重性:中等

GitHub 存储库应启用机密扫描

说明:GitHub 扫描存储库中已知类型的机密,以防止对意外提交到存储库的机密的欺诈性使用。 机密扫描将扫描 GitHub 存储库中存在的所有分支上的整个 Git 历史记录,以查找任何机密。 机密的示例包括服务提供程序为进行身份验证而颁发的令牌和私钥。 如果将机密签入存储库,任何对存储库具有读取权限的人都可以使用该机密和这些权限访问外部服务。 机密应存储在项目存储库外部的专用、安全位置。 (无相关策略)

严重性:高

GitHub 存储库应启用 Dependabot 扫描

说明:GitHub 在检测到影响存储库的代码依赖项中的漏洞时发送 Dependabot 警报。 漏洞是项目代码中的问题,可能被利用来损害机密性、完整性或者该项目或其他使用其代码的项目的可用性。 漏洞的类型、严重性和攻击方法各不相同。 代码依赖于具有安全性漏洞的包时,这种易受攻击的依赖项会导致一系列问题。 (无相关策略)

严重性:中等