Connect GitHub Enterprise Cloud repositories to Azure SRE Agent

Important

這項 Azure SRE 代理的功能目前正處於預覽階段。 請參閱Microsoft Azure 預覽的補充使用條款,以了解適用於 Azure 測試版、預覽版或其他尚未正式發布的功能的法律條款。

使用 BYO (Bring Your Own) GitHub App,將 GitHub Enterprise Cloud (<TENANT>.ghe.com) 或 github.com 上裝載的存放庫連線到您的 Azure SRE Agent。 代理程式會從你應用程式的私鑰鑄造短暫的安裝權杖,該私鑰儲存在 Azure Key Vault 中,且永遠不會被複製。

Note

BYO GitHub App 同時適用於 github.com*.ghe.com 主機。 關於帶有 OAuth 或 PAT 的 github.com,請參見 Set GitHub connector

何時使用 BYO GitHub 應用程式認證

以下情況下使用 BYO 應用程式:

  • 您的組織需要基於應用程式的認證與金鑰保管控制。
  • 你是在連接 *.ghe.com 倉庫(必須,因為 GHE 主機無法使用 OAuth 和 PAT)。
  • 你要的是以安裝權杖為基礎的存取,而不是使用者權杖。

先決條件

需求 詳細資料
Azure SRE 代理程式 處於 運行中 狀態的代理,具有 管理員標準使用者 角色
GitHub 應用程式 在目標主機上建立的GitHub應用程式(github.com<TENANT>.ghe.com
GitHub 管理員存取權 組織或倉庫管理員權限以建立、安裝或驗證 GitHub 應用程式範圍
Azure Key Vault 一個可以儲存 GitHub 應用程式私鑰的保險庫
受管理的識別 可將 金鑰保存庫 Secrets User 角色指派給 Agent 的受控識別

建立一個 GitHub 應用程式

如果你已經有具備正確權限的 GitHub App,可以跳到 將私鑰儲存在 Azure Key Vault

  1. 前往你的 GitHub 主機:
    • github.com:前往你的組織 >設定>開發人員設定>GitHub 應用程式>新增 GitHub 應用程式
    • <TENANT>.ghe.com:您 GHE 執行個體上的相同路徑
  2. 填寫應用程式細節:
    • GitHub 應用程式名稱:例如,sre-agent-reader
    • 首頁網址https://sre.azure.com
    • Webhook:取消勾選 Active (代理程式不使用 webhooks)
  3. 權限設定下,設定:
    • 儲存庫權限 > 目錄唯讀 (必讀)
    • 儲存庫權限 > 元資料唯讀 (自動選擇)
    • 可選擇性地新增 IssuesPull Requests 的讀取權限
  4. 此GitHub應用程式可在哪裡安裝?,選擇僅限此帳號
  5. 選取 [ 建立 GitHub 應用程式]。
  6. 請注意應用程式設定頁面上顯示的 客戶端 ID

安裝 GitHub 應用程式

  1. 在GitHub應用程式設定頁面,選擇左側側欄的安裝應用程式
  2. 選取您的組織。
  3. 選擇所有儲存庫或選擇特定儲存庫。
  4. 選擇 安裝

產生 GitHub 應用程式的私鑰

  1. 在GitHub App 設定頁面,捲動到 Private Keys
  2. 選擇 產生私鑰
  3. 正在下載 .pem 檔案。 這個檔案是代理用來驗證的 RSA 私鑰。

注意事項

妥善保管 PEM。 你在下一步就把它上傳到 金鑰保存庫。 不要把它提交到倉庫,也不要分享。

將私密金鑰儲存在 Azure Key Vault 中

  1. 打開Azure傳送門,前往你的金鑰保存庫。
  2. 請前往 秘密>產生/匯入
  3. 設定 名稱 (例如, sre-agent-github-app-key),並將完整的 PEM 內容貼上為 Value (包含 -----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY----- 標頭)。
  4. 選取 ,創建
  5. 打開秘密,選擇目前版本,並複製 秘密識別碼 URI:
https://myvault.vault.azure.net/secrets/my-github-app-key/<VERSION>

Tip

版本化 URI 與未版本化 URI:你可以使用版本化 URI(加 /<VERSION> 後綴)來固定特定金鑰版本,或省略版本以永遠使用最新版本。 使用未版本化的 URI,這樣當你旋轉金鑰時,代理程式會自動接收新版本,而不必更新 URI。

授與 Agent 身分識別 金鑰保存庫 存取權

  1. 在Azure入口中,開啟 金鑰保存庫>存取控制(IAM)
  2. 金鑰保存庫 Secrets User 指派給代理管理身份。
  3. 等待角色分配生效。

在程式碼存取權中設定 BYO 應用程式

  1. 在入口網站中開啟您的 Agent。
  2. 請前往 Builder>程式碼存取
  3. 選擇 新增儲存庫
  4. 選擇 GitHub 並輸入主持人:
    • github.com 用於公開 GitHub
    • <TENANT>.ghe.com 適用於企業雲
  5. 繼續驗證。
  6. 選擇 自帶GitHub App
  7. 輸入:
    • 用戶端識別碼
    • 私鑰祕密 URI (金鑰保存庫)
    • 選擇性 金鑰保存庫 身分識別(或保留系統指派)
  8. 選擇 連線

巫師會驗證你的憑證。 成功後,你會看到Connected as GitHub App,並標示綠色勾選。

Note

當你輸入 *.ghe.com 網域作為主機時,精靈會自動選擇 帶上你自己的 GitHub App。 OAuth 和 PAT 不支援 GHE 主機。

新增儲存庫並驗證連線

  1. 選擇倉庫並存檔。
  2. 確認 Code Access 卡上顯示已連接的主機和認證類型 GitHubApp
  3. 在聊天室測試:
Get me recent issues from owner/repo.

多個 GitHub 應用程式的個別應用程式受控識別

預設情況下,代理會使用其系統指派的管理身份從金鑰保存庫讀取私鑰。 如果你管理多個 GitHub 應用程式(例如每個 GHE 實例一個),你可以為每個應用程式指派不同的 用戶指派的管理身份 。 此方法提供安全隔離,因為每個身份只能存取自己的 金鑰保存庫 秘密。

在設定步驟中,從 金鑰保存庫 身份下拉選單中選擇身份。

GitHub 連線的多主機支援

你可以將多個 GitHub 主機連接到同一個代理程式。 每個主機都有獨立的認證:

  • github.com → OAuth、PAT 或 BYO 應用程式
  • contoso.ghe.com → BYO 應用程式
  • engineering.ghe.com → BYO 應用程式(搭配不同的 GitHub 應用程式)

斷開一台主機不會影響其他主機。

故障排除

癥狀 可能的原因 修復
驗證失敗 錯誤的客戶端 ID 或錯誤的主機 Verify 應用程式是在輸入 Code Access 的同一主機上建立的。
機密讀取失敗 缺少 金鑰保存庫 RBAC 或存取原則 金鑰保存庫秘密使用者授與 Agent 身分識別。
Repo 顯示程式碼存取失敗 缺少應用程式權限或安裝範圍 驗證 Metadata: Read + Contents: Read 及安裝範圍。
聊天問題可行,但程式碼存取失敗 端點/路徑檢查不同 重新執行連線測試並驗證元資料權限。

後續步驟