GitHub Enterprise Importer
に必要なアクセスについて
データを保護するために、GitHub では、GitHub Enterprise Importer を使うための特定のアクセス要件が適用されます。 これらの要件は、実行しようとしているタスクによって異なります。 エラーを防ぐには、この記事を注意深く読み、完了したいタスクのすべての要件を満たしていることを確認する必要があります。
Azure DevOps から GitHub にリポジトリを移行するには、ソース (Azure DevOps 上の組織) と目的地 (GitHub 上の組織) の両方に十分なアクセス権が必要です。 十分なアクセス権を持つには、次のものが必要です。
- GitHub の目的地organizationで必要な役割
- GitHub
で目的地organizationにアクセスできる personal access token
- personal access token に、ロールと完了したいタスクに応じて、必要なスコープがすべて含まれている必要があります。
- 目的地organizationで GitHub.com の SAML シングル サインオンを使う場合は、SSO の personal access token を認証する必要があります。
- Azure DevOps 上のソースorganizationにアクセスできる personal access token
また、移行元または移行先で IP 許可リストを使う場合は、GitHub Enterprise Importer によるアクセスを許可するように許可リストを構成する必要があります。
移行者ロールについて
Organization の所有者が移行を完了する必要を取り除くために、GitHub には、GitHub Enterprise Importer を使うための個別のロールが含まれています。
移行者ロールを付与すると、移行を処理する他のチームまたは個人を指定できます。
- 移行者ロールは、GitHub.com または GHE.com 上の organization に対してのみ付与できます。
- 移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 「Team への Organization メンバーの追加」または「Team から Organization メンバーを削除する」を参照してください。
- 移行者は、移行を実行するためのすべての要件を満たす personal access token を使う必要があります。
Warning
Organization 内の移行者ロールをユーザーまたはチームに付与すると、その Organization 内のリポジトリをインポートまたはエクスポートする権限が付与されます。
移行者ロールを付与するには、「移行者ロールの付与」を参照してください。
GitHub
の必要なロール
GitHub の目的地organizationでは、タスクごとに異なるロールが必要です。
次の表に、これらのロールで実行できるタスクの一覧を示します。
タスク | Organization owner | 移行ツール |
---|---|---|
リポジトリの移行に移行ツール ロールを割り当てる | ||
リポジトリの移行の実行 | ||
移行ログのダウンロード | ||
マネキンの回収 |
personal access token に必要なスコープ
移行を実行するには、GitHub で目的地organizationにアクセスできる GitHub と、Azure DevOps 上のソースorganizationにアクセスできる別の personal access token が必要です。
移行ログのダウンロードなどの他のタスクでは、GitHub の目的地organizationにアクセスできる personal access token が 1 つだけ必要です。
GitHub
の Personal access token
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 内の個人用アクセス トークンに対するポリシーの適用」を参照してください。
タスク | Organization owner | 移行ツール |
---|---|---|
リポジトリの移行に移行ツール ロールを割り当てる | admin:org | |
リポジトリの移行の実行 (移行先の Organization) | repo 、admin:org 、workflow | repo 、read:org 、workflow |
移行ログのダウンロード | repo 、admin:org 、workflow | repo 、read:org 、workflow |
マネキンの回収 | admin:org |
Azure DevOps の Personal access token
Azure DevOps personal access token に、work item (read)
、code (read)
、および identity (read)
スコープが必要です。
移行スクリプトの生成時に --rewire-pipelines
フラグを使用する場合は、Build (Read)
スコープも必要です。 inventory-report
フラグと --integrate-boards
フラグを使用するには、personal access token へのフル アクセスを付与する必要があります。
複数の Organization から移行する場合は、personal access token から、アクセス可能なすべての Organization にアクセスできるようにします。 詳しくは、Microsoft Docs で「personal access token を使用する」を参照してください。
移行者ロールの付与
Organization の所有者以外のユーザーが移行を実行したり、移行ログをダウンロードしたりできるようにするには、ユーザーまたはチームに移行者ロールを付与します。 詳細については、「移行者ロールについて」を参照してください。
移行者ロールを付与するには、ADO2GH extension of the GitHub CLI または GraphQL API を使用します。
ADO2GH extension
を使って移行者ロールを付与する
CLI を使用して移行者ロールを付与するには、ADO2GH extension of the GitHub CLI をインストールしておく必要があります。 詳しくは、「Azure DevOps から GitHub Enterprise Cloud へのリポジトリの移行」をご覧ください。
-
GitHub で、移行者ロールを付与するためのすべての要件を満たす personal access token を作成して記録します。 詳細については、「GitHub の 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 ado2gh grant-migrator-role
コマンドを使って、ORGANIZATION を移行者ロールを付与する Organization に、ACTOR をユーザーまたはチーム名に、TYPE をUSER
またはTEAM
に置き換えます。Shell gh ado2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
gh ado2gh 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
の 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.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