关于安全性、身份验证和授权

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure DevOps 采用各种安全概念来确保只有授权用户才能访问功能、功能和数据。 用户通过对其安全凭据的身份验证及其帐户权利授权来访问 Azure DevOps。 这两者的组合决定了用户对特定功能或功能的访问权限。

本文基于 权限、访问权限和安全组入门中提供的信息。 管理员可以从了解用于保护 Azure DevOps 的帐户类型、身份验证方法、授权方法和策略中获益。


帐户类型

  • 用户
  • 组织所有者
  • 服务帐户
  • 服务主体或托管标识
  • 作业代理

身份验证

  • 用户凭据
  • Windows 身份验证
  • 双因素身份验证 (2FA)
  • SSH 密钥身份验证
  • 个人访问令牌
  • Oauth 配置
  • Active Directory 身份验证库

授权

  • 安全组成员身份
  • 基于角色的访问控制
  • 访问级别
  • 特性标志
  • 安全性命名空间和权限

策略

  • 隐私策略 URL
  • 应用程序连接和安全策略
  • 用户策略
  • Git 存储库和分支策略


帐户类型

  • 用户
  • 服务帐户
  • 服务主体或托管标识
  • 作业代理

身份验证

  • 用户凭据
  • Windows 身份验证
  • 双因素身份验证 (2FA)
  • SSH 密钥身份验证
  • 个人访问令牌
  • Oauth 配置
  • Active Directory 身份验证库

授权

  • 安全组成员身份
  • 基于角色的权限
  • 访问级别
  • 特性标志
  • 安全性命名空间和权限

策略

  • Git 存储库和分支策略

重要

Azure DevOps 不支持备用凭据身份验证。 如果仍在使用备用凭据,强烈建议切换到更安全的身份验证方法。

Azure DevOps Services(云)和 Azure DevOps Server(本地)都支持从规划到部署的软件开发。 每个平台利用Microsoft Azure 的平台即服务基础结构和服务(包括 Azure SQL 数据库)为项目提供可靠的全局可用服务。

有关如何Microsoft确保 Azure DevOps Services 项目安全、可用、安全和专用的详细信息,请参阅 Azure DevOps Services 数据保护概述

帐户

虽然人工用户帐户是主要关注点,但 Azure DevOps 还支持各种其他帐户类型以执行不同的作:

  • 组织所有者:Azure DevOps Services组织的创建者或分配的所有者。 若要查找组织的所有者,请参阅查找组织所有者
  • 服务帐户:用于支持特定服务的内部 Azure DevOps 组织,例如代理池服务、PipelinesSDK。 有关服务帐户的说明,请参阅 安全组、服务帐户和权限
  • 服务主体或托管标识Microsoft添加到组织的 Entra 应用程序或托管标识 ,代表第三方应用程序执行操作。 某些服务主体是指内部 Azure DevOps 组织来支持内部操作。
  • 作业代理:用于定期运行特定作业的内部帐户。
  • 第三方帐户:需要访问才能支持 Web 挂钩、服务连接或其他第三方应用程序的帐户。

在整个安全相关文章中,“用户”是指添加到用户中心的所有标识,其中包括人类用户和服务主体。

  • 服务帐户:用于支持特定服务的内部 Azure DevOps 组织,例如代理池服务、PipelinesSDK。 有关服务帐户的说明,请参阅 安全组、服务帐户和权限
  • 服务主体或托管标识:Microsoft添加到组织的 Entra 应用程序或托管标识,代表第三方应用程序执行操作。 某些服务主体是指内部 Azure DevOps 组织来支持内部操作。
  • 作业代理:用于定期运行特定作业的内部帐户。
  • 第三方帐户:需要访问才能支持 Web 挂钩、服务连接或其他第三方应用程序的帐户。

管理帐户 的最有效方法是将其添加到安全组

备注

项目集合管理员组的组织所有者和成员有权完全访问几乎所有的功能和功能。

身份验证

身份验证基于登录到 Azure DevOps 期间提供的凭据验证帐户的标识。 这些系统集成并依赖于以下其他系统的安全功能:

  • Microsoft Entra ID
  • Microsoft 帐户 (MSA)
  • Active Directory (AD)

Microsoft Entra ID 和 MSA 支持云身份验证。 建议使用 Microsoft Entra ID 来管理大量用户。 对于访问 Azure DevOps 组织的小型用户群,Microsoft帐户已足够。 有关详细信息,请参阅 关于使用 Microsoft Entra ID 访问 Azure DevOps。

对于本地部署,建议使用 AD 来管理大量用户。 有关详细信息,请参阅 设置用于本地部署的组

身份验证方法,与其他服务和应用集成

其他应用程序和服务可以与 Azure DevOps 集成。 若要在不重复请求用户凭据的情况下访问帐户,应用可以使用以下身份验证方法:

  • OAuth,以生成令牌来代表用户访问 REST API

    • 有两个可用的 OAuth 应用模型:Azure DevOps OAuth 计划于 2026 年弃用。使用 Microsoft Entra OAuth 用于构建代表用户的应用程序。
    • 你还可以自己生成用于进行临时操作的 Microsoft Entra 令牌,以访问生成或工作项等资源,或者访问 Azure DevOps REST API
  • 服务主体或托管标识 ,用于代表应用程序或服务生成 Microsoft Entra 令牌,通常自动执行需要访问 Azure DevOps 资源的工作流。 通常由服务帐户和 PAT 执行的大多数操作都可以使用服务主体或托管标识来完成。

  • 个人访问令牌 (PAT),用于代表你自己生成令牌。 PAT 对于不支持Microsoft帐户或功能(如多重身份验证(MFA)的 Xcode 和 NuGet 等客户端可能很有帮助。

  • 使用 Linux、macOS 或运行 Git for Windows 的 Windows 时自行生成加密密钥的 SSH 身份验证,不能使用 Git 凭据管理器PAT 进行身份验证。

默认情况下,帐户或集合允许访问所有身份验证方法。 可以通过专门限制每个方法来限制访问。 拒绝访问某个身份验证方法时,任何应用都无法使用该方法访问帐户。 以前具有访问权限的任何应用都会收到身份验证错误,并且无法访问你的帐户。

有关详细信息,请参阅以下文章:

授权

授权验证尝试连接的标识是否具有访问服务、功能、函数、对象或方法所需的权限。 仅在身份验证成功之后才进行授权。 如果未对连接进行身份验证,则会在执行任何授权检查之前失败。 即使身份验证成功,如果用户或组缺少授权,仍可能不允许执行特定操作。

授权取决于分配给用户的权限,无论是直接还是通过安全组或安全角色的成员身份。 访问级别和功能标志还可以管理对特定功能的访问。 有关这些授权方法的详细信息,请参阅 权限、访问权限和安全组入门

安全命名空间和权限

安全命名空间确定针对资源的特定操作的用户访问级别。

  • 每个资源系列(如工作项或 Git 存储库)都有唯一的命名空间。
  • 每个命名空间都包含零个或多个访问控制列表(ACL)。
    • 每个 ACL 都包含一个令牌、一个继承标志和访问控制条目(ACE)。
    • 每个 ACE 都有一个标识描述符、允许的权限位掩码和一个被拒绝的权限位掩码。

有关详细信息,请参阅 安全命名空间和权限参考

安全策略

若要保护组织和代码,可以设置各种策略。 具体而言,可以启用或禁用以下策略:

常规

  • 隐私策略 URL:指定一个 URL,该 URL 链接到自定义文档,描述如何处理内部和外部来宾数据隐私。 有关详细信息,请参阅 为组织添加隐私策略 URL

应用程序连接和安全策略

使用 Microsoft Entra 租户策略将新建组织限制为仅所需用户。 此策略默认处于关闭状态,仅在组织连接到 Microsoft Entra ID 时才有效。 有关详细信息,请参阅 限制组织创建

以下策略确定授予组织内用户和应用程序的访问权限:

用户策略

  • 外部来宾访问仅当组织连接到 Microsoft Entra ID 时有效)。启用后,可以通过“用户”页将邀请发送到不属于租户Microsoft Entra ID 成员的用户的电子邮件帐户。 有关详细信息,请参阅 将外部用户添加到组织
  • 允许团队和项目管理员邀请新用户:仅在组织连接到 Microsoft Entra ID 时才有效。 启用后,团队和项目管理员可以通过 “用户” 页添加用户。 有关详细信息,请参阅 限制来自项目管理员和团队管理员的新用户邀请
  • 请求访问:仅在组织连接到 Microsoft Entra ID 时才有效。 启用后,用户可以请求对资源的访问权限。 请求会根据需要向管理员发送电子邮件通知,要求其进行评审和访问。 有关详细信息,请参阅 将外部用户添加到组织
  • 邀请 GitHub 用户:仅在组织未连接到 Microsoft Entra ID 时才有效。 启用后,管理员可以根据用户页面的 GitHub 用户帐户添加 用户 。 有关详细信息,请参阅 “连接到 GitHub/常见问题解答”。

Project-Scoped用户组

默认情况下,添加到组织的用户可以查看所有组织和项目信息和设置,包括用户列表、项目列表、计费详细信息、使用情况数据等。

若要限制某些用户(如利益干系人、Microsoft Entra 来宾用户或特定安全组的成员),可以启用 “限制用户可见性和协作”功能,使其适用于组织的特定项目 预览功能。 启用后,以以下方式限制添加到 Project-Scoped 用户 组的任何用户或组:

  • 只能访问组织设置的“概述”和项目”页。
  • 只能连接和查看他们显式添加到的项目。
  • 只能选择显式添加到他们连接到的项目的用户和组标识。

有关详细信息,请参阅“管理组织”、“限制项目的用户可见性”和“管理预览”功能

警告

使用此预览功能时,请考虑以下限制:

  • 本部分所述的有限可见性功能仅适用于通过 Web 门户的交互。 使用 REST API 或 azure devops CLI 命令,项目成员可以访问受限数据。
  • 受限用户组中的用户只能选择那些明确添加到 Azure DevOps 的用户,而不能选择那些通过 Microsoft Entra 组成员身份获得访问权限的用户。
  • 在Microsoft Entra ID 中具有默认访问权限的受限组中具有成员的来宾用户无法搜索具有人员选取器的用户。

Git 存储库和分支策略

若要保护代码,可以设置各种 Git 存储库和分支策略。 有关详细信息,请参阅以下文章。

Azure Repos和 Azure Pipelines 安全性

由于存储库和生成和发布管道带来了独特的安全挑战,因此本文中讨论的功能以外的其他功能也受到使用。 有关详细信息,请参阅以下文章。

后续步骤