Python Azure 函数 - 使用 Key Vault 进行 MSI 身份验证
Python Azure Function - MSI Authentication with Key Vault
我正在尝试设置一个 Python Azure 函数,它将使用托管标识从密钥保管库中检索机密。我已授予我的 Function App 的托管标识访问 Key Vault 和从中检索机密的权限。我已经根据此处看到的 Microsoft 文档配置了我的 Python 脚本:
https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python
我没有使用默认凭据,而是尝试使用 MSI 身份验证,如此处所述:
https://docs.microsoft.com/en-us/azure/developer/python/azure-sdk-authenticate#mgmt-auth-msi
如果我使用 link 中提供的示例进行 MSI 身份验证,它就可以工作。但是当我使用 Key Vault 方法时,我收到以下错误:
MSIAuthentication' object has no attribute 'get_token'
我的代码如下所示
if name:
# Create MSI Authentication
credentials = MSIAuthentication()
try:
secret_client = SecretClient(vault_url="https://myvault.vault.azure.net", credential=credentials)
secret = secret_client.get_secret("mySecret")
return func.HttpResponse(f"My super secret is: {secret.value}!")
except Exception as e:
err = "type error: " + str(e)
return func.HttpResponse(f"{err}")
关于如何使此方法起作用的任何建议。
TIA
( 我知道我可以利用应用程序设置为 Key Vault 设置 link 并在我的 Python 脚本中引用该变量。此方法的问题是 Key Vault 密钥是当键被轮换,因此有必要重新启动功能应用程序)
您需要将 MSIAuthentication
更改为 ManagedIdentityCredential
。然后它会工作正常。此处的示例代码:
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credentials = ManagedIdentityCredential()
secret_client = SecretClient(vault_url="https://myKeyvault.vault.azure.net", credential=credentials)
secret = secret_client.get_secret("mysecret")
print(secret.value)
我正在尝试设置一个 Python Azure 函数,它将使用托管标识从密钥保管库中检索机密。我已授予我的 Function App 的托管标识访问 Key Vault 和从中检索机密的权限。我已经根据此处看到的 Microsoft 文档配置了我的 Python 脚本:
https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python
我没有使用默认凭据,而是尝试使用 MSI 身份验证,如此处所述:
https://docs.microsoft.com/en-us/azure/developer/python/azure-sdk-authenticate#mgmt-auth-msi
如果我使用 link 中提供的示例进行 MSI 身份验证,它就可以工作。但是当我使用 Key Vault 方法时,我收到以下错误:
MSIAuthentication' object has no attribute 'get_token'
我的代码如下所示
if name:
# Create MSI Authentication
credentials = MSIAuthentication()
try:
secret_client = SecretClient(vault_url="https://myvault.vault.azure.net", credential=credentials)
secret = secret_client.get_secret("mySecret")
return func.HttpResponse(f"My super secret is: {secret.value}!")
except Exception as e:
err = "type error: " + str(e)
return func.HttpResponse(f"{err}")
关于如何使此方法起作用的任何建议。
TIA
( 我知道我可以利用应用程序设置为 Key Vault 设置 link 并在我的 Python 脚本中引用该变量。此方法的问题是 Key Vault 密钥是当键被轮换,因此有必要重新启动功能应用程序)
您需要将 MSIAuthentication
更改为 ManagedIdentityCredential
。然后它会工作正常。此处的示例代码:
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credentials = ManagedIdentityCredential()
secret_client = SecretClient(vault_url="https://myKeyvault.vault.azure.net", credential=credentials)
secret = secret_client.get_secret("mysecret")
print(secret.value)