Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure DevOps 使用安全概念的组合来确保只有经过授权的用户才能访问其功能、功能和数据。 访问由两个关键进程确定:身份验证(用于验证用户的凭据)和授权(基于帐户权利授予权限)。 这些进程共同控制每个用户可以在 Azure DevOps 中执行的操作。
本文对权限、访问权限和安全组入门进行了扩展,帮助管理员了解用于保护 Azure DevOps 环境的不同帐户类型、身份验证和授权方法,以及安全策略。
帐户类型
- 用户
- 组织所有者
- 服务帐户
- 服务主体或托管标识
- 作业代理
身份验证
- 用户凭据
- Windows 身份验证
- 双因素身份验证 (2FA)
- SSH 密钥身份验证
- Microfost Entra 令牌
- 个人访问令牌
- Oauth 配置
- Active Directory 身份验证库
授权
- 安全组成员身份
- 基于角色的访问控制
- 访问级别
- 功能标志
- 安全性命名空间和权限
策略
- 隐私策略 URL
- 应用程序连接和安全策略
- 用户策略
- Git 存储库和分支策略
帐户类型
- 用户
- 服务帐户
- 服务主体或托管标识
- 作业代理
身份验证
- 用户凭据
- Windows 身份验证
- 双因素身份验证 (2FA)
- SSH 密钥身份验证
- 个人访问令牌
- Oauth 配置
- Active Directory 身份验证库
授权
- 安全组成员身份
- 基于角色的权限
- 访问级别
- 功能标志
- 安全性命名空间和权限
策略
- Git 存储库和分支策略
重要说明
Azure DevOps 不支持备用凭据身份验证。 如果你仍在使用备用凭据,我们强烈建议切换到更安全的身份验证方法。
Azure DevOps 都支持从规划到部署的软件开发。 每个平台都使用 Microsoft Azure 的平台即服务基础结构和服务(包括 Azure SQL 数据库)为项目提供可靠的全局可用服务。
有关如何Microsoft确保项目安全、可用、安全和专用的详细信息,请参阅 Azure DevOps 数据保护概述。
帐户
虽然人工用户帐户是主要关注点,但 Azure DevOps 还支持各种其他帐户类型以执行不同的作:
- 组织所有者:Azure DevOps Services 组织的创建者或分配的所有者。 若要查找组织的所有者,请参阅查找组织所有者。
- 服务帐户:用于支持特定服务的内部 Azure DevOps 组织,例如代理池服务、PipelinesSDK。 有关服务帐户的说明,请参阅 安全组、服务帐户和权限。
- 服务主体或托管标识:添加到您组织的 Microsoft Entra 应用程序或托管标识,以代表非Microsoft应用程序执行操作。 一些服务主体指的是内部 Azure DevOps 组织来支持内部操作。
- 作业代理:用于定期运行特定作业的内部帐户。
- 第三方帐户:需要访问以支持 Web 挂钩、服务连接或其他非Microsoft应用程序的帐户。
在整个安全相关文章中,“用户”是指添加到用户中心的所有标识,其中包括人类用户和服务主体。
- 服务帐户:用于支持特定服务的内部 Azure DevOps 组织,例如代理池服务、PipelinesSDK。 有关服务帐户的说明,请参阅 安全组、服务帐户和权限。
- 服务主体或托管标识:添加到您组织的 Microsoft Entra 应用程序或托管标识,用于代表非Microsoft应用程序执行操作。 一些服务主体指的是内部 Azure DevOps 组织来支持内部操作。
- 作业代理:用于定期运行特定作业的内部帐户。
- 第三方帐户:需要访问以支持 Web 挂钩、服务连接或其他非Microsoft应用程序的帐户。
管理帐户的最有效方法是将其添加到安全组。
注意
组织所有者和项目集合管理员组的成员被授予对几乎所有特性和功能的完全访问权限。
身份验证
身份验证基于登录 Azure DevOps 期间提供的凭据验证用户的标识。 Azure DevOps 与多个标识系统集成,用于管理身份验证:
- Microsoft Entra ID:建议用于管理大型用户组的组织。 提供可靠的基于云的身份验证和用户管理。
- Microsoft帐户(MSA):适用于访问 Azure DevOps 组织的较小用户群。 支持云身份验证。
- Active Directory (AD):建议在有众多用户的情况下使用您现有的 AD 基础结构来进行本地部署。
Microsoft Entra ID 和 Microsoft 帐户都支持云身份验证。 有关详细信息,请参阅关于使用 Microsoft Entra ID 访问 Azure DevOps。
对于本地环境,请使用 Active Directory 有效地管理用户访问。 在 “设置组”中了解详细信息,以便在本地部署中使用。
以编程方式进行身份验证
通过选择可用的 身份验证方法之一,以编程方式访问 Azure DevOps 组织,而无需反复输入用户名和密码。 使用以下方法自动执行工作流、与 REST API 集成或生成自定义应用程序:
- 使用 OAuth 构建代表用户执行操作的应用程序。 用户必须同意应用。 对于新应用,请使用 Microsoft Entra OAuth。
- 使用 服务主体或托管标识 自动执行工作流或生成定期访问组织资源的工具。 代表应用程序本身颁发Microsoft Entra 令牌。
- 使用 Microsoft Entra ID 进行安全、基于云的身份验证和用户管理。
- 使用 个人访问令牌(PAT) 进行即席请求或早期原型制作。 避免 PAT 进行长期应用开发,因为它们更容易泄漏和滥用。
小窍门
始终 安全地存储凭据 ,并遵循管理身份验证方法的最佳做法。
默认情况下,组织允许访问所有身份验证方法。 组织管理员可以 通过禁用安全策略来限制对这些身份验证方法的访问。 租户管理员可以通过限制 PAT 的创建方式来进一步降低 PAT 风险。
授权
授权确定经过身份验证的标识是否具有访问 Azure DevOps 中特定服务、功能、函数、对象或方法所需的权限。 身份验证成功后,授权检查始终发生 - 如果身份验证失败,则永远不会评估授权。 即使在身份验证后,如果用户或组缺少必要的权限,他们仍可能被拒绝访问某些操作。
Azure DevOps 通过直接分配给用户或通过安全组或角色继承的权限来管理授权。 访问级别和功能标志可以进一步控制对特定功能的访问。 若要了解有关这些授权方法的详细信息,请参阅 权限、访问权限和安全组入门。
安全命名空间和权限
安全命名空间为 Azure DevOps 资源上的特定作定义用户访问级别。
- 每个资源系列(例如工作项或 Git 存储库)都有自己的唯一命名空间。
- 在每个命名空间中,可以有多个访问控制列表(ACL)。
- 每个 ACL 都包含一个令牌、一个继承标志和一个或多个访问控制条目(ACE)。
- 每个 ACE 指定标识描述符、允许权限的位掩码和拒绝权限的位掩码。
有关详细信息,请参阅 安全命名空间和权限参考。
安全策略
若要保护组织和代码,组织级别(项目集合管理员)或租户级别(Azure DevOps 管理员)管理员可以根据策略范围启用或禁用各种安全策略。 要考虑的关键策略包括:
- 指定隐私策略 URL ,描述如何处理内部和外部来宾数据隐私。
- 确定是否允许组织中的用户 创建公共项目。
如果组织已连接到 Microsoft Entra ID,则可以访问以下其他安全功能:
- 将组织创建限制为特定用户。
- 邀请外部来宾加入组织。
- 允许团队和项目管理员邀请新用户。
- 启用条件访问策略 (CAP) 验证。
- 跟踪组织中的 审核事件和流 。
查看并配置这些策略,以加强组织的安全状况,并确保符合数据隐私和访问要求。
Project-Scoped用户组
默认情况下,添加到组织的用户可以查看所有组织和项目信息和设置,包括用户列表、项目列表、计费详细信息、使用情况数据等。
若要限制特定用户(例如利益干系人、Microsoft Entra 来宾用户或特定安全组成员)的访问,请为您的组织启用“限制用户对特定项目的可见性和协作”预览功能。 启用此功能后,以以下方式限制添加到 Project-Scoped 用户组 的任何用户或组:
- 访问权限仅限于“组织”设置中的“概述”和“项目”页面。
- 用户只能连接并查看他们被明确添加到的项目。
- 用户只能选择明确添加到同一项目的用户和组身份。
有关详细信息,请参阅 “管理组织:限制项目的用户可见性”等 ,以及 管理预览功能。
警告
使用此预览功能时,请考虑以下限制:
- 本部分所述的有限可见性功能仅适用于通过 Web 门户的交互。 使用 REST API 或
azure devopsCLI 命令,项目成员可以访问受限数据。 - 受限用户组中的用户只能选择那些明确添加到 Azure DevOps 的用户,而不能选择那些通过 Microsoft Entra 组成员身份获得访问权限的用户。
- 作为 Microsoft Entra ID 中具有默认访问权限的受限组成员的来宾用户无法使用人员选取器搜索用户。
Git 存储库和分支策略
为了保护代码,你可以设置各种 Git 存储库和分支策略。 有关详细信息,请参阅以下文章。
Azure Repos和 Azure Pipelines 安全性
由于存储库和生成和发布管道带来了独特的安全挑战,因此本文中讨论的功能以外的其他功能也受到使用。 有关详细信息,请参阅以下文章。
- 保护 Azure Pipelines
- 规划如何保护 YAML 管道
- 存储库保护
- 管道资源
- 在管道中安全地构建项目的建议
- 通过模板实现安全性
- 如何在管道中安全地使用变量和参数
- 保护 Azure Pipelines 中的共享基础结构的建议
- 其他安全注意事项