Skip to main content

GitHub 製品間の移行のためのアクセスの管理

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

GitHub Enterprise Importer に必要なアクセスについて

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

移行を実行するには、移行元と移行先の両方に十分なアクセス権が必要です。 ソースは、Organization を使うと、GitHub.com または GitHub Enterprise Server へ移行できます。 移行先は、リポジトリを移行する場合は GitHub.com の組織アカウント、組織全体を移行する場合は GitHub.com のEnterprise アカウントのいずれかです。

移行元または移行先への十分なアクセス権を持つには、次のソースと目的地の両方が必要です。

  • Organization または Enterprise アカウントの必要なロール
  • organizationまたはEnterprise アカウントにアクセスできる personal access token
    • personal access token に、ロールと完了したいタスクに応じて、必要なスコープがすべて含まれている必要があります。
    • 移行元または移行先で GitHub.com の SAML シングル サインオンを使う場合は、SSO の personal access token を認証する必要があります。

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

初めて GitHub Enterprise Server 3.8 以降から移行する場合に、[Management Console] にアクセスできる方が、お使いの GitHub Enterprise Server インスタンス の BLOB ストレージを設定する必要もあります。

移行者ロールについて

Organization の所有者が移行を完了する必要を取り除くために、GitHub.com には、GitHub Enterprise Importer を使うための個別のロールが含まれています。 移行者ロールを付与すると、移行を処理する他のチームまたは個人を指定できます。 移行者ロールは、GitHub.com 上の Organization に対してのみ付与できます。

移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 チーム メンバーシップの変更について詳しくは、「Team への Organization メンバーの追加」または「Team から Organization メンバーを削除する」をご覧ください。

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

移行者ロールを付与したら、移行を実行するためのすべての要件を満たす personal access token を移行者が使っていることを確認します。

注:

  • GitHub.com 上の 2 つの Organization 間でリポジトリを移行する場合は、両方の Organization の同じユーザーまたはチームに移行者ロールを付与できますが、それぞれを個別に付与する必要があります。
  • Enterprise アカウントに移行者ロールを付与することはできません。 そのため、Organization の移行は、移行先 Enterprise の所有者である場合にのみ実行できます。 ただし、移行元の Organization の Enterprise 所有者に移行者ロールを付与できます。
  • GitHub CLI では、GitHub Enterprise Server 上の Organization への移行者ロールの付与はサポートされていません。を付与することはできません。そのため、GitHub Enterprise Server からリポジトリを移行するには、移行元 Organization の Organization 所有者である必要があります。

必要なロール

移行元と移行先では、タスクごとに異なるロールが必要です。

ソースorganization

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

タスクOrganization owner移行ツール
実行中の移行
リポジトリの移行に移行ツール ロールを割り当てる

移行先のorganizationまたは企業

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

タスクEnterprise ownerOrganization owner移行ツール
organizationを企業に移行する
リポジトリの移行に移行ツール ロールを割り当てる
organizationへのリポジトリの移行
移行ログのダウンロード
マネキンの回収

personal access token に必要なスコープ

移行を実行するには、移行先の Organization (リポジトリ移行の場合) または Enterprise アカウント (Organization 移行の場合) にアクセスできる personal access token が必要です。 また、ソースorganizationにアクセスできる別の personal access token が必要です。

移行ログのダウンロードなど、他のタスクでは、操作のターゲットにアクセスできる personal access token が 1 つだけ必要です。

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

: personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。 つまり、組織が [personal access tokens (classic) による組織へのアクセスを制限する] ポリシーを使用している場合は、GitHub Enterprise Importer を使用できません。 詳しくは、「Enforcing policies for personal access tokens in your enterprise」を参照してください。

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

移行者ロールの付与

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

移行者ロールの付与は、GEI extension of the GitHub CLI または GraphQL API を使用して付与できます。

GEI extension

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

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

  1. GitHub.com で、移行者ロールを付与するためのすべての要件を満たす 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 gei grant-migrator-role コマンドを使って、ORGANIZATION を移行者ロールを付与する Organization に、ACTOR をユーザーまたはチーム名に、TYPE を USER または TEAM に置き換えます。

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

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 Enterprise Importer の 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 許可リストを設定する必要があります。

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

詳細については、「組織に対する許可 IP アドレスを管理する」および「Restricting network traffic to your enterprise with an IP allow list」を参照してください。

移行元が GitHub Enterprise Server の場合、GitHub の IP 範囲をファイアウォール構成または お使いの GitHub Enterprise Server インスタンス の IP 許可リストに追加する必要はありません。 ただし、BLOB ストレージ プロバイダーのセットアップによっては、以下の GitHub の IP 範囲へのアクセスを許可するように BLOB ストレージ プロバイダーの構成の更新が必要になる場合があります。

GitHub の 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 エンドポイント」を参照してください。

参考資料