如何在无人值守的Azure Function中获取用户名和密码
Azure Function PowerShell 7 安全存储运行凭证的可行方案
推荐方案:Azure Key Vault + 系统托管标识
这是Azure官方推荐的生产级凭证管理方案,全程无明文暴露、无需手动维护凭证生命周期:
- 第一步:创建Azure Key Vault实例,将需要用到的用户名、密码分别作为独立机密存入Key Vault,也可根据需求直接存储结构化凭证信息
- 第二步:进入Azure Function配置页,开启系统分配的托管标识,开启后Azure会自动为该Function实例生成无需人工维护的身份凭证
- 第三步:回到Key Vault的访问控制(IAM)配置,为上述托管标识授予
密钥机密读取者权限,遵循最小权限原则,无需分配额外权限 - 第四步:在Azure Function的应用设置中,新增对应配置项,值填写Key Vault机密引用,格式为
@Microsoft.KeyVault(SecretUri=<对应机密的完整URI>),无需填写明文凭证 - 第五步:PowerShell代码中直接读取环境变量即可获取解密后的凭证内容,示例代码如下:
# 从应用配置环境变量读取明文凭证(Azure后台自动通过托管身份从Key Vault拉取解密,不会暴露明文) $user = $env:YOUR_USER_CONFIG_NAME $pwd = ConvertTo-SecureString $env:YOUR_PWD_CONFIG_NAME -AsPlainText -Force $cred = [System.Management.Automation.PSCredential]::new($user, $pwd)
兼容现有资产的替代方案:直接读取原Automation Account凭证
如果不想迁移已存在Automation Account中的凭证,可直接赋予Function托管标识Automation账户的凭证读取权限,直接复用现有资产:
- 给Function的系统托管标识分配Automation Account的
自动化操作员或更细粒度的凭证读取权限 - PowerShell代码中直接调用Az模块读取原有凭证,示例代码如下:
# 需提前在requirements.psd1中添加Az.Automation模块依赖 Connect-AzAccount -Identity $cred = Get-AzAutomationCredential -Name <原有凭证名称> -ResourceGroupName <Automation账户所属资源组> -AutomationAccountName <Automation账户名称>
补充说明
Azure Function的应用配置本身默认是静态加密的,但Key Vault方案额外提供了细粒度权限控制、凭证自动轮换、访问审计日志等安全能力,更符合生产环境安全合规要求。
内容的提问来源于stack exchange,提问作者AdamCodes716
相关产品推荐
相关产品推荐

