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

Azure DevOps Services

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

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

安全性

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

  • 权限:无法识别标记为“拒绝”的权限。 非成员会自动获得可分配给任何项目成员的最小功能级别。
  • 生成管道:如果生成管道设置为 Project Collection 范围,则会改为使用 Project 范围运行,从而减少恶意用户获取生成服务的身份验证令牌访问权限的风险。
  • 利益干系人
    • 存储库:利益干系人对公共项目中的这些功能具有完全访问权限,但在专用项目中没有访问权限。
    • 董事会:利益干系人对公共项目具有完全访问权限,但只有私人项目中的部分访问权限。 有关详细信息,请参阅利益干系人访问快速参考
  • 基本 + 测试计划用户:基本 + 测试计划用户可以从测试计划查看和运行测试。 基本用户可以将其访问级别升级到基本 + 测试计划以获取完全访问权限,包括创建测试计划和添加测试用例的功能。

Access

对于未登录的用户(匿名/公共用户)和已登录的用户,但不是项目(非项目成员)的成员,则访问权限受到限制。 这两类用户(称为非成员)都受到下表中所述的有限只读访问权限。

中心/设置 非member 访问 利益干系人访问 基本访问权限 读取者访问权限 参与者访问权限 项目管理员访问权限
仪表板 read, + 许多小组件不可用 部分 full 读取 读-写 read-write-administer
Wiki 读取 full full 读取 读-写 read-write-administer
Boards 读取 部分 full 读取 读-写 read-write-administer
Repos 读取 full full 读取 读-写 read-write-administer
管道 读取 full full 读取 读-写 read-write-administer
测试计划 无访问权限 无访问权限 部分访问 读取 读-写 read-write-administer
通知 无访问权限 full full 读取 读-写 read-write-administer
搜索 full full full full full full
设置 无访问权限 full full 读取 读取 read-write-administer

先决条件

迁移核对清单

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

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

类别

指南

组织标识和设置

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

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

跨项目对象链接

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

敏捷工具和工作项

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

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

代码

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

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

生成和发布

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

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

测试

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

分析和仪表板

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

项目

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

扩展

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

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

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

将专用项目更改为公共项目之前,请执行以下步骤,为组织启用匿名访问:

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

  2. 选择“组织设置”。

    显示突出显示的“组织设置”按钮的屏幕截图。

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

    显示组织设置、策略页、安全策略流的屏幕截图。

2. 设置项目可见性

  1. 登录到你的项目 (https://dev.azure.com/{Your_Oganization}{Your_Project})。

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

    显示项目设置、概述、可见性流的屏幕截图。

公共项目的有限 UI 元素

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

服务

隐藏的 UI 元素

Boards

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

Repos

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

管道

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

Test Plans

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

分析

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

设置

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

非members 无法执行以下任务:

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

向公共项目添加参与者

若要参与公共项目,请添加为成员并分配利益干系人、基本或基本 + 测试计划访问权限。 有关详细信息,请参阅关于访问级别

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

部分迁移

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

将工作项移动到专用项目

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

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

仅迁移 Git 提示

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

警告

  • 新存储库未连接到旧存储库。
  • 将来无法轻松地迁移它们之间的更改。
  • 拉取请求历史记录不会迁移。

请按照以下步骤仅迁移 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.

后续步骤