小编Hel*_*und的帖子

如何通过功能应用中的应用程序设置解析 KeyVault 对机密的引用?

我已经设置了一个单独的测试环境来尝试从 azure 密钥保管库中检索应用程序机密。当测试函数运行以返回环境变量时,应用程序设置中的 @Microsoft.KeyVault(...) 引用未解析为引用的机密或文本。

按照文档创建应用服务并根据密钥保管库对其进行身份验证,我为我的函数创建了一个托管标识,将其添加到 AAD,为此托管标识创建了一个特定的访问策略,并在我的密钥保管库中使用 Get Secret 范围,并尝试使用/不使用应用程序作为用户启用读取范围。

运行诊断工具来解析函数应用应用程序设置引用不会产生任何错误。输入应用程序设置为@Microsoft.KeyVault(SecretUri=SecretUri)

或者

@Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret;SecretVersion={version})
Run Code Online (Sandbox Code Playgroud)

似乎没有改变任何东西。我等待了长达半小时的设置更改以在 Azure 中复制并确保我所做的更改是持久的。

这是我返回环境变量的函数应用程序(用python编写):

import json
import logging
import os
import azure.functions as func


def main(req=None) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    try:
        name = [os.environ["CLIENTID"]]
    except:
        name=dict()

        for d in os.environ:
            name[d]=os.environ[d]
    if name:
        return func.HttpResponse("Params\n{}".format(json.dumps(name, sort_keys=True, indent=4)))
    else:
        return func.HttpResponse(
             "Please pass a name on the query string or in the request body",
             status_code=400
        )
Run Code Online (Sandbox Code Playgroud)

我希望能够提取环境变量 CLIENTID。相反,获取该变量失败并返回所有环境变量。如果我无法返回单一变量,我会故意返回所有环境变量,因为我想确保在变量重命名或存在键入/区分大小写问题时捕获了它。

azure azure-keyvault python-3.6 azure-functions

1
推荐指数
1
解决办法
5249
查看次数