You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求在GitHub工作流(非自托管代理)中使用证书登录Azure SPN的端到端流程

在GitHub Actions(非自托管Runner)中使用证书登录Azure SPN的实现步骤

一、准备Azure服务主体(SPN)与证书

  1. 创建带证书的SPN
    使用Azure CLI执行以下命令,生成SPN并关联证书:

    az ad sp create-for-rbac --name "GitHub-Azure-SPN" --cert "C:\path\to\your\certificate.pfx" --cert-password "your-cert-password" --role "Contributor" --scopes "/subscriptions/your-subscription-id"
    

    执行后会返回包含clientId、tenantId的JSON结果,保存这两个值。

  2. 处理证书内容
    将PFX证书文件编码为无换行的base64格式:

    • Linux/macOS环境:
      cat certificate.pfx | base64 -w 0
      
    • Windows PowerShell环境:
      [Convert]::ToBase64String((Get-Content -Path "certificate.pfx" -Encoding Byte))
      
  3. 存储到GitHub Secrets
    在目标GitHub仓库的「Settings → Secrets and variables → Actions」中,添加以下4个Secrets:

    • AZURE_CLIENT_ID:SPN对应的clientId
    • AZURE_TENANT_ID:SPN对应的tenantId
    • AZURE_CERTIFICATE_CONTENT:上述生成的base64编码证书内容
    • AZURE_CERTIFICATE_PASSWORD:证书设置的密码(未设置则可省略)

二、编写GitHub工作流文件

在仓库的.github/workflows目录下创建YAML配置文件(例如azure-cert-login.yml),示例内容如下:

name: Azure Login with Certificate
on: [push]

jobs:
  login-verify:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Azure Login via Certificate
        uses: azure/login@v1
        with:
          creds: |
            {
              "clientId": "${{ secrets.AZURE_CLIENT_ID }}",
              "tenantId": "${{ secrets.AZURE_TENANT_ID }}",
              "certificateContent": "${{ secrets.AZURE_CERTIFICATE_CONTENT }}",
              "certificatePassword": "${{ secrets.AZURE_CERTIFICATE_PASSWORD }}"
            }

      - name: Verify Login Status
        run: az account show

关键注意事项

  • 仅支持PFX格式的证书,PEM格式无法直接被azure/login action识别
  • base64编码的证书内容不能包含换行符,否则会触发登录失败
  • 需确保SPN拥有目标Azure资源的对应权限(示例中为Contributor角色,可按需调整)
  • GitHub托管的Runner无需额外配置环境,azure/login action会自动完成证书加载与身份验证流程

内容的提问来源于stack exchange,提问作者vamsi krishna paruchuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:48:29