将项目可见性更改为公共或专用

Azure DevOps Services

本文介绍如何将项目的可见性更改为公共或专用。

将专用项目切换到公开可见性时,它将包含其所有内容。 无法有选择地保留某些存储库、区域路径或生成文件夹。

对于未登录的用户(通常称为匿名用户或公共用户),访问受到限制。 还有一些用户登录到 Azure DevOps,但不属于项目。 这两种类别的用户都受到下表中所述的有限只读访问权限。

将专用项目切换到公共项目时,所有项目成员都会经历以下更改:

  • 无法识别标记为 “拒绝 ”的权限。 向非成员自动授予的权限设置可分配给任何项目成员的最小功能级别。
  • 如果生成管道设置为 Project Collection 范围,则会改为使用 Project 范围运行,从而降低恶意用户访问生成服务的身份验证令牌的风险。
  • 利益干系人对公共项目中的 ReposCode 功能具有完全访问权限,但在专用项目中没有访问权限。
  • 利益干系人对公共项目中的 BoardsWork 具有完全访问权限,但只有专用项目中的部分访问权限。 有关详细信息,请参阅利益干系人访问快速参考
  • 基本 + Test Plans用户可以从Test Plans或测试中查看和运行测试。 基本用户需要将其访问级别升级到“基本 + Test Plans”才能获得完全访问权限,其中包括创建测试计划和添加测试用例的功能。
中心/设置 非member 访问 利益干系人访问 基本访问权限 读取者访问权限 参与者访问权限 项目管理员访问
仪表板 读取 (许多小组件不可用) 部分 full 读取 读-写 read-write-administer
Wiki 读取 full full 读取 读-写 read-write-administer
Boards (Work) 读取 部分 full 读取 读-写 read-write-administer
存储库(代码) 读取 full full 读取 读-写 read-write-administer
管道 (生成和发布) 读取 full full 读取 读-写 Read-Write-Administer
测试计划 无访问权限 无访问权限 部分访问(请参阅表前的最后一个项目符号) 读取 读-写 Read-Write-Administer
通知 无访问权限 完全 完全 读取 读-写 read-write-administer
搜索 full full full full full full
设置 无访问权限 完全 完全 读取 读取 Read-Write-Administer

先决条件

迁移核对清单

大多数专用项目包含大量的历史数据。 旧工作项、早期提交和以前的生成管道可能包含不想公开共享的信息。

以下检查列表指示在公开项目之前可能需要查看的那些项。 它还提供了有关将工作项或文件迁移到新项目的提示,以便你只能公开当前和将来的内容。

类别

指南

组织标识和设置

了解用户有权访问以下资源和有关组织的详细信息:

  • 标识:添加到组织的所有成员的列表和每个成员的电子邮件地址。
  • 设置:所有组织和项目设置的只读视图。
  • 进程元数据:组织内所有项目中的所有选择列表值。
  • 生成和发布:触发它们的人员的姓名,以及标识,包括 Git 提交中嵌入的电子邮件地址。
  • 提交和工作项:嵌入的信息,如名字、姓氏和电子邮件地址。

跨项目对象链接

检查项目之间是否存在链接,因为有关专用项目中链接项目的详细信息在公共项目中可见。 可以使用以下链接类型:分支、生成、更改集、提交、在生成中找到、在生成中集成、拉取请求和版本控制项。 标题和名称在以下链接类型中公开:版本控制项、分支、Wiki 页面、拉取请求和工作项。

敏捷工具和工作项

确认你的工作项(即使是已关闭的工作项)不包含敏感详细信息:未公开的安全漏洞、凭据和客户数据。 工作项从专用项目迁移到公共项目时会保留其历史记录。 所有讨论和说明都可用。 检查是否不包含有问题的语音。

确认所有区域路径都没有特殊的锁定安全设置。 拒绝的权限不会在公共项目中强制执行,因此限制区域路径变为公共。

代码

确认存储库的历史记录中没有敏感详细信息:未修补的安全漏洞、凭据和您无权分发的代码。

所有文件内容和提交消息均可用。 检查是否不包含有问题的语音。 如果你不习惯公开整个存储库,可以将提示迁移到另一个项目。 有关详细信息,请参阅 提示迁移的说明

生成和发布

确认没有管道公开敏感数据:凭据/机密、模糊 URL 和专用环境名称。

确认非members 不需要访问专用源。 生成仍可访问源,但非members 无法访问源。 如果需要将生成管道迁移到新项目,可以使用 YAML 导入和导出它们。

Test

了解手动和云负载测试功能不适用于公共项目中的非Member。

分析和仪表板

考虑构建面向公众的仪表板。 某些 小组件对非玩家不可用

项目

确认任何范围限定为项目的源中的任何包都没有隐私问题。 范围限定为项目的源中的所有包都变为公共包。 项目公开后,将禁用范围限定为项目的源的所有现有上游设置。

扩展

确认是否有任何对项目体验至关重要的扩展。 例如,你是否在工作项窗体上具有以特定方式呈现数据的控件? 是否有公开重要详细信息的自定义扩展?

通过测试该扩展,确认每个扩展的作者已将其提供给非用户。 如果没有,请让扩展作者添加对非members 的支持。

1. 启用对项目的匿名访问

必须先为组织启用匿名访问,然后才能将专用项目更改为公共项目。

  1. (https://dev.azure.com/{yourorganization}) 登录到组织。

  2. 选择 “组织设置”。

    Screenshot showing highlighted Organization settings button.

  3. 选择“策略”,然后打开允许公共项目安全策略”。

    Screenshot showing Organization settings, Policy page, Security policies flow.

2. 设置项目可见性

  1. 登录到项目(https://dev.azure.com/{YourOganization}{YourProject})。

  2. 选择“项目设置>概述>可见性”下拉菜单,选择“公共”或“专用,然后选择“保存”。

    Screenshot showing Project Settings, Overview, Visibility flow.

公共项目的访问级别和不可用功能

项目成员有权根据分配的访问级别访问功能。 自动向非members/公共用户授予受限访问权限。 若要参与公共项目,必须将你添加为该项目的成员,并分配利益干系人、基本或基本 + Test Plans访问权限。 访问级别确定可以访问的用户界面。 分配给你的安全组确定你可以执行的功能。 有关详细信息,请参阅 关于访问级别

添加 项目成员 的方式与对专用项目添加方式相同。 请确保你了解 邀请外部用户 访问你的项目意味着什么。 如果创建了项目,系统会自动将你分配到“项目管理员”组。

对于非members,隐藏以下用户界面元素。

服务

隐藏的 UI 元素

Boards

工作项可用,但积压工作、板、冲刺、查询和计划处于隐藏状态。

Repos

Team Foundation 版本控制 (TFVC) 存储库处于隐藏状态。

管道

生成和发布可用,但库、任务组、部署组、包和 XAML 生成系统处于隐藏状态。 生成和发布管道的管道和任务编辑器不可用。 只有公共预览版中的新版本页面可用。

Test Plans

Test Plans以及关联的手动和云负载测试功能处于隐藏状态。

分析

分析视图处于隐藏状态,非Members 不支持 Analytics OData 源。 通常不支持 Power BI 集成。

设置

设置和管理页面处于隐藏状态。

非members 无法执行以下任务:

  • 编辑或创建项目,例如文件、工作项和管道
  • 收藏和关注现有项目
  • 查看项目成员的电子邮件地址和其他联系信息;非members 只能看到名称和图片。 此外,按标识筛选项目列表
  • 在同一组织中两个公共项目之间切换;非members 必须使用 URL 直接转到公共项目
  • 跨组织执行代码或工作项搜索

部分迁移

如果组织包含敏感材料,则不应启用公共项目策略。 建议创建一个完全独立的组织来托管公共项目。

将工作项移动到专用项目

如果任何工作项都很敏感,则可以 将它们 移动到单独的专用项目中。 跨项目链接继续适用于成员,但非成员无法访问内容,因为它驻留在专用项目中。

如果有大量敏感工作项,请考虑将当前项目保密。 而是在另一个组织中创建新的公共项目。 可以使用 Microsoft 维护的 开放源代码 WiMigrator 完成工作项的迁移。

仅迁移 Git 提示

如果存储库由于历史记录有问题而无法共享,请考虑将仅提示迁移到其他项目中的新存储库。 将包含有问题的存储库的项目保留为私有。 在不介意公开的项目中创建新存储库。

警告

  • 新存储库未连接到旧存储库。
  • 将来无法轻松地迁移它们之间的更改。
  • 拉取请求历史记录不会迁移。
  1. 克隆现有存储库: git clone <clone_URL>.
  2. 请确保位于存储库的根目录中: cd <reponame>
  3. 确保位于要从以下开始的分支的提示上。 git checkout main
  4. 删除 Git 数据: rmdir /s .git 在 Windows、 rm -rf .git macOS 或 Linux 上。
  5. 初始化新的 Git 存储库: git init
  6. 在公共项目中创建新的空存储库。
  7. 将新存储库添加为源远程: git remote add origin <new_clone_URL>
  8. 推送新存储库: git push --set-upstream origin main.

后续步骤