无法通过 Azure 函数应用程序从 Azure KV 检索机密

问题描述 投票:0回答:1

使用以下代码使用 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}.")
azure azure-keyvault
1个回答
0
投票

我对您的代码进行了一些更改,并且能够从 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

我在功能应用程序中启用了身份,如下所示:

enter image description here

我授予了函数应用程序的访问权限,以从密钥库中检索密钥,如下所示:

enter image description here

输出:

运行成功如下,

enter image description here
enter image description here

我在浏览器中使用上述输出URL从密钥保管库检索了密钥,如下所示:

enter image description here

然后,我将上面的代码部署到函数应用程序中,如下所示,

enter image description here

Azure 门户:

函数代码成功运行并从密钥库中检索密钥,如下所示。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.