使用 GitHub Actions 部署自訂原則

GitHub Actions可讓您在 GitHub 存放庫中直接建立自訂的持續整合 (CI) 和持續部署 (CD) 工作流程。 本文描述如何使用 GitHub Actions,將 Azure Active Directory B2C (Azure AD B2C) 自訂原則的部署自動化。

若要將自訂原則部署流程自動化,請使用 GitHub 動作進行 Azure AD B2C 自訂原則部署。 此 GitHub 動作已由 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 原則檔案和其他資產。 在存放庫的根目錄中,建立或選擇包含您自訂原則的現有資料夾。

例如,請選取名為 policies 的資料夾。 將您的 Azure AD B2C 自訂原則檔案新增至 policies 資料夾。 現在,認可變更。

請不要推送變更。 您稍後會在設定部署工作流程之後執行此動作。

註冊 Microsoft Graph 應用程式

若要允許 GitHub 動作與 Microsoft Graph API 互動之前,請在您的 Azure AD B2C 租用戶中建立應用程式註冊。 如果您尚未這麼做,請註冊 Microsoft Graph 應用程式

若要讓 GitHub 動作存取 Microsoft Graph 中的資料,請將相關的應用程式權限授與已註冊的應用程式。 將應用程式註冊 API 權限內的 >Policy>Policy.ReadWrite.TrustFramework 權限授與 Microsoft Graph

建立 GitHub 加密祕密

GitHub 秘密是您在組織、存放庫或存放庫環境中建立的加密環境變數。 在此步驟中,您會針對稍早在註冊 MS Graph 應用程式步驟中註冊的應用程式儲存應用程式祕密。

用於部署 Azure AD B2C 自訂原則的 GitHub 動作會使用秘密來取得存取權杖,其是用來與 Microsoft Graph API 互動。 如需詳細資訊,請參閱建立存放庫的加密秘密

若要建立 GitHub 祕密,請遵循下列步驟:

  1. 在 GitHub 中,瀏覽至存放庫的主頁面。
  2. 在您存放庫的名稱下,選取 [設定]
  3. 在左側資訊看板中,選取 [秘密]
  4. 選取 [新增存放庫祕密]。
  5. 針對 [名稱],輸入 ClientSecret
  6. 針對 [值],輸入您稍早建立的應用程式祕密。
  7. 選取 [新增祕密]。

建立 GitHub 工作流程

GitHub 工作流程是您新增至存放庫的自動化程序。 工作流程是由一或多個作業所組成,而且可以由事件排定或觸發。 在此步驟中,您會建立一個工作流程,以部署您的自訂原則。

若要建立工作流程,請遵循下列步驟:

  1. 在 GitHub 中,瀏覽至存放庫的主頁面。

  2. 在您的存放庫名稱下,選取 [動作]

    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.onmicrosoft.com
    
    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 應用程式步驟中註冊的。
    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. 在您的存放庫名稱下,選取 [動作]

  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. 在您的存放庫名稱下,選取 [動作]

  3. 在左側資訊看板中,選取您所建立的工作流程。

  4. 在 [工作流程執行] 下,選取您要查看的執行名稱。

  5. 從功能表中,選取三個點 ...,然後選取 [檢視工作流程檔案]

    Screenshot showing how to view the workflow file

  6. 在 GitHub Web 編輯器中,選取 [編輯]

  7. on: push 變更為上述範例。

  8. 認可您的變更。

下一步