GitHub Enterprise Importer に必要なアクセスについて
データを保護するために、GitHub では、GitHub Enterprise Importer を使うための特定のアクセス要件が適用されます。 これらの要件は、実行しようとしているタスクによって異なります。 エラーを防ぐには、この記事を注意深く読み、完了したいタスクのすべての要件を満たしていることを確認する必要があります。
移行を実行するには、移行元と移行先の両方に十分なアクセス権が必要です。
移行元と移行先
ソースは、Organization を使うと、GitHub.com または GitHub Enterprise Server へ移行できます。
移行先は次のいずれかです。
- 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 に対してのみ付与できます。
- 移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 「Team への Organization メンバーの追加」または「Team から Organization メンバーを削除する」を参照してください。
- 移行者は、移行を実行するためのすべての要件を満たす personal access token を使う必要があります。
Warning
Organization 内の移行者ロールをユーザーまたはチームに付与すると、その Organization 内のリポジトリをインポートまたはエクスポートする権限が付与されます。
移行者ロールを付与するには、「移行者ロールの付与」を参照してください。
Note
- 2 つの Organization 間でリポジトリを移行する場合は、両方の Organization の同じユーザまたはチームに移行者ロールを付与できますが、それぞれを個別に付与する必要があります。
- Enterprise アカウントに移行者ロールを付与することはできません。 そのため、Organization の移行は、移行先 Enterprise の所有者である場合にのみ実行できます。 ただし、移行元の Organization の Enterprise 所有者に移行者ロールを付与できます。
- GitHub CLI では、GitHub Enterprise Server 上の Organization への移行者ロールの付与はサポートされていません。を付与することはできません。そのため、GitHub Enterprise Server からリポジトリを移行するには、移行元 Organization の Organization 所有者である必要があります。
必要なロール
移行元と移行先では、タスクごとに異なるロールが必要です。
ソースorganization
次の表に、これらのタスクで実行できるロールの一覧を示します。
タスク | Organization owner | 移行ツール |
---|---|---|
実行中の移行 | ||
リポジトリの移行に移行ツール ロールを割り当てる |
移行先のorganizationまたは企業
次の表に、これらのタスクで実行できるロールの一覧を示します。
タスク | Enterprise owner | Organization 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) に必要なスコープは、ロールと完了したいタスクによって異なります。
Note
personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。 つまり、organization が [Restrict personal access tokens (classic) from accessing your organizations] ポリシーを使用している場合は、GitHub Enterprise Importer を使用できません。 詳しくは、「Enterprise 内の個人用アクセス トークンに対するポリシーの適用」をご覧ください。
タスク | Enterprise owner | Organization owner | 移行ツール |
---|---|---|---|
リポジトリの移行に移行ツール ロールを割り当てる | 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 を作成して記録します。 詳細は、「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
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 }
}
クエリ変数 | 説明 |
---|---|
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 を認証します。 詳しくは、「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 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
- 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
さらに、GitHub Enterprise Server から移行する場合で、ファイアウォール規則を使用する BLOB ストレージ アカウントを使う場合は:
- GHE.com のエグレス IP 範囲へのアクセスを許可する必要があります。 「GHE.com のネットワークの詳細」を参照してください。
- Azure Blob Storage を使用している場合は、追加の構成の実行が必要になることがあります。 GitHub Support にお問い合わせください。