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

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 集成。 若要在不重复请求用户凭据的情况下访问帐户,应用可以使用以下身份验证方法:

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

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

授权

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

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

安全命名空间和权限

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

  • 每个资源系列(如工作项或 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 安全性

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

后续步骤