gpt4 book ai didi

git - 是否可以使用服务主体访问azure上的git存储库?

转载 作者:行者123 更新时间:2023-12-02 06:17:25 30 4
gpt4 key购买 nike

我在组织内的 Microsoft Azure 存储库上托管了一个 git 存储库。

我希望能够自动从 Azure 外部托管的服务中“git pull”代码。

documentation仅提到使用个人访问 token 或私有(private) SSH key 进行 git 身份验证。

我不想使用个人访问 token ,因为该服务的其他开发人员可以访问它。

是否可以使用服务主体来从 Azure 存储库中提取代码?

最佳答案

截至 2021 年,这可能是正确的,但到 2023 年,我们将拥有绝对的魔力,即 OAuth tokens for AAD identities .

一个重要的警告 - 这仅适用于AAD 支持的 Azure DevOps

本质上,要仅使用服务主体克隆 Azure 存储库,我们需要遵循以下步骤

  1. 创建 Service Principal in the Azure Portal 。请注意,您可以在此处使用客户端 key 或证书身份验证,因为稍后您将在 Azure CLI 中使用凭据
  2. 将服务主体添加到您的 Azure Devops 组织,并为其分配您关心的 Azure 存储库的权限,就像您为任何其他用户分配的权限一样。 This excellent Microsoft page包含有关如何执行此操作的视频。实际上,您现在可以在用户列表中看到服务主体,它们的功能与任何其他“用户帐户”相同。
  3. 使用以下代码通过客户端 key (1) 或客户端证书 (2) 进行身份验证

az login --service-principal --allow-no-subscriptions --username[YOUR_APP_ID] --password [YOUR_CLIENT_SECRET] --tenant [YOUR_TENANT_ID]

az login --service-principal --allow-no-subscriptions --username [YOUR_APP_ID] --password [PATH_TO_YOUR_PEM_FILE] --tenant [YOUR_TENANT_ID]

  • 魔法。使用以下命令获取 OAuth token :
  • az account get-access-token --scope "499b84ac-1321-427f-aa17-267ca6975798/.default"

    请注意,此处的范围是硬编码的,因为它是 fixed value used by Microsoft

  • 这将返回一个类似于以下内容的 JSON 对象(这是经典的 OAuth 访问 token 结构):
  • {"accessToken": "eyJ0eXAiOiJKV1...","expiresOn": "2023-06-13 22:15:28.000000","subscription": "[YOUR SUBSCRIPTION]","tenant": "[YOUR TENANT]","tokenType": "Bearer"}

  • 扣篮。使用此 token 作为 git 克隆 URL 中的密码(示例如下):
  • git clone https://[ACCESS_TOKEN]@dev.azure.com/[YOUR_ORG]/[YOUR_PROJECT]/_git/[YOUR_REPOSITORY]

    令人难以置信的是,这将允许您纯粹使用服务主体来克隆存储库。我几乎不敢相信我正在写这篇文章,但欢迎来到 future 。

    编辑 另一位 SO 用户请求对此问题提供纯 cURL 答案,该答案记录在 different answer I provided here 中。

    关于git - 是否可以使用服务主体访问azure上的git存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67639199/

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