如何为我的项目设置构建授权范围?

Posted

技术标签:

【中文标题】如何为我的项目设置构建授权范围?【英文标题】:How do I set the build authorization scope for my project? 【发布时间】:2020-02-23 18:54:47 【问题描述】:

现在我的 NuGet 还原失败,因为项目构建用户没有对包源的贡献者访问权限。

/usr/share/dotnet/sdk/3.0.100/NuGet.targets(123,5):错误:无法加载源 pkgs.dev.azure.com[..]index.json 的服务索引。 /usr/share/dotnet/sdk/3.0.100/NuGet.targets(123,5):错误:响应状态码不表示成功:403(禁止 - 用户“xxxxxxx”没有完成此操作的权限。您需要有“ReadPackages”。

解决方案是将构建授权范围从当前项目更改为项目集合。如下所示,这似乎非常可行:

https://docs.microsoft.com/en-us/azure/devops/pipelines/build/options?view=azure-devops

但是,在 DevOps 的无数菜单中,可以在哪里设置此范围?

【问题讨论】:

组织设置页面中确实存在一个可疑的类似设置,位于管道/设置下,名为“将作业授权范围限制为当前项目”。但是,默认情况下它是关闭的,这意味着管道应该可以访问组织中的所有项目。 @HenrikMöller 你会尝试其他人的解决方案吗?他们有效吗? @HughLin-MSFT 抱歉耽搁了,但没有。请参阅下面 Elven Spellmaker 的评论。 【参考方案1】:

几个小时前发布了此 403 错误的解决方法:https://developercommunity.visualstudio.com/content/problem/795493/403-error-during-nuget-restore.html

简而言之,这似乎会影响连接到私人订阅源的新项目。以下是建议的解决方法:

    在构建失败的项目中单击“工件”

    选择您在构建中尝试使用的提要,然后点击右上角的齿轮

    点击“Feed 设置”

    转到“权限”标签

    点击标签右侧出现的 3 个点 [...]

    点击“允许项目范围的构建”

这会添加 OP 发布的错误所抱怨的相关用户权限。希望微软能尽快解决这个问题。

来自开发者社区页面的 Tim Lynch 的全部功劳。

【讨论】:

不幸的是,这似乎对我们不起作用。我们拨动了这里提到的开关***.com/a/58646507/2604915,这似乎对我们有用……直到今天早上,它不再起作用了。我正在等待与 Microsoft 的屏幕共享会议,看看我们能否从中收集到任何信息。 为我工作。一直收到 403 错误。在翻转开关工作。但是,首先,请按照我执行的选项 2 中概述的说明进行操作:paraesthesia.com/archive/2019/02/07/…【参考方案2】:

所有答案都有效,但视情况而定。

考虑到只有 ContributorOwner 角色可以推送包 read the docs here。

那么还要记住Scoped build identities

Azure DevOps 使用两个内置标识来执行管道。

集合范围的身份,可以访问集合中的所有项目(或 Azure DevOps 服务的组织) 项目范围的身份,可以访问单个项目

...

默认情况下,使用集合范围的标识,除非限制 当前项目的工作授权范围项目设置>设置中设置。

考虑到这一点,请执行以下步骤:

    您需要检查您的管道使用的是哪个身份:

对我来说是项目范围的身份

    添加/检查可能适用的 Feed 权限(我将在图片下方留下说明)

没有。 1 如果身份是collection-scoped 没有。 2 如果身份是项目范围 没有。 3 如果适用,请给您的贡献者least privilege principle。 (对我来说,让他们阅读提要是可以的,管道或我是唯一允许推送包的人)

再次记住,您需要使用 OwnerContributor 角色。

【讨论】:

在 Azure DevOps Server 中没有选择将作业授权范围限制为当前项目。有什么想法可以应用你的方式吗? @arslanaybars 请更新我的 anwser,以便您可以通过您的解决方案吸引更多人【参考方案3】:

转到您的供稿设置:

在“权限”选项卡中验证是否至少具有“项目集合构建服务(用户名)”的读取权限:

【讨论】:

OP 声明他们希望在构建上设置授权范围,但找不到它。与Feed的权限设置无关。 是的,但我认为如果他愿意,问题就会得到解决。 @ShaykiAbramczyk 很遗憾,项目集合构建服务已经是贡献者了。【参考方案4】:

它出现在组织和项目设置下。找到 Pipelines/Settings 并有一个名为 Limit job authorization scope to current project 的切换选项。

【讨论】:

以上是关于如何为我的项目设置构建授权范围?的主要内容,如果未能解决你的问题,请参考以下文章

如何为我的第 6 个标签栏项目设置徽章值?

如何为 iOS 项目设置最低代码覆盖率阈值?

Drupal 6:如何为我的 Drupal 项目设置和使用 Mercurial

如何为标签栏的项目设置动画

如何为我的项目(VB.Net)中的所有水晶报表设置全局连接字符串

如何为 MS Test 项目设置工作目录