Azure DevOps:如何编程访问机密变量(Nx单仓多应用场景)
Nx单仓多应用在Azure DevOps中安全获取部署令牌的方案探讨
背景
采用Nx单代码仓库(包含多个应用),在Azure DevOps环境中需要获取各应用的部署令牌。由于直接将令牌存储在仓库的JSON文件中存在安全风险,计划通过以下方式优化:在应用的配置文件deployment-config.${target_environment}.json的secretName字段中保存机密名称,再通过脚本动态读取并获取对应机密,当前脚本框架如下:
for app in $apps; do # 检查应用是否存在对应环境的部署配置文件 configPath="apps/$app/deployment-configs/deployment-config.${{ parameters.target_environment }}.json" if [ -f "$configPath" ]; then secretName=$(jq -r '.secretName' "$configPath") # 从配置文件中提取机密名称 # TODO: 从安全存储中获取机密值 fi done
当前问题
已成功从配置文件中读取到机密的变量名称,但Azure DevOps流水线的机密必须显式作为env参数传递才能在脚本中调用,这种方式对跨3个环境的多应用来说管理成本极高,动态取值的写法(如secretValue=${!secretName})无法生效。需要找到无需显式配置环境变量的实现方式,同时询问Azure密钥保管库是否适用于该场景。
场景更新:静态Web应用的简化解决方案
针对静态Web应用场景,无需将令牌存入密钥保管库,可直接通过Azure CLI命令实时获取部署令牌:
az staticwebapp secrets list --name "$appName" --query "properties.apiKey" -o tsv
内容的提问来源于stack exchange,提问作者Andrea Costanzo
相关产品推荐
相关产品推荐

