如何验证 Azure Repos 服务与其他主体而非个人主体的连接?
How do I authenticate an Azure Repos service connection with another principal than a personal principal?
我是多个 Azure DevOps 组织的管理员。我工作的公司有一家姊妹公司,因此我们也有两个独立的 Azure DevOps 组织。
在这个问题中,我将它们称为 'company A',它具有 (Azure DevOps) 'organization A',和 'company B',它具有 (Azure DevOps) 'organization B'。
组织 A 和 B 都连接到同一个 Azure Active Directory 租户。
在组织 A 中,我有一个 Git 存储库 pipeline-tools,其中包含 PowerShell 脚本和 Azure Pipelines YAML 模板。 pipeline-tools 用于分散在所有项目和存储库中的所有 YAML 管道。
在组织 B 中,到目前为止我们一直在使用经典管道,但我们想迁移到 YAML 管道(组织 A 仅使用 YAML 管道)。
我可以将pipeline-tools repo复制到组织B,但我宁愿只有一个repo来更新每个例如,我想进行更改或添加 PowerShell 脚本的时间。
我知道这可以通过创建 Azure Repos 类型的服务连接来实现。但是,在阅读了文档之后,似乎只有两种方法可以验证服务连接; 基本 身份验证,或使用 个人访问令牌 (PAT).
我的问题是:我可以为该服务连接设置身份验证,使其不链接到个人帐户吗?
假设我通过 PAT 设置了身份验证;然后我需要自己管理 PAT 不会过期。如果我忘记了(例如我在度假)并且它过期了,那么组织 B 中的所有管道都将失败,因为服务连接身份验证中断。
此外,假设我停止为这家公司工作,并且我的帐户被删除:这将使我生成的所有 PAT 失效,并中断服务连接。
是否可以使用某种服务主体而不是个人主体进行身份验证?如果可能的话,我该如何实现?
非常感谢您的帮助!
在我工作的公司里,我自己也在为这个问题苦苦挣扎。我们在不同的项目和组织以及源代码控制模板中遇到了同样的问题。由于在没有 PAT 的情况下无法通过不同的组织与 Azure devops Repos 交互,因此我们决定拥有一个中央 Github
存储库并将所有文件存储在那里。
正如您提到的,PAT 与创建它的人相关联。您还可以出于开发运营目的在 azure 活动目录上创建一个新用户并使用这个用户,但 Github 解决方案可能会更好。
我们的做法:
我们从一个项目创建了与 Github 的连接,链接的应用程序出现在 Github 应用程序中。
这样,您将在组织的每个类型为 Github 的项目上建立服务连接(使用 azure 管道应用程序)
然后您将使用此服务连接在您的组织中下载代码,但您应该在 Github 上保留源代码控制。
代码示例:
resources:
repositories:
- repository: devops
type: github
name: ORG/DevOps
ref: azure-devops-dev
endpoint: MyConnectionWithGithubApp
在与 Microsoft 交谈后,很明显目前不支持此功能。
使用具有 PAT 或基本身份验证的服务连接类型 Azure Repos 是目前唯一受支持的身份验证方法。
您可以在 Visual Studio 开发者社区的问题报告中阅读更多相关信息:How do I authenticate an Azure Repos service connection with another principal than a personal principal?
我还创建了一个功能请求:Share Azure Repos hosted Git repos across multiple Azure DevOps organizations without using a PAT
我是多个 Azure DevOps 组织的管理员。我工作的公司有一家姊妹公司,因此我们也有两个独立的 Azure DevOps 组织。
在这个问题中,我将它们称为 'company A',它具有 (Azure DevOps) 'organization A',和 'company B',它具有 (Azure DevOps) 'organization B'。
组织 A 和 B 都连接到同一个 Azure Active Directory 租户。
在组织 A 中,我有一个 Git 存储库 pipeline-tools,其中包含 PowerShell 脚本和 Azure Pipelines YAML 模板。 pipeline-tools 用于分散在所有项目和存储库中的所有 YAML 管道。
在组织 B 中,到目前为止我们一直在使用经典管道,但我们想迁移到 YAML 管道(组织 A 仅使用 YAML 管道)。
我可以将pipeline-tools repo复制到组织B,但我宁愿只有一个repo来更新每个例如,我想进行更改或添加 PowerShell 脚本的时间。
我知道这可以通过创建 Azure Repos 类型的服务连接来实现。但是,在阅读了文档之后,似乎只有两种方法可以验证服务连接; 基本 身份验证,或使用 个人访问令牌 (PAT).
我的问题是:我可以为该服务连接设置身份验证,使其不链接到个人帐户吗?
假设我通过 PAT 设置了身份验证;然后我需要自己管理 PAT 不会过期。如果我忘记了(例如我在度假)并且它过期了,那么组织 B 中的所有管道都将失败,因为服务连接身份验证中断。
此外,假设我停止为这家公司工作,并且我的帐户被删除:这将使我生成的所有 PAT 失效,并中断服务连接。
是否可以使用某种服务主体而不是个人主体进行身份验证?如果可能的话,我该如何实现?
非常感谢您的帮助!
在我工作的公司里,我自己也在为这个问题苦苦挣扎。我们在不同的项目和组织以及源代码控制模板中遇到了同样的问题。由于在没有 PAT 的情况下无法通过不同的组织与 Azure devops Repos 交互,因此我们决定拥有一个中央 Github
存储库并将所有文件存储在那里。
正如您提到的,PAT 与创建它的人相关联。您还可以出于开发运营目的在 azure 活动目录上创建一个新用户并使用这个用户,但 Github 解决方案可能会更好。
我们的做法:
我们从一个项目创建了与 Github 的连接,链接的应用程序出现在 Github 应用程序中。
这样,您将在组织的每个类型为 Github 的项目上建立服务连接(使用 azure 管道应用程序)
然后您将使用此服务连接在您的组织中下载代码,但您应该在 Github 上保留源代码控制。
代码示例:
resources:
repositories:
- repository: devops
type: github
name: ORG/DevOps
ref: azure-devops-dev
endpoint: MyConnectionWithGithubApp
在与 Microsoft 交谈后,很明显目前不支持此功能。
使用具有 PAT 或基本身份验证的服务连接类型 Azure Repos 是目前唯一受支持的身份验证方法。
您可以在 Visual Studio 开发者社区的问题报告中阅读更多相关信息:How do I authenticate an Azure Repos service connection with another principal than a personal principal?
我还创建了一个功能请求:Share Azure Repos hosted Git repos across multiple Azure DevOps organizations without using a PAT