排查访问和权限问题

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

由于 Azure DevOps 的广泛安全性和权限结构,可能需要调查用户为何无法访问预期项目、服务或功能。 查找分步指南,了解和解决用户连接到项目或访问 Azure DevOps 服务或功能时可能遇到的问题。

使用本指南之前,建议熟悉以下内容:

提示

创建 Azure DevOps 安全组时,请明确标记它以指示它是否打算限制访问。

可以在以下级别设置权限:

  • 对象级别
  • 项目级别
  • 组织或项目集合级别
  • 安全角色
  • 团队管理员角色

常见的访问和权限问题

查看项目成员无法访问项目、服务或功能的最常见原因:

问题 故障排除操作
其访问级别不支持访问服务或功能。 若要确定是否是原因, 请确定用户的访问级别和订阅状态
安全组中的成员身份不支持访问某个功能,或者他们被显式拒绝对某个功能的权限。 若要确定是否是原因, 请跟踪权限
用户最近被授予权限,但其客户端需要刷新才能识别更改。 让用户 刷新或重新评估其权限
用户尝试练习仅向特定团队的团队管理员授予的功能,但他们未被授予该角色。 若要将他们添加到角色,请参阅 添加,删除团队管理员
用户未启用预览功能。 让用户打开预览功能并确定特定功能的开/关状态。 有关详细信息,请参阅 管理预览功能
项目成员已添加到有限的范围安全组,例如项目范围用户组。 若要确定是否是原因, 请查找用户的安全组成员身份

不太常见的访问和权限问题

访问受限的不太常见的原因是发生以下事件之一:

问题 故障排除操作
项目管理员禁用了服务。 在这种情况下,没有人有权访问禁用的服务。 若要确定是否禁用某个服务,请参阅 打开或关闭 Azure DevOps 服务
项目集合管理员禁用了预览功能,该功能对组织中的所有项目成员禁用此功能。 请参阅 管理预览功能
管理用户访问级别或项目成员身份的组规则限制访问。 请参阅 确定用户的访问权限级别和订阅状态
自定义规则已定义为工作项类型的工作流。 请参阅 应用于限制选择操作的工作项类型的规则

确定用户的访问级别和订阅状态

可以将用户或用户组分配到以下访问级别之一:

  • 利益干系人
  • 基本
  • 基本 + Test Plans
  • Visual Studio 订阅

有关在 Azure DevOps 中限制访问级别的详细信息,请参阅 支持的访问级别

若要使用 Azure DevOps 功能,必须将用户添加到具有相应权限并有权访问 Web 门户的安全组。 功能限制基于用户的访问级别和安全组。

用户可能由于以下原因而失去访问权限:

失去访问权限的原因 故障排除操作
用户的 Visual Studio 订阅已过期。 同时,此用户可以 作为利益干系人工作,也可以向用户授予基本访问权限,直到用户续订其订阅。 用户登录后,Azure DevOps 会自动还原访问权限。
用于计费的 Azure 订阅不再有效。 使用此订阅进行的所有购买都会受到影响,包括 Visual Studio 订阅。 若要解决此问题,请访问 Azure 帐户门户
用于计费的 Azure 订阅已从组织中删除。 详细了解如何 链接组织

否则,在日历月的第一天,未登录组织的时间最长的用户将首先失去访问权限。 如果你的组织具有不再需要访问权限的用户,请 将其从组织中删除

有关权限的详细信息,请参阅 权限和组权限查找指南

跟踪权限

使用权限跟踪确定用户权限不允许他们访问特定功能的原因。 了解用户或管理员如何调查权限的继承。 若要从 Web 门户跟踪权限,请打开相应级别的权限或安全页。 有关详细信息,请参阅 请求增加权限级别

如果用户遇到权限问题,并且你使用默认安全组或自定义组获取权限,请使用跟踪来调查这些权限的来源。 权限问题可能是由于延迟更改。 Microsoft Entra 组成员身份或权限更改可能需要长达 1 小时才能在整个 Azure DevOps 中传播。 如果用户遇到无法立即解决的问题,请等待一天,看看他们是否解决了。 有关用户和访问管理的详细信息,请参阅 在 Azure DevOps 中管理用户和访问权限

如果用户遇到权限问题,并且你使用默认安全组或自定义组获取权限,则可以使用权限跟踪调查这些权限的源。 权限问题可能是因为用户没有必要的访问级别。

用户可以直接或通过组接收其有效权限。

完成以下步骤,以便管理员能够确切地了解这些权限来自何处,并根据需要对其进行调整。

  1. 选择“ 项目设置>权限>用户”,然后选择该用户。

    筛选器框的屏幕截图,输入用户名。

    现在,你应该有一个特定于用户的视图,该视图显示他们拥有的权限。

  2. 若要跟踪用户具有或没有列出的任何权限的原因,请选择相应权限旁边的信息图标。

选择相应权限旁边的信息图标的屏幕截图。

生成的跟踪可让你知道他们是如何继承列出的权限的。 然后,可以通过调整提供给用户所属于组的权限来调整用户的权限。

  1. 选择“ 项目设置>安全性”,然后在筛选器框中输入用户名。

    在筛选器框中输入用户名的屏幕截图,Azure DevOps Server 2019 年。

    现在,你应该有一个特定于用户的视图,该视图显示他们拥有的权限。

  2. 跟踪用户具有或没有列出的任何权限的原因。 将鼠标悬停在权限上,然后选择“ 原因”。

    项目级别信息的权限列表视图中的“选择原因”的屏幕截图,Azure DevOps Server 2019 年。

生成的跟踪可让你知道他们是如何继承列出的权限的。 然后,可以通过调整提供给用户所属于组的权限来调整用户的权限。

显示继承的权限的跟踪的屏幕截图,Azure DevOps Server 2019 年。

有关详细信息,请参阅 “管理对特定特性和功能 的访问权限”或 “请求增加权限级别”。

刷新或重新评估权限

请参阅以下场景,其中可能需要刷新或重新评估权限。

问题

用户将添加到 Azure DevOps 或 Microsoft Entra 组。 此操作授予对组织或项目的继承访问权限。 但是,他们不能立即获得访问权限。 用户必须等待或注销,关闭浏览器,然后重新登录才能刷新其权限。

用户将添加到 Azure DevOps 组。 此操作授予对组织或项目的继承访问权限。 但是,他们不能立即获得访问权限。 用户必须等待或注销,关闭浏览器,然后重新登录才能刷新其权限。

解决方案

转到“用户设置>权限>”重新评估权限。 此函数会重新评估组成员身份和权限,然后任何最近的更改都会立即生效。

重新评估权限控件的屏幕截图。

应用于限制选择操作的工作项类型的规则

在自定义流程之前,建议查看配置和自定义Azure Boards,其中提供了有关如何自定义Azure Boards以满足业务需求的指导。

有关适用于限制操作的工作项类型规则的详细信息,请参阅:

对用户隐藏组织设置

如果用户只能查看其项目或无法访问组织设置,则以下信息可能会解释原因。 若要限制用户访问组织设置,请启用“ 将用户可见性和协作限制为特定项目 预览功能”。 有关详细信息,包括重要的安全相关标注,请参阅管理组织,限制项目对用户的可见性等

受限用户的示例包括利益干系人、Microsoft Entra 来宾用户或安全组的成员。 启用后,添加到 Project-Scoped Users 组的任何用户或组将受限于访问组织设置页,但“概述”和“项目”除外 他们只能访问他们添加到的项目。

受限用户的示例包括利益干系人或安全组的成员。 启用后,添加到“Project-Scoped用户组”的任何用户或组将受限于访问“组织设置”页面,“概述”和“项目”除外。 他们只能访问他们添加到的项目。

有关详细信息,请参阅 管理组织、限制项目的用户可见性等

使用 CLI 查看、添加和管理权限

可以使用命令在精细级别 az devops security permission 查看、添加和管理权限。 有关详细信息,请参阅 使用命令行工具管理权限

对权限较小的规则进行分组

按以下顺序对组规则类型进行排名:订阅服务器 > 基本 + 测试计划 > 基本 > 利益干系人。 用户始终在所有组规则(包括任何 Visual Studio (VS) 订阅)中收到可用的最高访问级别。

注意

  • 通过组规则对 项目读取者 所做的更改不会保留。 若要调整项目读取器,请考虑替代方法,例如 直接分配自定义安全组
  • 定期查看“用户”页的“组规则”选项卡上列出的规则。 对Microsoft Entra ID 组成员身份的更改将显示在组规则的下一次重新评估中,这些规则可在修改组规则时按需完成,或每隔 24 小时自动执行一次。 Azure DevOps 每小时更新Microsoft Entra 组成员身份,但Microsoft Entra ID 更新动态组成员身份可能需要长达 24 小时。

请参阅以下示例,其中显示了订阅者检测如何考虑组规则。

示例 1:组规则为我提供更多访问权限

如果我有 VS Pro 订阅,并且我位于一个组规则中,该规则提供基本 + Test Plans - 会发生什么情况?

预期:我得到基本 + Test Plans,因为组规则提供给我的内容大于我的订阅。 组规则分配始终提供更大的访问权限,而不是限制访问权限。

示例 2:组规则为我提供相同的访问权限

我有一个 Visual Studio Test Pro 订阅,并且我位于一个组规则中,该规则提供基本 + Test Plans - 会发生什么情况?

预期:我被检测为 Visual Studio Test Pro 订阅者,因为访问权限与组规则相同。 我已经支付了 Visual Studio Test Pro 的费用,因此我不想再次付费。

使用 GitHub

请参阅以下故障排除信息,了解如何使用 GitHub 在 Azure DevOps 中部署代码。

问题

尽管将其添加为成员,但无法将团队的其余部分引入组织和项目。 他们收到电子邮件,但在登录时,会收到 401 错误。

解决方案

可能已使用不正确的标识登录到 Azure DevOps。 执行以下步骤:

  1. 关闭所有浏览器,包括未运行 Azure DevOps 的浏览器。

  2. 打开专用或隐身浏览会话。

  3. 请转到以下 URL:https://aka.ms/vssignout

    显示消息“正在注销”。注销后,会重定向到 dev.azure.microsoft.com

  4. 再次登录到 Azure DevOps 并选择其他标识。

可能应用权限的其他区域