gpt4 book ai didi

php - Azure Key Vault 和托管身份 - 使用 REST 进行本地开发

转载 作者:行者123 更新时间:2023-12-03 04:46:04 25 4
gpt4 key购买 nike

我有一个托管在 Azure VM 中的 php 应用程序,在 Key Vault 中包含一些 secret 。我已设置托管身份并授予对保管库的访问权限。

因此,我的应用程序可以使用从 Azure 实例元数据服务 (AIMS 169.254.169.254) 获取的 token 成功从保管库获取 secret 。

Azure SDK for php 不支持 Key Vault,因此我使用 REST 接口(interface)。

我的问题是在本地运行时,即我的代码在 VSCode 中的桌面上运行时,我无法调用 AIMS 来获取 token ,因为我的本地计算机上没有托管身份。

我能想到的只有两个选择:

  • 开发人员创建一个环境变量来保守 secret ,或者
  • 在我的代码中包含一个 localSettings 文件,其中包含用于存储 secret 的设置

然后我可以确定代码是否在本地运行,如果是,则从该环境变量或 localSettings 中读取 secret 。

有谁知道更好的方法吗?

谢谢

请注意,Visual Studio 提供了 AzureServiceTokenProvider(),它使用登录用户的凭据来获取 token 。但不幸的是,这对我来说不可用。

最佳答案

据我所知,我们还没有办法使用Azure MSI在本地开发PHP应用程序。因此,如果您想在本地访问 Azure Key Vault,我建议您使用服务主体在本地访问 Azure Key Vault。详细步骤如下。1.创建服务主体

az ad sp create-for-rbac -n <your-application-name> --skip-assignment
az keyvault set-policy --name <your-key-vault-name> --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list purge recover restore set
  • 获取 Azure AD 访问 token
  • Method : Post
    Url: https://login.microsoftonline.com/{{directoryId}}/oauth2/v2.0/token
    Header: Content-Type: application/x-www-form-urlencoded
    Body:
    grant_type=client_credentials
    client_id=<>
    client_secret=<>
    scope=https://vault.azure.net/.default
  • 调用 key vault rest api例如获取 secret
  • Method: GET
    Url: {vaultBaseUrl}/secrets/{secret-name}/{secret-version}?api-version=7.0
    Header: Authorization : Bearer <access token>

    更多详情请引用blog .

    关于php - Azure Key Vault 和托管身份 - 使用 REST 进行本地开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58856673/

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