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

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 存储库和分支策略

重要

自 2020 年 3 月 2 日开始,Azure DevOps 不再支持备用凭据身份验证。 如果你仍在使用备用凭据,我们强烈建议你切换到更安全的身份验证方法, (例如个人访问令牌) 。 了解详细信息

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

有关 Microsoft 为使项目Azure DevOps Services安全、可用、安全和私密而采取的步骤的详细信息,请参阅此白皮书Azure DevOps Services数据保护概述

帐户

虽然感兴趣的main类型的帐户是添加到组织或项目的用户帐户,但 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 中的服务和资源集成。 若要访问帐户,而无需多次要求用户凭据,应用可以使用以下身份验证方法。

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

有关如何存储凭据的详细信息,请参阅 Azure DevOps 的凭据存储

有关如何选择正确的身份验证机制的详细信息,请参阅 身份验证指南

授权

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

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

安全命名空间和权限

安全命名空间存储的数据确定 Azure DevOps 帐户对特定资源执行特定操作所需的访问级别。 每个资源系列(例如工作项或 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用户组

默认情况下,添加到组织的用户可以查看所有组织和项目信息和设置。 这包括查看用户列表、项目列表、计费详细信息、使用情况数据以及通过 组织设置访问的更多内容。

重要

  • 本部分所述的有限可见性功能仅适用于通过 Web 门户的交互。 使用 REST API 或 azure devops CLI 命令,项目成员可以访问受限数据。
  • 在 Microsoft Entra ID 中具有默认访问权限的受限组中具有成员的来宾用户无法搜索具有人员选取器的用户。 当预览功能为组织关闭或来宾用户不是受限组的成员时,来宾用户可以按预期搜索所有 Microsoft Entra 用户。

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

  • 只能访问组织设置“概述”和“项目”页。
  • 只能连接和查看已显式添加到的那些项目 (请参阅 将用户添加到项目或团队
  • 只能选择已显式添加到其所连接到的项目的用户和组标识。

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

警告

为组织启用特定项目预览功能的“限制用户可见性和协作”时,项目范围内的用户无法通过 Microsoft Entra 组成员身份(而不是显式用户邀请)搜索已添加到组织的用户。 这是一种意外的行为,正在处理解决方法。 若要自行解决此问题,请禁用组织的 “将用户可见性和协作限制为特定项目 ”预览功能。

Git 存储库和分支策略

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

Azure Repos和 Azure Pipelines 安全性

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

后续步骤