GitHub Enterprise Cloud リポジトリを Azure SRE エージェントに接続する

Important

Azure SRE エージェントのこの機能は現在プレビュー段階です。 ベータ版、プレビュー版、または他の方法で一般公開されていない Azure の機能に適用される法的条件については、Microsoft Azure プレビューの追加利用規約を参照してください。

BYO (Bring Your Own) GitHub アプリを使用して、GitHub Enterprise Cloud (<TENANT>.ghe.com) または github.com でホストされているリポジトリをAzure SRE エージェントに接続します。 エージェントは、アプリの秘密キーから有効期間の短いインストール トークンを作成します。このトークンはAzure Key Vaultに格納され、コピーされません。

Note

BYO GitHub App は、github.com ホストと *.ghe.com ホストの両方で動作します。 github.com で OAuth または PAT を使用する場合は、GitHub コネクタを設定する を参照してください。

BYO GitHub アプリ認証を使用する場合

BYO アプリは次の場合に使用します。

  • 組織では、アプリベースの認証とキーの管理制御が必要です。
  • *.ghe.comリポジトリに接続しています (GHE ホストでは OAuth と PAT を使用できないため、必須)。
  • ユーザー トークンではなく、インストール トークン ベースのアクセスが必要です。

前提条件

要件 詳細情報
Azure SRE エージェント 管理者ロールまたは標準ユーザー ロールを持つ実行中の状態のエージェント
GitHub アプリ ターゲット ホストで作成されたGitHub アプリ (github.com または <TENANT>.ghe.com)
GitHub管理者アクセス GitHub App のスコープを作成、インストール、または確認するための組織またはリポジトリへの管理者アクセス
Azure Key Vault GitHub アプリの秘密キーを格納できるコンテナー
マネージド ID Key Vault シークレット ユーザー ロールをエージェントのマネージド ID に割り当てる機能

GitHub アプリを作成する

適切なアクセス許可を持つGitHub アプリが既にある場合は、「store the private key in Azure Key Vaultにスキップします。

  1. GitHub ホストに移動します。
    • github.com: 組織の >Settings> > Developer settings> > GitHub Apps> > New GitHub App に移動します
    • <TENANT>.ghe.com: お使いの GHE インスタンス上と同じパス
  2. アプリの詳細を入力します。
    • GitHub アプリ名: たとえば、sre-agent-reader
    • ホームページ URL: https://sre.azure.com
    • Webhook: [アクティブ] をオフにします (エージェントは Webhook を使用しません)
  3. [ アクセス許可] で、次の設定を行います。
    • リポジトリのアクセス許可 > 内容: 読み取り専用 (必須)
    • リポジトリのアクセス許可 > メタデータ: 読み取り専用 (自動選択)
    • 必要に応じて、IssuesPull requests への読み取りアクセス権を追加します
  4. この GitHub App はどこにインストールできますか? で、このアカウントのみを選択します。
  5. [ GitHub アプリの作成] を選択します。
  6. アプリ設定ページに表示される クライアント ID をメモします。

GitHub アプリをインストールする

  1. [GitHubアプリの設定] ページで、左側のサイドバーで Install App を選択します。
  2. 自分の組織を選択します。
  3. [すべてのリポジトリ] を選択するか、特定のリポジトリを選択します。
  4. インストールを選択します。

GitHub アプリの秘密キーを生成する

  1. [GitHub アプリの設定] ページで、Private キー までスクロール>。
  2. [ 秘密キーの生成] を選択します
  3. .pem ファイルがダウンロードされます。 このファイルは、エージェントが認証に使用する RSA 秘密キーです。

Caution

PEM を安全に保ちます。 次の手順でKey Vaultにアップロードします。 リポジトリにコミットせず、共有しないでください。

秘密キーをAzure Key Vaultに格納する

  1. Azure ポータルを開き、Key Vaultに移動します。
  2. シークレット>Generate/Import に移動します。
  3. 名前(例: sre-agent-github-app-key)を設定し、PEM の内容全体( ヘッダーと -----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 を使用します。

Key Vault へのアクセス権をエージェント ID に付与する

  1. Azure ポータルで、Key Vault>Access コントロール (IAM) を開きます。
  2. Key Vault シークレット ユーザーをエージェントマネージド ID に割り当てます。
  3. ロールの割り当てが有効になるまで待ちます。

コード アクセスで BYO アプリを構成する

  1. ポータルでエージェントを開きます。
  2. Builder>Code Access に移動します。
  3. [ リポジトリの追加] を選択します。
  4. GitHubを選択し、ホストを入力します。
    • github.com パブリック GitHub 向け
    • <TENANT>.ghe.com エンタープライズ クラウド用
  5. 認証に進みます。
  6. [独自のGitHubアプリを作成するを選択します。
  7. 入力:
    • クライアント ID
    • 秘密キー シークレット URI (Key Vault)
    • 省略可能な Key Vault ID (またはシステム割り当てを維持する)
  8. 接続を選択します。

ウィザードによって資格情報が検証されます。 成功すると、緑色のチェックマークが付いた Connected as GitHub App が表示されます。

Note

ホストとして *.ghe.com ドメインを入力すると、ウィザードによって自動的に 独自のGitHub アプリの作成が選択されます。 GHE ホストでは OAuth と PAT を使用できません。

リポジトリを追加して接続を確認する

  1. リポジトリを選択して保存します。
  2. [コード アクセス] カードに、接続されているホストと認証の種類 GitHubAppが表示されたことを確認します。
  3. チャットでテストする:
Get me recent issues from owner/repo.

複数のGitHub アプリのアプリごとのマネージド ID

既定では、エージェントはシステム割り当てマネージド ID を使用して、Key Vaultから秘密キーを読み取ります。 複数のGitHub アプリ (GHE インスタンスごとに 1 つなど) を管理する場合は、各アプリに異なる ユーザー割り当てマネージド ID を割り当てることができます。 この方法では、各 ID が独自のKey Vault シークレットにのみアクセスできるため、セキュリティの分離が提供されます。

構成手順の間に、Key Vault ID ドロップダウンで ID を選択します。

GitHub接続のマルチホスト サポート

複数のGitHub ホストを同じエージェントに接続できます。 各ホストには、独立した認証があります。

  • github.com → OAuth、PAT、または BYO アプリ
  • contoso.ghe.com → BYO アプリ
  • engineering.ghe.com → BYO アプリ (別のGitHub アプリを使用)

1 つのホストを切断しても、他のホストには影響しません。

Troubleshooting

症状: 考えられる原因 修正
認証の検証が失敗する クライアント ID が正しくないか、ホストが間違っている コード アクセスに入力したのと同じホストにアプリが作成されたことを確認します。
シークレットの読み取りが失敗する Key Vault の RBAC またはアクセス ポリシーが不足しています エージェント ID に Key Vault シークレット ユーザーを付与します。
リポジトリがコードアクセスでFailedと表示される アプリの権限不足、またはインストール スコープの不足 メタデータ: 読み取り + コンテンツ: 読み取りおよびインストール スコープを確認してください。
チャットの問題は機能しますが、コード アクセスが失敗する エンドポイント/パスのチェックが異なる 接続テストを再実行し、メタデータのアクセス許可を確認します。

次のステップ