GitHub Enterprise Importer に必要なアクセスについて
データを保護するために、GitHub では、GitHub Enterprise Importer を使うための特定のアクセス要件が適用されます。 これらの要件は、実行しようとしているタスクによって異なります。 エラーを防ぐには、この記事を注意深く読み、完了したいタスクのすべての要件を満たしていることを確認する必要があります。
移行を実行するには、移行元と移行先の両方に十分なアクセス権が必要です。
移行元と移行先はどこですか?
ソースは、データを移行する GitHub.com または GitHub Enterprise Server 上の組織です。
移行先は次のいずれかです:
- リポジトリを移行する場合は、GitHub.com または GHE.com 上の 組織アカウント
- 組織全体を移行する場合は、GitHub.com または GHE.com 上の エンタープライズ アカウント
どのようなアクセスが必要ですか?
移行するために十分なアクセス権を確保するには、移行元と移行先の両方について、以下のものが必要になります。
- 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]用の BLOB ストレージを設定するために、お使いの GitHub Enterprise Server インスタンスにアクセスできるユーザーも必要です。
移行者ロールについて
Organization の所有者が移行を完了する必要を取り除くために、GitHub には、GitHub Enterprise Importer を使うための個別のロールが含まれています。
移行者ロールを付与すると、移行を処理する他のチームまたは個人を指定できます。
- 移行者ロールは、GitHub.com または GHE.com 上の organization に対してのみ付与できます。
- 移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 「チームに組織メンバーを追加する」または「チームから組織のメンバーを削除する」を参照してください。
- 移行者は、移行を実行するためのすべての要件を満たす personal access token を使う必要があります。
警告
Organization 内の移行者ロールをユーザーまたはチームに付与すると、その Organization 内のリポジトリをインポートまたはエクスポートする権限が付与されます。
移行者ロールを付与するには、移行者のロールの付与に関する記事を参照してください。
メモ
- 2 つの Organization 間でリポジトリを移行する場合は、両方の Organization の同じユーザまたはチームに移行者ロールを付与できますが、それぞれを個別に付与する必要があります。
- Enterprise アカウントに移行者ロールを付与することはできません。 そのため、Organization の移行は、移行先 Enterprise の所有者である場合にのみ実行できます。 ただし、移行元の Organization の Enterprise 所有者に移行者ロールを付与できます。
GitHub CLIでは、GitHub Enterprise Server上の組織に移行者ロールの付与はサポートされていないため、GitHub Enterprise Serverからリポジトリを移行するには、ソース組織の組織所有者である必要があります。
必要なロール
移行元と移行先では、タスクごとに異なるロールが必要です。
移行元の organization
次の表に、これらのタスクで実行できるロールの一覧を示します。
| タスク | 組織の所有者 | Migrator |
|---|---|---|
| 移行の実行 | ||
| リポジトリの移行に移行ツール ロールを割り当てる |
移行先の organization または enterprise
次の表に、これらのタスクで実行できるロールの一覧を示します。
| タスク | エンタープライズ所有者 | 組織の所有者 | Migrator |
|---|---|---|---|
| organization を enterpriseに移行する | |||
| リポジトリの移行に移行ツール ロールを割り当てる | |||
| organization へのリポジトリの移行 | |||
| 移行ログのダウンロード | |||
| マネキンの回収 |
各personal access tokenに必要なスコープ
移行を実行するには、移行先の組織 (リポジトリの移行用) またはエンタープライズ アカウント (組織の移行用) にアクセスできる personal access token が必要です。 また、ソース組織にアクセスできる別の personal access token も必要です。
移行ログのダウンロードなどの他のタスクでは、操作のターゲットにアクセスできる personal access token が 1 つだけ必要です。
GitHub personal access token (classic)に必要なスコープは、あなたの役割と実行したいタスクによって異なります。
メモ
personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。つまり、組織が "組織へのアクセスをGitHub Enterprise Importerに制限する" ポリシーを使用している場合、personal access tokens (classic)を使用することはできません。 詳しくは、「Enterprise 内の個人用アクセス トークンに対するポリシーの適用」をご覧ください。
| タスク | エンタープライズ所有者 | 組織の所有者 | Migrator |
|---|---|---|---|
| リポジトリの移行に移行ツール ロールを割り当てる | admin:org | ||
| リポジトリの移行の実行 (移行先の Organization) | |||
repo, admin:org、workflow | |||
repo, read:org、workflow | |||
| 移行ログのダウンロード | |||
repo, admin:org、workflow | |||
repo, read:org、workflow | |||
| マネキンの回収 | admin:org | ||
| 移行の実行 (移行元の Organization) | |||
admin:org、repo | |||
admin:org、repo | |||
| Organization 移行の実行 (移行先の Enterprise) | |||
read:enterprise、admin:org、repo、workflow |
移行者ロールの付与
Organization の所有者以外のユーザーがリポジトリの移行を実行したり、移行ログをダウンロードしたりできるようにするには、ユーザーまたはチームに移行者ロールを付与します。 詳しくは、「移行者ロール」をご覧ください。
GEI extension of the GitHub CLIまたは GraphQL API を使用して、移行者ロールを付与できます。
GEI extension を使用した移行者ロールの付与
CLI を使用して移行者ロールを付与するには、 GEI extension of the GitHub CLIをインストールしている必要があります。 詳しくは、「GitHub.com から GitHub Enterprise Cloud へのリポジトリの移行」をご覧ください。
-
GitHub.comで、移行者ロールを付与するためのすべての要件を満たすpersonal access tokenを作成して記録します。 詳細については、「personal access token用のGitHub Enterprise Importerの作成」を参照してください。
-
personal access token を環境変数として設定します。次のコマンドの TOKEN は、上で記録した personal access token に置き換えます。
-
ターミナルを使っている場合は、
exportコマンドを使います。Shell export GH_PAT="TOKEN"
export GH_PAT="TOKEN" -
PowerShell を使っている場合は、
$envコマンドを使います。Shell $env:GH_PAT="TOKEN"
$env:GH_PAT="TOKEN"
-
-
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
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 }
}
| クエリ変数 | 説明 |
|---|---|
organizationId | ownerId クエリからの Organization の GetOrgInfo (または Organization ID)。 |
actor | 移行ロールを割り当てるチームまたはユーザー名。 |
actor_type | 移行者が USER か TEAM のどちらであるかを指定します。 |
revokeMigratorRole ミューテーション
このミューテーションにより、移行者ロールが削除されます。
mutation revokeMigratorRole (
$organizationId: ID!,
$actor: String!,
$actor_type: ActorType!
) {
revokeMigratorRole( input: {
organizationId: $organizationId,
actor: $actor,
actorType: $actor_type
})
{ success }
}
personal access token の GitHub Enterprise Importer を作成
- 完了したいタスクに対して十分なロールがあることを確認します。 詳細については、必要なロールに関する記事を参照してください。
- personal access token (classic)を作成し、完了するタスクに必要なすべてのスコープを付与します。 personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。詳細については、「個人用アクセス トークンを管理する」および「personal access tokenに必要なスコープ」を参照してください。
- アクセスする必要がある組織に SAML シングル サインオンが適用されている場合は、SSO の personal access token を承認します。 詳しくは、「シングル サインオンに使用する個人用アクセス トークンの認可」をご覧ください。
移行のための 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 Enterprise Serverされている場合は、ファイアウォール構成または GitHub の IP 許可リストにお使いの GitHub Enterprise Server インスタンス IP 範囲を追加する必要はありません。 ただし、BLOB ストレージ プロバイダーのセットアップによっては、以下の GitHub IP 範囲へのアクセスを許可するように BLOB ストレージ プロバイダーの構成を更新する必要がある場合があります。
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
- 135.234.59.224/28 (2025 年 7 月 28 日に追加)
- 2a0a:a440::/29
- 2606:50c0::/32
- 20.99.172.64/28 (2025 年 7 月 28 日に追加)
REST API の "GitHub Enterprise Importer メタ情報の取得" エンドポイントを使用して、GitHubによって使用される IP 範囲の up-to-date リストをいつでも取得できます。
応答の github_enterprise_importer キーに、移行に使われる IP 範囲のリストが含まれます。
詳しくは、「メタデータ用 REST API エンドポイント」をご覧ください。
Azure Blob Storageの仮想ネットワーク ファイアウォール規則GitHub.com
移行用のリポジトリ データを格納するように 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 の "GitHub Enterprise Importer メタ情報の取得" エンドポイントを使用して、GitHubによって使用される IP 範囲の up-to-date リストをいつでも取得できます。
応答の github_enterprise_importer キーに、移行に使われる IP 範囲のリストが含まれます。
さらに、 GitHub Enterprise Server から移行し、ファイアウォール規則で BLOB ストレージ アカウントを使用する場合は、次の手順を実行します。
- GHE.com のエグレス IP 範囲へのアクセスを許可する必要があります。 「GHE.com のネットワークの詳細」を参照してください。
- Azure Blob Storage を使っている場合は、追加のネットワーク構成の実行が必要になることがあります。 これは、Azure Blob ストレージが GitHub Enterprise Importer サービスのコンピューティングと同じリージョンに配置されている場合に発生する可能性があります。 GitHub のサポート にお問い合わせください。