如何将Packer Azure模板的Azure CLI认证改为OIDC认证?
将Packer Azure模板从Azure CLI认证改为OIDC认证的步骤
前置检查
确保你的Packer版本≥1.8.0,且Azure插件版本≥2.0.0,可通过以下命令检查:
packer plugins list | grep azure
版本不足的话,执行更新:
packer plugins install github.com/hashicorp/azure
一、Azure 侧配置
1. 创建Azure AD应用程序
- 登录Azure Portal,进入Azure Active Directory → 应用注册 → 新注册
- 填写应用名称,选择账户类型(按需选单租户/多租户),无需设置重定向URI,完成注册
- 记录应用的客户端ID和租户ID(在应用概述页面可查看)
2. 添加OIDC联合凭据
- 进入刚创建的应用程序 → 证书和密码 → 联合凭据 → 添加凭据
- 选择凭据类型为其他颁发者(如果是CI/CD环境,可选择对应平台如GitHub)
- 填写配置信息:
- 颁发者URL:根据你的OIDC提供商填写(本地测试可后续用Azure CLI生成临时token)
- 受众:固定填
https://management.azure.com/ - 主体标识符:填写你的身份标识(本地测试可填Azure账户的UPN,CI/CD环境填对应平台的身份标识)
- 保存凭据
3. 分配资源权限
- 找到Packer要操作的资源组(或直接选订阅),进入访问控制(IAM) → 添加角色分配
- 选择所需角色:至少需要虚拟机参与者、存储账户参与者、网络参与者(可根据模板实际操作调整)
- 成员类型选用户、组或服务主体,搜索并选中刚创建的应用程序,完成角色分配
二、Packer HCL模板修改
1. 移除CLI认证配置
删除模板中azure builder块里的use_azure_cli = true配置项
2. 添加OIDC认证参数
在azure builder块中加入以下配置:
client_id = "你的Azure AD应用客户端ID" tenant_id = "你的Azure租户ID" oidc_token = file("./oidc-token.json") # 本地测试用文件加载token,CI/CD可改用环境变量 audience = "https://management.azure.com/" # 可选,默认值即为该内容
如果用环境变量传入token,替换成:
oidc_token = env("OIDC_TOKEN")
3. 确认其他配置
确保模板里的resource_group、vm_size、image_publisher等资源配置项保持正确,无需额外调整
三、测试打包
1. 获取OIDC Token
- 本地测试:用Azure CLI生成临时token,保存到文件:
az account get-access-token --resource https://management.azure.com/ --output json > oidc-token.json - CI/CD环境:使用对应平台的OIDC服务自动生成token(比如GitHub Actions的
azure/login动作)
2. 执行打包
先验证模板合法性:
packer validate your-template.pkr.hcl
验证通过后执行打包:
packer build your-template.pkr.hcl
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

