检索集成在 httptrigger/queuetrigger -Python 中的 Keyvault 秘密
Retrieving Keyvault Secret Integrated in a httptrigger/queuetrigger -Python
我已经成功地在 httptrigger 中集成了一个秘密。我需要检索并解析 python 代码中的秘密。
以下代码 returns 保险库 ID 而不是秘密。
- 如何让它输出秘密值?
- 队列触发器也可以这样做吗?
HTTP 触发器
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 后,还需要将其添加到函数应用程序的应用程序设置中。
另外不要忘记启用函数应用程序的“身份”。
然后在密钥库中添加访问策略以允许您的函数可以访问密钥库。
顺便说一句,看来你的所有步骤都是正确的。所以请注意,上面的所有步骤都会获取存储在我的密钥库中的秘密值,如下图所示。
所以请检查您是否误解了azure函数中get keyvault的功能。
How do I get it to output a secret values?
1,创建一个secret,设置值,获取'secret identifier',将这个@Microsoft.KeyVault(SecretUri=<secret identifier>)
设置为你的函数应用程序的设置。
2、创建函数app身份,让函数身份访问对keyvault有相应的访问策略。
Can the same be done for a queuetrigger?
是的,你可以。基本上你可以从环境变量中获取它,就像你在 httptrigger 中所做的那样。存储在函数应用配置中的值将作为应用内环境变量读取。如果有keystore引用,只要引用成功,就会返回secret。否则,将返回原来的url
我已经成功地在 httptrigger 中集成了一个秘密。我需要检索并解析 python 代码中的秘密。
以下代码 returns 保险库 ID 而不是秘密。
- 如何让它输出秘密值?
- 队列触发器也可以这样做吗?
HTTP 触发器
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 后,还需要将其添加到函数应用程序的应用程序设置中。
另外不要忘记启用函数应用程序的“身份”。
然后在密钥库中添加访问策略以允许您的函数可以访问密钥库。
顺便说一句,看来你的所有步骤都是正确的。所以请注意,上面的所有步骤都会获取存储在我的密钥库中的秘密值,如下图所示。
How do I get it to output a secret values?
1,创建一个secret,设置值,获取'secret identifier',将这个@Microsoft.KeyVault(SecretUri=<secret identifier>)
设置为你的函数应用程序的设置。
2、创建函数app身份,让函数身份访问对keyvault有相应的访问策略。
Can the same be done for a queuetrigger?
是的,你可以。基本上你可以从环境变量中获取它,就像你在 httptrigger 中所做的那样。存储在函数应用配置中的值将作为应用内环境变量读取。如果有keystore引用,只要引用成功,就会返回secret。否则,将返回原来的url