Skip to main content

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

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

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

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

移行を実行するには、移行元と移行先の両方に十分なアクセス権が必要です。

移行元と移行先はどこですか?

ソースは、データを移動する元の GitHub.com または GitHub Enterprise Server の organization です。

移行先は次のいずれかです:

  • GitHub.com または GHE.com の organization アカウント (リポジトリを移行する場合)
  • GitHub.com または GHE.com の enterprise アカウント (organization 全体を移行する場合)

どのようなアクセスが必要ですか?

移行するために十分なアクセス権を確保するには、移行元と移行先の両方について、以下のものが必要になります。

  • 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 ストレージを設定する必要もあります。

移行者ロールについて

役割: エンタープライズ マイグレーション ツールにおけるマイグレーターとして、システム間でデータを安全に移行し、データの保護と完全性を確保する責任があります。

メモ

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

必要なロール

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

移行元の organization

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

タスク組織の所有者Migrator
移行の実行
リポジトリの移行に移行ツール ロールを割り当てる

移行先の organization または enterprise

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

タスクエンタープライズ所有者組織の所有者Migrator
organization を enterpriseに移行する
リポジトリの移行に移行ツール ロールを割り当てる
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 は使用できません。 つまり、organization が [Restrict personal access tokens (classic) from accessing your organizations] ポリシーを使用している場合は、GitHub Enterprise Importer を使用できません。 詳しくは、「Enterprise 内の個人用アクセス トークンに対するポリシーの適用」をご覧ください。

タスクエンタープライズ所有者組織の所有者Migrator
リポジトリの移行に移行ツール ロールを割り当てるadmin:org
リポジトリの移行の実行 (移行先の Organization)
          `repo`, `admin:org`、`workflow` | 
          `repo`, `read:org`、`workflow`

移行ログのダウンロード | | repo, admin:orgworkflow | repo, read:orgworkflow マネキンの回収 | | admin:org | 移行の実行 (移行元の Organization) | | admin:orgrepo | admin:orgrepo | Organization 移行の実行 (移行先の Enterprise) | read:enterpriseadmin:orgrepoworkflow | | |

移行者ロールの付与

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

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

  •         [GEI extension
    

を使って移行者ロールを付与する](#granting-the-migrator-role-with-the-gei-extension) * 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
    

    メモ

    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 Enterprise Importer の personal access token の作成

その手順に従ってください。

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

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

GitHub.com の IP 範囲

GitHub.com の Azure Blob Storage の仮想ネットワーク ファイアウォール規則

移行用のリポジトリ データを格納するように Azure Blob Storage を構成しているお客様は、GEI がリポジトリ データにアクセスできるように、ストレージ アカウントに仮想ネットワーク ファイアウォール規則を追加する必要があります。 Azure Portal では、これらの仮想ネットワーク ファイアウォール規則を追加することは現在サポートされていないため、Azure CLI または PowerShell を使う必要があります。 次の仮想ネットワーク サブネット ID を、ストレージ アカウントの仮想ネットワーク ファイアウォール規則に追加する必要があります。

  • /subscriptions/cdf1c65c-e6f4-43b3-945f-c5280f104f9c/resourceGroups/ghr-network-service-1a72ec6f-45b6-44be-a4bd-f0fe50079c9f-5-westus2/providers/Microsoft.Network/virtualNetworks/1a72ec6f-45b6-44be-a4bd-f0fe50079c9f-5/subnets/1a72ec6f-45b6-44be-a4bd-f0fe50079c9f-5
  • /subscriptions/173ad082-b20d-4d44-8257-7fbf34959bed/resourceGroups/ghr-network-service-1a72ec6f-45b6-44be-a4bd-f0fe50079c9f-5-westus3/providers/Microsoft.Network/virtualNetworks/1a72ec6f-45b6-44be-a4bd-f0fe50079c9f-5/subnets/1a72ec6f-45b6-44be-a4bd-f0fe50079c9f-5

仮想ネットワーク ファイアウォール規則を Azure Storage アカウントに追加するには、先ほど指定したネットワーク サブネット ID を使って、Azure Storage の仮想ネットワーク規則の作成に関するドキュメントの手順 5 に従います。 --subscription 引数には、ストレージ アカウントに関連付けられたサブスクリプション ID を指定してください。

GHE.com

の IP 範囲

REST API の "Get GitHub meta information" エンドポイントを使うと、GitHub Enterprise Importer で使用される IP 範囲の最新リストをいつでも入手できます。

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

さらに、GitHub Enterprise Server から移行する場合で、ファイアウォール規則を使用する BLOB ストレージ アカウントを使う場合:

データの再利用可能なエンタープライズ移行ツールの追加要件-ストレージ %}

参考資料

  •         [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)