Azure DevOps 管道以哪个用户身份运行?

Joh*_*tle 2 azure-devops azure-pipelines

我们有 azure DevOps 管道来构建和部署各种项目。

最近,我们想使用“azureblog 文件复制”管道将一些文件复制到 Blob 存储。

这需要在 azure 中对存储帐户进行写访问。

我们的管理员说,无论谁手动运行管道,管道都会运行。如果这是真的,我们将不得不授予所有开发人员和用户对博客存储的读/写访问权限,这将是疯狂的。

我认为他是错的,管道作为特定的指定用户运行,无论它们是如何启动的。问题是,如何找出给定管道的该用户是什么?

“编辑管道”在顶部附近有一个安全选项卡,其中列出了“Azure Devops 组”的一部分,这些组可能是有能力运行管道的组。

但是用户定义的管道在哪里呢?

Bow*_*SFT 5

Azure DevOps 管道以哪个用户身份运行?

这取决于您讨论问题的上下文。

如果您指的是纯 DevOps 服务内部,那么我可以告诉您,运行管道的用户不是触发管道的用户(默认情况下本机 DevOps 服务就是这种情况,除非您安装了一些奇怪的扩展或拥有管道特殊设计的问题),但这个身份:

<Project Name> Build Service帐户

“以某人身份运行”只是管道运行的一个属性。管道作为“构建服务帐户”运行(在 DevOps 端),如果您需要管道来下载或上传工件,您可以清楚地感受到这一点。如果上述帐户没有权限,您将无法执行任何操作。

如果你指的是基于Azure端的用户操作,那么我可以告诉你,对于原生DevOps服务来说,管道在Azure端执行操作的“用户”并不是触发管道的人。DevOps服务的管道由多个任务组成,任务通常通过服务连接与其他服务交互(可以在项目设置中找到)。

服务连接有多种类型。与Azure中的服务交互时,一般使用这种类型:

Azure Resource Manager -> Service principal

当您在DevOps端创建这种类型的服务连接时,Azure还将创建与此服务连接相关的AAD应用程序,并且此ADD应用程序对应于Azure中的服务主体。在 Azure 中,权限是根据服务主体或用户分配的,DevOps 管道对 Azure 的操作基于此服务主体,与 DevOps 中的其他任何内容无关。在 Azure 端,该服务主体可以被视为 DevOps 管道任务的 Azure 端“化身”。

如果您通过纯代码/纯脚本与Azure交互,那么请遵循脚本/代码的逻辑。

我们的管理员说,无论谁手动运行管道,管道都会运行。如果这是真的,我们将不得不授予所有开发人员和用户对博客存储的读/写访问权限,这将是疯狂的。

对于原生 DevOps 服务,当然不是。除非这条管道有特殊设计。