Azure DevOps能否公网发布制品同时对互联网用户隐藏源代码?
Azure DevOps 公开发布制品同时隐藏私有项目源代码的实现方式
完全可以实现,不需要把存放源代码的业务项目设为公开,也能做到互联网匿名用户可正常拉取制品、全程无法接触到项目源代码。
首先解释你之前遇到的配置失败问题:Azure DevOps 原生公共源(Public Feeds)有强制的权限规则:公共源必须归属在公开项目下,私有项目内创建的制品源最高开放范围仅为组织内可见,无法直接开放给互联网匿名用户;同时私有项目默认的构建服务身份没有跨项目推送公共源的权限,这就是你之前尝试从私有项目推公共源报错的核心原因。
目前有两个可落地的稳定方案,你可以根据自己的运维习惯选择:
- 独立公开制品项目方案(最推荐,权限边界最清晰,几乎无泄露风险)
- 在当前Azure DevOps组织下新建一个独立的公开项目,这个项目内不要上传任何源代码、不要配置业务流水线、不要存放工作项等敏感内容,仅保留Azure Artifacts功能
- 在这个空的公开项目内创建公共源(Public Feed)
- 找到你原有私有项目的构建服务账号,给这个账号分配公共源的
Contributor(合作者)权限 - 保持原有业务项目全程私有,CI流水线构建完成后,用配置好权限的服务身份认证,把构建好的制品推到独立公开项目的公共源即可
这个方案下,外部用户访问公共源时只能看到制品内容,点进公开项目因为没有任何源码资产,完全不会出现代码泄露问题。
- 单项目权限隔离方案(适合不想额外创建项目的场景)
- 保持原有业务项目为私有状态,在项目内创建普通的项目级制品源
- 给需要对外发布的正式制品统一打上Release标识,发布到专门的发布视图(Release View)
- 进入项目权限配置页,把匿名用户组对代码库、流水线、工作项、测试计划等所有非Artifacts模块的权限全部设为
拒绝,仅给匿名用户组开放指定发布视图的读取权限 - 单独开启该发布视图的匿名访问开关,把视图的对外分享地址发给外部用户即可
所有配置完成后必须做权限校验:打开浏览器无痕窗口,分别访问对外发布的制品地址、项目代码库地址,确认可以正常拉取制品、访问代码库时提示无权限,才算配置生效,避免误开权限导致源码泄露。
内容的提问来源于stack exchange,提问作者LDonSOvrfw
相关产品推荐
相关产品推荐

