使用以下代码使用 azure 函数从 KV 检索机密,但是当我运行测试/运行时,我不断收到 401 未经授权的错误。我已将标识更改为系统定义的,并分配生成的服务主体访问权限来获取、列出秘密。我还将身份验证级别设置为匿名。还有什么可能是错误的?
import os
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
def get_secret_from_azure_key_vault():
# Create a credential object from managed identity, environment variables, or Azure CLI
credential = DefaultAzureCredential()
# Create a secret client
client = SecretClient(vault_url="https://test1.vault.azure.net", credential=credential)
# Get the secret value
secret = client.get_secret("testsecret")
return secret.value
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
secret_value = get_secret_from_azure_key_vault()
return func.HttpResponse(f"The secret value is: {secret_value}.")
我对您的代码进行了一些更改,并且能够从 Key Vault 中检索密钥。
代码:
import os
import logging
import azure.functions as func
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
def get_secret_from_azure_key_vault():
credential = DefaultAzureCredential()
client = SecretClient(vault_url="https://<keyvault_name>.vault.azure.net/", credential=credential)
secret = client.get_secret("<secret_name>")
return secret.value
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
secret_value = get_secret_from_azure_key_vault()
return func.HttpResponse(f"The secret value is: {secret_value}.")
需求.txt:
azure-functions
azure-identity
azure-keyvault-secrets
我在功能应用程序中启用了身份,如下所示:
我授予了函数应用程序的访问权限,以从密钥库中检索密钥,如下所示:
输出:
运行成功如下,
我在浏览器中使用上述输出URL从密钥保管库检索了密钥,如下所示:
然后,我将上面的代码部署到函数应用程序中,如下所示,
Azure 门户:
函数代码成功运行并从密钥库中检索密钥,如下所示。