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 ストレージを設定する必要もあります。
移行者ロールについて
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 上の 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: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
を使って移行者ロールを付与する](#granting-the-migrator-role-with-the-gei-extension)
-
[GraphQL API を使って移行者ロールを付与する](#granting-the-migrator-role-with-the-graphql-api)
GEI extension
を使って移行者ロールを付与する
CLI を使用して移行者ロールを付与するには、GEI extension of the GitHub CLI をインストールしておく必要があります。 詳しくは、「GitHub.com から GitHub Enterprise Cloud へのリポジトリの移行」をご覧ください。
-
GitHub.com で、移行者ロールを付与するためのすべての要件を満たす personal access token を作成して記録します。 詳細については、「GitHub Enterprise Importer の personal access token の作成」を参照してください。
-
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 }
}
GitHub Enterprise Importer の personal access token の作成
- 完了したいタスクに対して十分なロールがあることを確認します。 詳細については、必要なロールに関する記事を参照してください。
- personal access token (classic) を作成し、完了したいタスクに必要なすべてのスコープを付与します。 personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。詳細については、「個人用アクセス トークンを管理する」と personal access token に必要なスコープに関する記事を参照してください。
- アクセスする必要がある Organization に 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 メタ情報の取得」エンドポイントを使って、いつでも「GitHub Enterprise Importer」によって使われる IP 範囲の最新リストを入手できます。
応答の github_enterprise_importer キーに、移行に使われる IP 範囲のリストが含まれます。
詳しくは、「メタデータ用 REST API エンドポイント」をご覧ください。
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)