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

DevOps 工具的基于角色的访问控制

在基础结构部署中部署基于云的解决方案时,安全性应始终是重中之重。 Microsoft 确保基础云基础结构安全。 在 Azure DevOps 或 GitHub 中配置安全性。

先决条件

确定要部署的 Azure 登陆区域模板后,将其克隆到自己的存储库中。 设置 CI/CD 管道。 对于 GitHub 和 Azure DevOps,可以使用多种身份验证方法,例如个人访问令牌(PAT),并与标识提供者(如 Microsoft Entra ID)集成。 有关详细信息,请参阅使用个人访问令牌

建议与 Microsoft Entra ID 集成,以使用其所有功能。 集成有助于简化角色分配过程和标识生命周期管理。 有关详细信息,请参阅连接组织到 Microsoft Entra ID。 如果使用的是 GitHub,请考虑 将 GitHub Enterprise 与 Microsoft Entra ID 集成。

常规设计注意事项

建议在 Microsoft Entra ID 和 DevOps 工具中保持对管理员和服务帐户组的严格控制。 请考虑在所有角色分配中实现最小特权原则。

例如,组织可能设有平台或云卓越团队,其负责维护 Azure 登陆区域的 Azure 资源管理器模板。 假设你将其用作标识提供者,请将该团队中的用户分配到 Microsoft Entra ID 中的安全组。 在 DevOps 工具中向该安全组分配角色,以便这些用户可以执行其作业。

对于 Active Directory 中的任何管理员或高特权帐户,我们建议凭据不会同步到 Microsoft Entra ID,反之亦然。 此方法可减少横向移动威胁。 如果 Microsoft Entra ID 中的管理员遭到入侵,攻击者将无法轻松访问任何云资产,例如 Azure DevOps。 该帐户无法在 CI/CD 管道中注入恶意任务。 对于在 DevOps 环境中分配有提升权限的任何用户(例如生成或项目/集合管理员),此步骤尤为重要。 有关详细信息,请参阅 Microsoft Entra ID 中的安全最佳做法。

Azure DevOps 基于角色的访问注意事项

使用组织/集合、项目或对象级别的安全组、策略和设置管理 Azure DevOps 中的安全性。 若要与标识提供者(如 Microsoft Entra ID)集成,请考虑创建 条件访问策略来强制所有用户实施多重身份验证。 这些策略允许访问 Azure DevOps 组织,并对 IP 地址、用于访问的设备类型和设备合规性提供了更精细的限制。

对于平台团队中管理 Azure 登陆区域的大多数团队成员,“基本”访问级别和“参与者”默认安全组应提供足够的访问权限。 “参与者”安全组允许他们编辑存储库中的 Azure 登陆区域模板以及用于验证和部署模板的 CI/CD 管道。

建议将平台团队分配到 Azure DevOps 项目级别的“参与者”安全组。 此方法遵循最小特权原则。 这些分配可以通过如下所示的“项目设置”页完成。

Screenshot showing the project settings page where assignments can be made.

Azure DevOps Projects 和组织的另一个最佳做法是尽可能禁用继承。 用户可继承其安全组分配允许的权限。 由于继承的默认允许性质,某些用户会意外获得访问权限或权限。

例如,如果为平台团队分配“参与者”安全组成员身份,请验证他们对 Azure 登陆区域存储库的权限。 应具有分支策略来验证是否禁止安全组在拉取请求期间绕过这些策略。 在“项目设置”>“存储库”下验证此设置。

向用户分配权限后,定期查看审核事件,以监视和响应管理员和其他用户的意外使用模式。 首先,请创建 Log Analytics 工作区审核流。 如果工作区使用 Microsoft Sentinel,请创建分析规则以针对值得注意的事件发送警报,例如权限使用不当。

有关详细信息,请参阅以下资源:

GitHub 基于角色的访问注意事项

如果主要 DevOps 工具为 GitHub,则可以通过在存储库级别、团队级别或组织级别授予用户角色以向其分配对资源的访问权限。 分叉 Azure 登陆区域存储库并与标识提供者(如 Microsoft Entra ID)集成后,请考虑在 GitHub 中创建团队。 为该团队分配对新的 Azure 登陆区域存储库的写入访问权限。 对于大多数修改和部署登陆区域的平台团队成员,写入访问权限应是足够的。 对于团队中的项目管理员或 Scrum 管理员,可能需要为其分配对该存储库的维护角色。

建议通过集成的标识提供者管理所有这些角色分配。 例如,可以将 GitHub 中创建的 Azure 登陆区域存储库的平台团队与 Microsoft Entra ID 中的相应平台团队安全组同步。 然后,向 Microsoft Entra 安全组添加或删除成员时,这些更改将反映在 GitHub Enterprise Cloud 角色分配中。

注意

将特定 GitHub 团队连接到集成的标识提供者后,只能通过该标识提供者管理团队成员身份。

后续步骤

有关在 GitHub 中管理角色和团队的详细信息,请参阅以下资源: