教程:将 OIDC/FIC 身份验证与用于 Microsoft Power Platform 的 GitHub Actions 配合使用

在本教程中,你将设置 GitHub OIDC 并Microsoft Entra 联合标识凭据(FIC),以便 GitHub Actions 可以在不存储客户端密码的情况下向 Power Platform 进行身份验证。

在本教程中,你将:

  • 在 GitHub 存储库中配置 OIDC
  • 创建 Microsoft Entra 应用注册并配置 FIC
  • 在 Power Platform 管理中心授予应用访问权限
  • 创建 GitHub 工作流以运行 Power Platform 操作

步骤 1:在 GitHub 存储库中配置 OIDC

OIDC 配置

  1. 在 GitHub 中,打开存储库并确保已启用 GitHub Actions。

    若要在存储库中启用 GitHub Actions,请选择“设置>”,然后在“常规下显示启用选项。 如果未在“设置”下看到“操作”,则你没有所需的存储库安全权限。

  2. 查看 OIDC 设置和主题声明自定义指南。 请参阅 GitHub Actions 中的 OpenID Connect

  3. 配置本教程的 OIDC 主体声明模板为 repository, workflow,如上图所示。 它为存储库中的每个工作流创建唯一的主题声明,然后可以在 Microsoft Entra ID 的联合凭据配置中引用该声明。

    主题格式解析为以下值:

    • repo:MyOrg/MyRepo:workflow:MyWorkflow
  4. 保存存储库 OIDC 配置。

步骤 2:创建Microsoft Entra 应用注册并添加 FIC

  1. Azure 门户中,转到 Microsoft Entra ID>应用注册>“新建注册”。

  2. 创建应用注册,并复制 应用程序(客户端)ID目录(租户)ID 值。

  3. 打开 API 权限>添加权限>Dynamics CRM 并授予 Dataverse 权限。

  4. 打开证书和机密(或联合凭据,具体取决于门户体验),并在Other选择

FIC 配置

  1. 使用此显式使用者标识符:

    repo:MyOrg/MyRepo:workflow:MyWorkflow

  2. 保存联合凭据。

注释

GitHub 中的使用者声明和联合凭据中的使用者标识符必须完全匹配。

步骤 3:在 Power Platform 管理中心授予应用访问权限

  1. 转到 Power Platform 管理中心

  2. 将 Entra ID 应用注册添加为应用程序用户,并在每个目标环境中分配所需的安全角色。

  3. 有关详细步骤,请参阅 Power Platform 管理中心中的“管理应用程序用户”。

步骤 4:创建 GitHub 工作流以运行 Power Platform 操作

  1. 在存储库中创建或更新工作流 .github/workflows/

  2. 确保工作流为运行 Power Platform 操作的作业请求 OIDC 令牌权限。

  3. 配置您的 Power Platform GitHub 操作以使用:

    • 租户 ID
    • 应用(客户端)ID
    • 环境 URL
    • 操作支持的基于 OIDC/FIC 的身份验证参数
  4. 将示例工作流 YAML 粘贴到此部分中,并更新环境的占位符。

# https://docs.github.com/en/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-azure
name: fic-auth

on:
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  who-am-i:

    runs-on: ubuntu-latest
    
    permissions:
      id-token: write # Grant permissions to the OIDC endpoint for federation
      contents: read
      
    steps:
    - name: Install Power Platform Tools
      uses: microsoft/powerplatform-actions/actions-install@v1
      with:
        pac-version-override: 2.4.1

    - name: WhoAmI
      uses: microsoft/powerplatform-actions/who-am-i@v1
      with:
        environment-url: https://MyOrg.crm.dynamics.com/
        app-id: 00000000-0000-0000-0000-000000000000 # Client (application) ID from your app registration
        tenant-id: 00000000-0000-0000-0000-000000000000 # Directory (tenant) ID from your app registration 

工作流运行时,GitHub 会颁发 OIDC 令牌。 Microsoft Entra 会根据您的联合凭据验证该令牌,该操作无需客户端密钥即可对 Dataverse/Power Platform 进行身份验证。

另见