Azure DevOps Services
了解如何在公共和专用之间更改 Azure DevOps 项目的可见性,并了解每个可见性设置的安全性和访问影响。
重要
只有已启用 “允许公共项目策略 ”的组织才能创建项目或更改项目的可见性。 策略不再可供尚未使用它的组织使用。 Microsoft建议为所有公共项目需求使用 GitHub 。
将项目设为公共时发生哪些更改
使项目公开会影响权限、访问级别和可用功能。
重要
将专用项目更改为公开可见性时, 所有项目内容都可供公开访问。 不能有选择地保留某些存储库、区域路径或公共项目中私有的生成项目。
安全性和权限更改
将项目可见性从专用切换到公共时,会发生以下更改:
- 拒绝权限将被忽略:不会为公共用户强制实施显式设置为“拒绝”的任何权限
- 授予的最低访问权限:非members 会自动接收对公共内容的基线读取访问权限
- 生成管道范围:将管道设置为 Project 集合 范围,使用 项目 范围自动运行,以提高安全性
访问级别差异
| 用户类型 | 专用项目访问 | 公共项目访问 |
|---|---|---|
| 匿名用户 | 无访问权限 | 对大多数内容的只读访问权限 |
| 利益干系人 | 受限制的 Boards 访问,无 Repos 访问 | 对 Repos 和 Boards 的完全访问权限 |
| 基本用户 | 测试计划以外的完全访问权限 | 测试计划以外的完全访问权限 |
| 基本 + 测试计划 | 完全访问权限,包括测试计划 | 完全访问权限,包括测试计划 |
非members 的功能可用性
下表显示了哪些功能可供非项目成员的用户使用:
| 服务区域 | 会员外访问 | 注释 |
|---|---|---|
| 仪表板 | 只读的有限小组件 | 许多小组件不可用 |
| Wiki | 只读 | 完整内容可见 |
| 板 | 仅读取工作项 | 积压工作、板、冲刺隐藏 |
| 存储库 | 只读 Git 存储库 | 隐藏 TFVC 存储库 |
| 管道 | 读取生成/发布结果 | 隐藏的编辑器和库 |
| 测试计划 | 无访问权限 | 手动测试不可用 |
| 搜索 | 完全搜索功能 | 跨可访问内容 |
| 设置 | 无访问权限 | 隐藏的管理功能 |
先决条件
在更改项目可见性之前,请确保满足以下要求:
| Requirement | 详细信息 |
|---|---|
| 权限 | 项目集合管理员 或组织所有者 |
| 组织设置 | 必须启用“允许公共项目”策略 |
| 安全评审 | 完成 迁移清单 |
预迁移安全清单
警告
公共项目公开历史数据,包括旧的提交、工作项和生成日志。 在公开项目之前,请仔细查看所有内容。
组织和标识公开
- [ ] 成员信息:所有组织成员的姓名和电子邮件地址都可见
- [ ] 组织设置:公开的所有组织和项目设置的只读视图
- [ ] 处理元数据:整个组织项目的所有选取列表值都可见
- [ ] 生成历史记录:生成触发器和 Git 提交中公开的名称和电子邮件地址
跨项目注意事项
- [ ] 链接的项目:检查可能公开敏感信息的专用项目的链接
- [ ] 共享资源:查看项目访问的组织级资源
内容安全评审
工作项和敏捷工具
- [ ] 历史工作项:查看敏感信息的所有工作项,包括已关闭的工作项
- [ ] 区域路径安全性:确认没有区域路径具有特殊的安全限制(公共项目中忽略的拒绝权限)
- [ ] 讨论和评论:检查敏感或不当内容的所有工作项讨论
源代码存储库
- [ ] 提交历史记录:查看整个 Git 历史记录,了解凭据、安全漏洞或专有代码
- [ ] 提交消息:检查敏感信息的所有提交消息或不当内容
- [ ] 文件内容:确保不包含凭据、API 密钥或机密数据的文件
生成和发布管道
- [ ] 管道定义:查看公开的凭据、内部 URL 或环境详细信息
- [ ] 生成日志:检查历史记录生成日志中是否有敏感信息
- [ ] 服务连接:验证非用户无法访问的专用源依赖项
项目和包
- [ ] 包内容:查看项目范围内源中的所有包,了解隐私问题
- [ ] 源设置:了解公共项目源的上游设置已禁用
扩展和自定义
- [ ] 自定义扩展:验证扩展是否适用于非members
- [ ] 工作项表单自定义项:测试具有非member 访问权限的自定义控件和字段
步骤 1:为组织启用公共项目
登录到组织 (
https://dev.azure.com/{yourorganization})。选择 “组织设置”。
选择 “策略”。
在 “安全策略”下,打开 “允许公共项目”。
步骤 2:更改项目可见性
导航到项目(
https://dev.azure.com/{yourorganization}/{yourproject})。选择“Project settings”。
选择“概述”。
在 “可见性 ”下拉菜单中,选择 “公共 ”或“ 专用”。
选择“保存”。
管理公共项目中的参与者
添加项目成员
将参与者添加到公共项目的方式与专用项目相同:
- 转到 “项目设置>权限”。
- 选择 “添加 ”以邀请用户。
- 分配适当的访问级别(利益干系人、基本或基本 + 测试计划)。
有关详细信息,请参阅 将用户添加到组织。
外部用户注意事项
邀请外部用户加入公共项目时:
- 他们有权访问组织中的所有公共内容
- 如果其他地方有敏感内容,请考虑为公共项目创建单独的组织
敏感内容的替代方法
选项 1:公共项目的单独组织
如果当前组织包含敏感材料:
- 专门为公共项目创建新组织
- 仅将不区分内容迁移到新组织
- 在原始专用组织中保留敏感项目
选项 2:选择性内容迁移
移动敏感工作项
- 使用 移动工作项功能 将敏感项传输到专用项目
- 跨项目链接继续为成员工作,但仍在非成员中隐藏
Git 存储库提示迁移
对于有问题的历史记录的存储库,仅迁移当前状态:
警告
此作将创建一个新的存储库,且未与原始存储库建立连接。 拉取请求历史记录和更改跟踪丢失。
# Clone the existing repository
git clone <original_clone_URL>
cd <repository_name>
# Ensure you're on the desired branch
git checkout main
# Remove Git history
rm -rf .git # On Windows: rmdir /s .git
# Initialize new repository
git init
# Connect to new repository in public project
git remote add origin <new_public_repo_URL>
# Push current state as initial commit
git add .
git commit -m "Initial public release"
git push --set-upstream origin main
非members 的限制
公共项目的非成员无法执行以下作:
- 编辑或创建任何内容(文件、工作项、管道)
- 查看项目成员的电子邮件地址或联系信息
- 访问管理设置或配置页
- 在整个组织中使用高级搜索功能
- 在同一组织中的多个公共项目之间导航
- 收藏或关注项目
排查公共项目访问问题
常见问题
问题:非members 在将其公开后无法访问该项目
- 解决方案:验证组织的“允许公共项目”策略是否已启用
问题:某些内容仍显示为受限
- 解决方案:检查可能影响特定区域的拒绝权限
问题:外部用户无法参与
- 解决方案:确保将其添加为具有适当访问级别的项目成员