Skip to main content

Azure DevOps からの移行のアクセスの管理

GitHub Enterprise Importer を使う前に、移行元と移行先の両方に適切なアクセス権があることを確認してください。

GitHub Enterprise Importer

に必要なアクセスについて

データを保護するために、GitHub では、GitHub Enterprise Importer を使うための特定のアクセス要件が適用されます。 これらの要件は、実行しようとしているタスクによって異なります。 エラーを防ぐには、この記事を注意深く読み、完了したいタスクのすべての要件を満たしていることを確認する必要があります。

Azure DevOps から GitHub にリポジトリを移行するには、ソース (Azure DevOps 上の組織) と目的地 (GitHub 上の組織) の両方に十分なアクセス権が必要です。 十分なアクセス権を持つには、次のものが必要です。

  • GitHub の目的地organizationで必要な役割
  • GitHub で目的地organizationにアクセスできる personal access token
    • personal access token に、ロールと完了したいタスクに応じて、必要なスコープがすべて含まれている必要があります。
    • 目的地organizationで GitHub.com の SAML シングル サインオンを使う場合は、SSO の personal access token を認証する必要があります。
  • Azure DevOps 上のソースorganizationにアクセスできる personal access token

また、移行元または移行先で IP 許可リストを使う場合は、GitHub Enterprise Importer によるアクセスを許可するように許可リストを構成する必要があります。

移行者ロールについて

Organization の所有者が移行を完了する必要を取り除くために、GitHub には、GitHub Enterprise Importer を使うための個別のロールが含まれています。

移行者ロールを付与すると、移行を処理する他のチームまたは個人を指定できます。

  • 移行者ロールは、GitHub.com または GHE.com 上の organization に対してのみ付与できます。
  • 移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 「Team への Organization メンバーの追加」または「Team から Organization メンバーを削除する」を参照してください。
  • 移行者は、移行を実行するためのすべての要件を満たす personal access token を使う必要があります。

Warning

Organization 内の移行者ロールをユーザーまたはチームに付与すると、その Organization 内のリポジトリをインポートまたはエクスポートする権限が付与されます。

移行者ロールを付与するには、「移行者ロールの付与」を参照してください。

GitHub

の必要なロール

GitHub の目的地organizationでは、タスクごとに異なるロールが必要です。

次の表に、これらのロールで実行できるタスクの一覧を示します。

タスクOrganization owner移行ツール
リポジトリの移行に移行ツール ロールを割り当てる
リポジトリの移行の実行
移行ログのダウンロード
マネキンの回収

personal access token に必要なスコープ

移行を実行するには、GitHub で目的地organizationにアクセスできる GitHub と、Azure DevOps 上のソースorganizationにアクセスできる別の personal access token が必要です。

移行ログのダウンロードなどの他のタスクでは、GitHub の目的地organizationにアクセスできる personal access token が 1 つだけ必要です。

GitHub

の Personal access token

GitHub personal access token (classic) に必要なスコープは、ロールと完了したいタスクによって異なります。

Note

personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。 つまり、organization が [Restrict personal access tokens (classic) from accessing your organizations] ポリシーを使用している場合は、GitHub Enterprise Importer を使用できません。 詳しくは、「Enterprise 内の個人用アクセス トークンに対するポリシーの適用」を参照してください。

タスクOrganization owner移行ツール
リポジトリの移行に移行ツール ロールを割り当てるadmin:org
リポジトリの移行の実行 (移行先の Organization)repoadmin:orgworkflowreporead:orgworkflow
移行ログのダウンロードrepoadmin:orgworkflowreporead:orgworkflow
マネキンの回収admin:org

Azure DevOps の Personal access token

Azure DevOps personal access token に、work item (read)code (read)、および identity (read) スコープが必要です。

移行スクリプトの生成時に --rewire-pipelines フラグを使用する場合は、Build (Read) スコープも必要です。 inventory-report フラグと --integrate-boards フラグを使用するには、personal access token へのフル アクセスを付与する必要があります。

複数の Organization から移行する場合は、personal access token から、アクセス可能なすべての Organization にアクセスできるようにします。 詳しくは、Microsoft Docs で「personal access token を使用する」を参照してください。

移行者ロールの付与

Organization の所有者以外のユーザーが移行を実行したり、移行ログをダウンロードしたりできるようにするには、ユーザーまたはチームに移行者ロールを付与します。 詳しくは、「移行者ロールについて」をご覧ください。

移行者ロールを付与するには、ADO2GH extension of the GitHub CLI または GraphQL API を使用します。

ADO2GH extension

を使って移行者ロールを付与する

CLI を使用して移行者ロールを付与するには、ADO2GH extension of the GitHub CLI をインストールしておく必要があります。 詳しくは、「Azure DevOps から GitHub Enterprise Cloud へのリポジトリの移行」を参照してください。

  1. GitHub で、移行者ロールを付与するためのすべての要件を満たす personal access token を作成して記録します。 詳細については、「‭GitHub Enterprise Importer の personal access token の作成‭‬」をご覧ください。

  2. personal access token を環境変数として設定します。次のコマンドの TOKEN は、上で記録した personal access token に置き換えます。

    • ターミナルを使っている場合は、export コマンドを使います。

      Shell
      export GH_PAT="TOKEN"
      
    • PowerShell を使っている場合は、$env コマンドを使います。

      Shell
      $env:GH_PAT="TOKEN"
      
  3. gh ado2gh grant-migrator-role コマンドを使って、ORGANIZATION を移行者ロールを付与する Organization に、ACTOR をユーザーまたはチーム名に、TYPE を USER または TEAM に置き換えます。

    Shell
    gh ado2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
    

    Note

    GHE.com の移行者ロールを付与する場合は、エンタープライズのサブドメインのターゲット API URL も含める必要があります。 (例: --target-api-url https://api.octocorp.ghe.com)。

GraphQL API を使って移行者ロールを付与する

grantMigratorRole GraphQL ミューテーションを使って移行者ロールを割り当て、revokeMigratorRole ミューテーションを使って移行者ロールを取り消すことができます。

すべてのアクセス要件を満たす personal access token (PAT) を使う必要があります。 詳しくは、「personal access token に必要なスコープ」を参照してください。

grantMigratorRole ミューテーション

この GraphQL ミューテーションは、移行ロールを設定します。

mutation grantMigratorRole (
  $organizationId: ID!,
  $actor: String!,
  $actor_type: ActorType!
) {
  grantMigratorRole( input: {
    organizationId: $organizationId,
    actor: $actor,
    actorType: $actor_type
  })
   { success }
}
クエリ変数説明
organizationIdownerId クエリからの Organization の GetOrgInfo (または Organization ID)。
actor移行ロールを割り当てるチームまたはユーザー名。
actor_type移行者が USERTEAM のどちらであるかを指定します。

revokeMigratorRole ミューテーション

このミューテーションにより、移行者ロールが削除されます。

mutation revokeMigratorRole (
  $organizationId: ID!,
  $actor: String!,
  $actor_type: ActorType!
) {
  revokeMigratorRole( input: {
    organizationId: $organizationId,
    actor: $actor,
    actorType: $actor_type
  })
   { success }
}

GitHub

の personal access token の作成

  1. 完了したいタスクに対して十分なロールがあることを確認します。 詳しくは、「必要なロール」を参照してください。
  2. personal access token (classic) を作成し、完了したいタスクに必要なすべてのスコープを付与します。 personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。 詳しくは、「個人用アクセス トークンを管理する」と「personal access token に必要なスコープ」を参照してください。
  3. アクセスする必要がある Organization に SAML シングル サインオンが適用されている場合は、SSO の personal access token を認証します。 詳しくは、「SAMLシングルサインオンで利用するために個人アクセストークンを認可する」を参照してください。

移行のための IP 許可リストの構成

移行元または移行先で、GitHub の IP 許可リスト機能または ID プロバイダー (IdP) の IP 許可リスト制限 (Azure CAP など) のいずれかの IP 許可リストが使われる場合、GitHub の IP 許可リストを設定する必要があります。 「組織に対する許可 IP アドレスを管理する」および「IP 許可リストを使用して Enterprise へのネットワーク トラフィックを制限する」を参照してください。

  • GitHub の IP 許可リスト機能を使う場合は、以下の GitHub IP 範囲を移行元または移行先の Organization の許可リストに追加する必要があります。
  • IdP の IP 許可一覧を使用して GitHub で Enterprise へのアクセスを制限する場合は、移行が完了するまで Enterprise アカウント設定でこれらの制限を無効にする必要があります。

IP 範囲は、移行先が GitHub.com か GHE.com かによって異なります。

GitHub.com

の IP 範囲

IP 許可リストに次の IP 範囲を追加する必要があります。

  • 192.30.252.0/22
  • 185.199.108.0/22
  • 140.82.112.0/20
  • 143.55.64.0/20
  • 40.71.233.224/28
  • 2a0a:a440::/29
  • 2606:50c0::/32
  • 20.125.12.8/29 (2023 年 11 月 8 日 00:00 (UTC) からアクティブ)

REST API の「GitHub メタ情報の取得」エンドポイントを使って、いつでも送信接続に「GitHub Enterprise Importer」によって使われる IP 範囲の最新リストを取得できます。

応答の github_enterprise_importer キーに、移行に使われる IP 範囲のリストが含まれます。

詳しくは、「メタデータ用 REST API エンドポイント」を参照してください。

GHE.com

の IP 範囲

IP 許可リストに次の IP 範囲を追加する必要があります。

  • 192.30.252.0/22
  • 185.199.108.0/22
  • 140.82.112.0/20
  • 143.55.64.0/20
  • 2a0a:a440::/29
  • 2606:50c0::/32
  • 4.231.155.80/29
  • 4.225.9.96/29
  • 51.12.144.32/29
  • 20.199.1.232/29
  • 51.12.152.184/29
  • 20.199.6.80/29
  • 51.12.152.240/29
  • 20.19.101.136/29
  • 51.12.252.16/28
  • 74.241.131.48/28
  • 20.240.211.176/28
  • 108.143.221.96/28
  • 20.61.46.32/28
  • 20.224.62.160/28

参考資料