gpt4 book ai didi

azure-devops - 在 Azure DevOps 构建管道中使用托管标识

转载 作者:行者123 更新时间:2023-12-03 17:13:36 26 4
gpt4 key购买 nike

我设法让下面的代码工作( complete code here )以使用 Azure 托管标识进行身份验证(通过 Visual Studio),并且无需使用凭据即可访问 Azure 存储帐户。

const string storageResource = "https://storage.azure.com/";

var authResult = await azureServiceTokenProvider.GetAuthenticationResultAsync(storageResource, cancellationToken: cancellationToken);


该代码设法找到我的用户登录到 Visual Studio 并使用它来获取 token ,一切顺利。

但是,此代码作为 Azure DevOps 构建管道中库集成测试的一部分执行。

我找到了在 Azure DevOps 中创建到 Azure 的服务连接时创建的服务主体,并为它提供了相同的 Storage Blob Data Contributor希望 Azure DevOps 使用它来运行代码的角色,但没有成功。

所以我的问题是:

如何获取在 Azure DevOps 构建管道中运行的代码,以便能够使用 AzureServiceTokenProvider 进行身份验证?

顺便说一句,错误信息:

Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException : Parameters: Connection String: [No connection string specified], Resource: https://storage.azure.com/, Authority: . Exception Message: Tried the following 3 methods to get an access token, but none of them worked. Parameters: Connection String: [No connection string specified], Resource: https://storage.azure.com/, Authority: . Exception Message: Tried to get token using Managed Service Identity. Access token could not be acquired. Failed after 5 retries. MSI ResponseCode: BadRequest, Response: {"error":"invalid_request","error_description":"Identity not found"} Parameters: Connection String: [No connection string specified], Resource: https://storage.azure.com/, Authority: . Exception Message: Tried to get token using Visual Studio. Access token could not be acquired. Visual Studio Token provider file not found at "C:\Users\VssAdministrator\AppData\Local.IdentityService\AzureServiceAuth\tokenprovider.json" Parameters: Connection String: [No connection string specified], Resource: https://storage.azure.com/, Authority: . Exception Message: Tried to get token using Azure CLI. Access token could not be acquired. ERROR: Please run 'az login' to setup account.

TearDown : System.NullReferenceException : Object reference not set to an instance of an object.

最佳答案

在 Azure DevOps 中创建服务连接时,您会看到(截至撰写时)4 个选项。

  • 服务主体(也称为 Azure Active Directory 中的应用注册)
  • 管理身份
  • 发布简介

  • New Azure service connection
    发布配置文件是一种 Azure 应用服务特定的身份验证机制,可让你通过 Kudu 发布。
    管理身份有些贴错标签。它们用于允许运行 Azure 管道的 VM 充当该 VM 的托管标识(然后,您可以授予此托管标识访问您希望它能够在 Azure 门户中访问的资源的权限)。这与其他身份验证方法的工作方式有些相反,但我想当您在 Azure 中的 VM 上托管自己的 Azure 管道时,这是有道理的。此选项有此警告。 AzureServiceTokenProvider只能在暴露 MSI_ENDPOINT 的环境中工作(又名 IDENTITY_ENDPOINT)。托管的 Azure DevOps 管道不是这样的环境。
    服务主体是您很可能会使用的。
    服务主体有自动和手动两种。再次贴错标签。自动选项实际上没有任何自动功能,唯一发生的事情是它在您的 Azure AD 中为您提供服务主体。它将授予服务主体订阅级别的贡献者角色(这意味着对订阅中除访问控制之外的所有内容的完全访问权限)。您不应授予服务主体这种访问权限。这是过度的。请记住,您的服务主体仅受凭据保护,如果它们泄漏,它们将允许任何人造成无法弥补的伤害。

    关于azure-devops - 在 Azure DevOps 构建管道中使用托管标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56861259/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com