如何将Azure Key Vault密钥注入Azure存储账户FileShare连接字符串
操作前置配置
- 进入Azure Key Vault中新建机密,将存储账户FileShare对应的访问密钥作为机密值存入,记好你设置的机密名称。
- 为运行PowerShell脚本的账号/托管身份/服务主体,授予Key Vault的机密读取权限,确保有权限拉取密钥。
- 运行脚本的设备提前安装
Az.KeyVaultPowerShell模块,提前完成Azure身份认证。
调整后实现逻辑
脚本运行时直接从Key Vault动态拉取存储访问密钥,不需要把密钥明文写死在脚本代码里,彻底实现密钥脱敏,修改后完整脚本如下:
# 完成Azure身份认证,若使用托管身份可去掉Tenant参数,直接用Connect-AzAccount -Identity即可 Connect-AzAccount -Tenant "你的Azure租户ID" # 从Key Vault拉取存储访问密钥 $storageKey = Get-AzKeyVaultSecret -VaultName "你的Key Vault名称" -Name "你存入的机密名称" -AsPlainText $fileShareAddr = "你的FileShare地址,例如xxx.file.core.chinacloudapi.cn" $fileSharePath = "\\$fileShareAddr\你的共享名" $user = "Azure\你的存储账户名" $connectTestResult = Test-NetConnection -ComputerName $fileShareAddr -Port 445 if ($connectTestResult.TcpTestSucceeded) { # 保存凭据实现重启后挂载依然生效 cmd.exe /C "cmdkey /add:`"$fileShareAddr`" /user:`"$user`" /pass:`"$storageKey`"" # 挂载驱动器 New-PSDrive -Name Z -PSProvider FileSystem -Root $fileSharePath -Persist } else { Write-Error -Message "无法连通FileShare的445端口,请检查网络配置" }
注意事项
- 若脚本在Azure虚拟机内运行,建议开启系统分配托管身份,无需在脚本内写任何身份认证信息,安全性更高。
- Key Vault本身可以开启软删除和清除保护,避免机密意外丢失。
内容的提问来源于stack exchange,提问作者Bill Donofrio
相关产品推荐
相关产品推荐

