使用 GitHub Actions 部署自定义策略

通过 GitHub Actions,可以直接在 GitHub 存储库中创建自定义持续集成 (CI) 和持续部署 (CD) 工作流。 本文介绍如何使用 GitHub Actions 自动部署 Azure Active Directory B2C (Azure AD B2C) 自定义策略

若要自动执行自定义策略部署过程,请使用 GitHub Action 来部署 Azure AD B2C 自定义策略。 此 GitHub Action 由 Azure AD B2C 社区开发

此操作使用 Microsoft Graph API 将 Azure AD B2C 自定义策略部署到 Azure AD B2C 租户中。 如果租户中尚不存在该策略,则会创建该策略。 否则,它将被替换掉。

重要

借助 Azure Pipelines 管理 Azure AD B2C 自定义策略目前使用 Microsoft Graph API /beta 终结点上提供的预览操作。 不支持在生产应用程序中使用这些 API。 有关详细信息,请参阅 Microsoft Graph REST API beta 版本终结点参考

先决条件

选择自定义策略文件夹

GitHub 存储库可以包含所有 Azure AD B2C 策略文件和其他资产。 在存储库的根目录中,创建或选择包含自定义策略的现有文件夹。

例如,选择名为“策略”的文件夹。 将 Azure AD B2C 自定义策略文件添加到“策略”文件夹。 然后提交更改。

请不要推送更改。 你将在稍后设置部署工作流后执行此操作。

注册 Microsoft Graph 应用程序

若要允许 GitHub Action 与 Microsoft Graph API 交互,请在 Azure AD B2C 租户中创建应用程序注册。 如果你尚未进行这一步,请注册 Microsoft Graph 应用程序

若要让 GitHub Action 访问 Microsoft Graph 中的数据,请向已注册的应用程序授予相关应用程序权限。 在应用注册的“API 权限”中授予了“Microsoft Graph”>“策略”>“Policy.ReadWrite.TrustFramework”权限 。

创建 GitHub 加密机密

GitHub 机密是在组织、存储库或存储库环境中创建的加密环境变量。 在此步骤中,将存储之前在注册 MS Graph 应用程序步骤中注册的应用程序的应用程序机密。

用于部署 Azure AD B2C 自定义策略的 GitHub Action 使用机密来获取用于与 Microsoft Graph API 交互的访问令牌。 有关详细信息,请参阅为存储库创建加密机密

若要创建 GitHub 机密,请按这些步骤操作:

  1. 在 GitHub 中,导航到存储库的主页。
  2. 在存储库名称下,选择“设置”。
  3. 在左侧边栏中,选择“机密”。
  4. 选择“新建存储库机密”。
  5. 对于“名称”,键入“ClientSecret” 。
  6. 对于“值”,输入之前创建的应用程序机密。
  7. 选择“添加机密”。

创建 GitHub 工作流

GitHub 工作流是你添加到存储库的自动化过程。 工作流由一个或多个作业组成,可以由事件计划或触发。 在此步骤中,你将创建部署自定义策略的工作流。

若要创建工作流,请执行以下步骤:

  1. 在 GitHub 中,导航到存储库的主页。

  2. 在存储库名称下,选择“Actions”。

    Screenshot showing the GitHub Actions tab

  3. 如果之前没有配置工作流,请选择“自行设置工作流”。 否则,请选择“新建工作流”。

    Screenshot showing how to create a new workflow

  4. GitHub 提出在 .github/workflows 文件夹中创建一个名为 main.yml 的工作流文件。 此文件包含有关工作流的信息,包括 Azure AD B2C 环境和要部署的自定义策略。 在 GitHub Web 编辑器中,添加以下 YAML 代码:

    on: push
    
    env:
      clientId: 00000000-0000-0000-0000-000000000000
      tenant: your-tenant.partner.onmschina.cn
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2
    
        - name: 'Upload TrustFrameworkBase Policy'
          uses: azure-ad-b2c/deploy-trustframework-policy@v3
          with:
            folder: "./Policies"
            files: "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml"
            tenant: ${{ env.tenant }}
            clientId: ${{ env.clientId }}
            clientSecret: ${{ secrets.clientSecret }}
    
  5. 更新 YAML 文件的以下属性:

    部分 名称
    env clientId 你在注册 MS Graph 应用程序步骤中注册的应用程序的“应用程序(客户端)ID”。
    env tenant 你的 Azure AD B2C 租户名称(例如,contoso.onmicrosoft.com)。
    with folder 存储自定义策略文件的文件夹,例如 ./Policies
    with files 要部署的以逗号分隔的策略文件列表,例如 TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml

    重要

    运行代理并上传策略文件时,请确保按正确顺序上传它们:

    1. TrustFrameworkBase.xml
    2. TrustFrameworkLocalization.xml
    3. TrustFrameworkExtensions.xml
    4. SignUpOrSignin.xml
    5. ProfileEdit.xml
    6. PasswordReset.xml
  6. 选择“开始提交”。

  7. 在“提交消息”字段下方,指示是将提交添加到当前分支还是新分支。 选择“提交新文件”或“建议新文件”以创建拉取请求 。

测试工作流

若要测试创建的工作流,请推送自定义策略的更改。 作业开始运行后,你可以在 GitHub 上查看运行进度的可视化图以及每个步骤的活动。

  1. 在 GitHub 中,导航到存储库的主页。

  2. 在存储库名称下,选择“Actions”。

  3. 在左侧边栏中,选择已创建的工作流。

  4. 在“工作流运行”下,选择要查看的运行的名称。

    Screenshot showing how to select workflow activity

  5. 在“作业”下或在可视化图中,选择要查看的作业。

  6. 查看每一步的结果。 以下屏幕截图演示了“上传自定义策略”步骤日志。

    The upload custom policy step log

可选:计划工作流

创建的工作流由推送事件触发。 如果你愿意,可以选择另一个事件来触发工作流,例如拉取请求

还可以使用 POSIX cron 语法计划工作流在特定 UTC 时间运行。 可以通过计划事件在计划的时间触发工作流。 有关详细信息,请参阅计划事件

以下示例在每天 5:30 和 17:30 UTC 时间触发工作流:

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'

若要编辑工作流,请执行以下操作:

  1. 在 GitHub 中,导航到存储库的主页。

  2. 在存储库名称下,选择“Actions”。

  3. 在左侧边栏中,选择已创建的工作流。

  4. 在“工作流运行”下,选择要查看的运行的名称。

  5. 从菜单中选择三个点“...”,然后选择“查看工作流文件” 。

    Screenshot showing how to view the workflow file

  6. 在 GitHub Web 编辑器中,选择“编辑”。

  7. on: push 更改为上面的示例。

  8. 提交更改。

后续步骤