Python 3.x 检索集成在httptrigger/queuetrigger-Python中的Keyvault机密

Python 3.x 检索集成在httptrigger/queuetrigger-Python中的Keyvault机密,python-3.x,azure-functions,azure-keyvault,Python 3.x,Azure Functions,Azure Keyvault,我已成功地将一个秘密集成到httptrigger中。我需要检索并解析python代码中的秘密 下面的代码返回vault id,而不是密码 如何让它输出一个秘密值? 对于queuetrigger也可以这样做吗? Httptrigger import logging import os import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('

我已成功地将一个秘密集成到httptrigger中。我需要检索并解析python代码中的秘密

下面的代码返回vault id,而不是密码

如何让它输出一个秘密值? 对于queuetrigger也可以这样做吗? Httptrigger

import logging
import os
import azure.functions as func


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

    test = os.environ["testkeyvault"]
    return func.HttpResponse(
             "This" + test,
             status_code=200
        )
local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "testkeyvault": "@Microsoft.KeyVault(SecretUri=https://jjjjj.vault.azure.net/secrets/AzureAuthUrl/xxxxxx)"
  }
}
function.json

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
}

对于这个问题,我在我这边测试它。您只需要将您的功能部署到azure,它就会正常工作。如果在本地运行函数,则无法获取密钥库

将函数部署到azure后,还需要将其添加到函数应用程序的应用程序设置中。

另外,不要忘记启用功能应用程序的标识。

然后在keyvault中添加访问策略,以允许您的功能访问keyvault。

顺便说一句,你所有的步骤似乎都是正确的。因此,请注意,上面的所有步骤都将获得存储在my keyvault show中的机密值,如下面的屏幕截图所示。
因此,请检查您是否误解了azure函数中get-keyvault的功能。

对于此问题,我将在我这边进行测试。您只需要将您的功能部署到azure,它就会正常工作。如果在本地运行函数,则无法获取密钥库

将函数部署到azure后,还需要将其添加到函数应用程序的应用程序设置中。

另外,不要忘记启用功能应用程序的标识。

然后在keyvault中添加访问策略,以允许您的功能访问keyvault。

顺便说一句,你所有的步骤似乎都是正确的。因此,请注意,上面的所有步骤都将获得存储在my keyvault show中的机密值,如下面的屏幕截图所示。 因此,请检查您是否误解了azure函数中get-keyvault的功能

如何让它输出一个秘密值

1,创建一个秘密,设置值,并获取“秘密标识符”,将此@Microsoft.KeyVaultSecretUri=设置为函数应用程序的设置

2、创建功能应用程序标识,并让功能标识访问具有对keyvault的相应访问策略

对于queuetrigger也可以这样做吗

是的,你可以。基本上,您可以像在httptrigger中一样从环境变量中获取它。存储在函数app配置中的值将作为应用内环境变量读取。如果存在密钥库引用,只要引用成功,就会返回密钥。否则,将返回原始url

如何让它输出一个秘密值

1,创建一个秘密,设置值,并获取“秘密标识符”,将此@Microsoft.KeyVaultSecretUri=设置为函数应用程序的设置

2、创建功能应用程序标识,并让功能标识访问具有对keyvault的相应访问策略

对于queuetrigger也可以这样做吗


是的,你可以。基本上,您可以像在httptrigger中一样从环境变量中获取它。存储在函数app配置中的值将作为应用内环境变量读取。如果存在密钥库引用,只要引用成功,就会返回密钥。否则,将返回原始url

Hi,请参考我的解决方案,如下所示。请注意最后一个屏幕截图。您好,请参考我的解决方案,如下所示。请注意最后一个屏幕截图。我如何修改return func.HttpResponsetest'来给我一个字符串变量,比如说“k”,我可以在代码中解析它。尝试了k=return funct.HttpResponsejson.dumpstest`但就是不起作用。对不起,我不太熟悉这个请求module@wwnde请稍候。@wwnde是否返回字符串?是,以便将该字符串作为密码输入到portal@wwnde您将在哪里进行处理?从响应中获取响应体可以吗?如何修改return func.HttpResponsetest'以给我一个字符串变量,比如“k”,我可以在代码中对其进行解析。尝试了k=return funct.HttpResponsejson.dumpstest`但就是不起作用。对不起,我不太熟悉这个请求module@wwnde请稍候。@wwnde是否返回字符串?是,以便将该字符串作为密码输入到portal@wwnde您将在哪里进行处理?从响应中获取响应体可以吗?这里的最终游戏是将该秘密解析为登录门户的密码。如果我按照惯例从keyvault获取机密(如果未集成到函数中),则以下方法效果良好;test=secret\u client.get\u secretTestSecret\n gis=gishttps://fghy.com,yyy,测试。如果如您所示集成到函数中,我如何将测试提取为字符串以解析到门户中?@wwnde很抱歉延迟,我手头还有其他东西,但稍后我会对其进行一些研究。可能我只是没有按要求演示。我需要的是创建一个函数,
它获得了一个金库秘密的钥匙。使用密钥vault secret登录门户。获取一些数据并将这些数据发布到http触发器主体中。如果可以的话,我很乐意提出一个新问题help@wwnde我认为这是可以实现的,但我仍然想知道你问题的更多细节。如果我不能解决这个问题,可能堆栈溢出上的其他社区会帮助您发布新帖子。@wwnde好的,我会检查。这里的最后一个游戏是将密码解析为登录门户的密码。如果我按照惯例从keyvault获取机密(如果未集成到函数中),则以下方法效果良好;test=secret\u client.get\u secretTestSecret\n gis=gishttps://fghy.com,yyy,测试。如果如您所示集成到函数中,我如何将测试提取为字符串以解析到门户中?@wwnde很抱歉延迟,我手头还有其他东西,但稍后我会对其进行一些研究。可能我只是没有按要求演示。我需要的是创建一个函数,它获取一个密钥vault secret。使用密钥vault secret登录门户。获取一些数据并将这些数据发布到http触发器主体中。如果可以的话,我很乐意提出一个新问题help@wwnde我认为这是可以实现的,但我仍然想知道你问题的更多细节。如果我不能解决这个问题,可能堆栈溢出上的其他社区会帮助您完成新的帖子。@wwnde好的,我会检查。