密钥的 Azure Function Key Vault 参考映射

Azure Function Key Vault reference mapping for keys

提问人:lafe 提问时间:11/9/2023 更新时间:11/10/2023 访问量:76

问:

如果 Azure 环境配置正确,则可以在 Azure 函数的配置中使用“Azure Key Vault 引用”,以自动导入机密或证书作为该 Azure 函数的环境变量。不幸的是,我无法以相同的方式将密钥(例如私钥)连接到 Azure 函数。

我使用值“@Microsoft.KeyVault(SecretUri=https://xxxx.vault.azure.net/keys/TestKey/)”以及“@Microsoft.KeyVault(SecretUri=https://xxxx.vault.azure.net/secrets/TestKey/)”来访问密钥,但在这两种情况下都未成功。第一个值是 Azure Key Vault 中密钥属性中可用作“密钥标识符”的值,但似乎没有“证书”区域中的“机密标识符”。毋庸置疑,这两个值都不会映射到 Azure Key Vault,而只是返回我在其中输入的字符串。

由于缺少“秘密标识符”链接,我怀疑此功能可能不受支持,但是,我找不到任何确认。我的方法是否有问题,或者它只是一个不受支持的功能?

azure-functions azure-keyvault

评论

0赞 Mahdi Salah 11/9/2023
首先,请检查 KeyVault 配置中是否授权 Azure 函数从 keyVault 读取数据。其次,您可以添加秘密版本并检查 i是可选的?@Microsoft.KeyVault(SecretUri=xxxx.vault.azure.net/secrets/KeyName/KeyVersion)
0赞 lafe 11/10/2023
@MahdiSalah Azure 函数的托管标识具有所需的权限(我向测试应用授予了与密钥和机密相关的所有内容的完全权限)。为了验证 Key Vault 和 Azure 函数之间的常规连接,我在 Key Vault 中还有一个机密,该机密已正确读取。引用版本不会更改行为。
0赞 Ikhtesam Afrin 11/10/2023
@lafe我相信它给出了完整的字符串,因为键中没有值
0赞 Ikhtesam Afrin 11/10/2023
@lafe AFAIK,像我们对机密和证书所做的那样直接引用密钥是不可行的。相反,可以使用密钥保管库 Rest API 或库来获取密钥 pypi.org/project/azure-keyvault-keys

答:

1赞 Ikhtesam Afrin 11/10/2023 #1

由于缺少“秘密标识符”链接,我怀疑此功能可能不受支持,但是,我找不到任何确认。我的方法是否有问题,或者它只是一个不受支持的功能?

AFAIK,直接从 Key Vault 获取密钥是不可行的,就像我们使用 .@Microsoft.KeyVault(SecretUri={Secret_identifier})

相反,您可以使用 Key Vault REST API 来获取密钥,也可以使用库,就像我在下面使用的那样 -

from  azure.identity  import  DefaultAzureCredential
from  azure.keyvault.keys  import  KeyClient

credential  =  DefaultAzureCredential()  
key_client  =  KeyClient(vault_url="https://{Keyvault_name}.vault.azure.net/", credential=credential)
key  =  key_client.get_key("{Key_name}")
print(key.name)

输出-

enter image description here

引用-

如何在函数应用中引用 Azure Key Vault 中的密钥? - 堆栈溢出

适用于 Python 的 Azure Key Vault 密钥客户端库