如何使用 Powershell 在 Azure Function 中引用应用程序设置(密钥保管库引用)

How to reference application settings (key vault references) in Azure Function using Powershell

我正在 Powershell 中编写一个小程序,它连接到 Office 365 以下载审计日志,进行一些更改,然后将 CSV 导出到 Azure Data Lake Storage 帐户。为了 运行 这个过程按计划进行,我创建了一个 Azure Function 应用程序(计时器模板)来 运行 该程序。为了避免硬编码凭据,我创建了一个 Azure Key Vault 来存储凭据机密。我在 Azure Function 中创建了一个托管身份,使用凭据在 Azure Key Vault 中创建了机密,然后在 Azure Function 中的“配置”下使用 URL 创建了三个应用程序设置以指向存储在 Azure Key Vault 中的机密.

这三个应用程序设置称为“SecretUsername”、“SecretPassword”(指向 Office 365)和“SecretSAS”(将 CSV 存储在 ADLS 中)。

如何在我的 Powershell 脚本中引用这些变量?我在我的代码中尝试了不同的变体,但 none 似乎有效。示例:

如何引用 Azure Function 中的应用程序设置,以便我可以在我的程序中使用存储的机密?

请帮忙!非常感谢!

要访问应用程序设置,无论是否使用 keyvault,您都必须通过以下方式检索它:$env:APPSETTING_YourSettingName

因此,对于您的 keyvault 引用的秘密,您可以通过以下变量访问它。

$env:APPSETTING_SecretUserName
$env:APPSETTING_SecretPassword
$env:APPSETTING_SecretSAS

如果您需要列出它们。

Get-ChildItem env:APPSETTING_*

请注意,值 returned 将是纯文本未加密字符串。 因此,在您的代码中,这个:

 $uSecret = (Get-ChildItem ENV:SecretUsername).SecretValueText 

变成:

 $uSecret = $env:APPSETTING_SecretUserName

补充说明

既然评论里都提到了,那我就提一下。 我根本不提倡在应用程序设置中使用明文秘密。

应用程序设置应该是任何敏感数据的 keyvault 引用。 我只是说它可以在运行时通过 $env:APPSETTING_YourSettingName 变量在函数中检索为 clear-text。

示例: AppSetting 名称:MySecretUser AppSetting 值:@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931) 实际秘密值(在密钥库中):I_AM_Secret

在运行时,获取 $env:APPSETTING_MySecretUser 的值将 return 一个值为 I_AM_Secret

的字符串对象