GitHub Enterprise Importer
に必要なアクセスについて
データを保護するために、GitHub では、GitHub Enterprise Importer を使うための特定のアクセス要件が適用されます。 これらの要件は、実行しようとしているタスクによって異なります。 エラーを防ぐには、この記事を注意深く読み、完了したいタスクのすべての要件を満たしていることを確認する必要があります。
Bitbucket サーバー から GitHub にリポジトリを移行するには、ソース (Bitbucket サーバー) と目的地 (GitHub 上のorganization) の両方に十分なアクセス権が必要です。 十分なアクセス権を持つには、次のものが必要です。
- GitHub の目的地organizationで必要な役割
- GitHub で目的地organizationにアクセスできる personal access token
- personal access token に、ロールと完了したいタスクに応じて、必要なスコープがすべて含まれている必要があります。
- 目的地organizationで GitHub.com の SAML シングル サインオンを使う場合は、SSO の personal access token を認証する必要があります。
- Bitbucket サーバー 上で、必要なアクセス許可と SFTP または SMB アクセスが必要
また、目的地organizationで IP 許可リストを使う場合は、GitHub Enterprise Importer によるアクセスを許可するように許可リストを構成する必要があります。
移行者ロールについて
Organization の所有者が移行を完了する必要を取り除くために、GitHub.com には、GitHub Enterprise Importer を使うための個別のロールが含まれています。 移行者ロールを付与すると、移行を処理する他のチームまたは個人を指定できます。 移行者ロールは、GitHub.com 上の Organization に対してのみ付与できます。
移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 チーム メンバーシップの変更について詳しくは、「Team への Organization メンバーの追加」または「Team から Organization メンバーを削除する」をご覧ください。
移行者ロールを付与するには、「移行者ロールの付与」を参照してください。
移行者ロールを付与したら、移行を実行するためのすべての要件を満たす personal access token を移行者が使っていることを確認します。
GitHub
の必要なロール
GitHub の目的地organizationでは、タスクごとに異なるロールが必要です。
次の表に、これらのロールで実行できるタスクの一覧を示します。
タスク | Organization owner | 移行ツール |
---|---|---|
リポジトリの移行に移行ツール ロールを割り当てる | ||
リポジトリの移行の実行 | ||
移行ログのダウンロード | ||
マネキンの回収 |
personal access token に必要なスコープ
移行を実行するには、GitHub で目的地organizationにアクセスできる personal access token が必要です。
GitHub personal access token に必要なスコープは、ロールと完了したいタスクによって異なります。
注: personal access token のみを使用でき、fine-grained personal access token は使用できません。 つまり、組織が [personal access tokens による組織へのアクセスを制限する] ポリシーを使用している場合は、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 |
Bitbucket Server に必要なアクセス許可
Bitbucket Server から移行するには、以下が必要です。
- 管理者またはスーパー管理者のアクセス許可を持つ Bitbucket Server アカウントのユーザー名とパスワード
- Bitbucket Server インスタンスが Linux 上で実行されている場合は、Bitbucket Server インスタンスへの SFTP アクセス (「SSH キー」をご覧ください)。 一般に、SSH 経由でサーバーにアクセスできる場合は、SFTP も使うことができます。
- Bitbucket Server インスタンスが Windows 上で実行されている場合、Bitbucket Server インスタンスへのファイル共有 (SMB) アクセス
SSH キー
Bitbucket Server インスタンスが Linux 上で実行されている場合は、次の要件を満たす SSH キーを使う必要があります。
- パスフレーズがない
- 次のいずれかの暗号を使う
aes256-ctr
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
blowfish-cbc
twofish-cbc
twofish192-cbc
twofish128-cbc
twofish256-cbc
arcfour
arcfour128
arcfour256
cast128-cbc
aes128-ctr
aes192-ctr
移行を実行する際に cipher name aes256-ctr for openssh key file is not supported
のようなエラーが表示される場合、SSH 秘密キーは、サポートされていない暗号を使っています。 互換性のある秘密キーを生成する方法について詳しくは、「GitHub Enterprise Importer を使用した移行のトラブルシューティング」を参照してください。
移行者ロールの付与
Organization の所有者以外のユーザーが移行を実行したり、移行ログをダウンロードしたりできるようにするには、ユーザーまたはチームに移行者ロールを付与します。 詳しくは、「移行者ロールについて」をご覧ください。
BBS2GH extension of the GitHub CLI または GraphQL API を使用して、移行者ロールを付与することができます。
BBS2GH extension
を使って移行者ロールを付与する
CLI を使用して移行者ロールを付与するには、BBS2GH extension of the GitHub CLI をインストールしておく必要があります。 詳しくは、「Bitbucket Server から 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 bbs2gh grant-migrator-role
コマンドを使って、ORGANIZATION を移行者ロールを付与する Organization に、ACTOR をユーザーまたはチーム名に、TYPE をUSER
またはTEAM
に置き換えます。Shell gh bbs2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
gh bbs2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
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 を作成し、完了したいタスクに必要なすべてのスコープを付与します。 personal access token のみを使用でき、fine-grained personal access token は使用できません。 詳しくは、「個人用アクセス トークンを管理する」と「personal access token に必要なスコープ」を参照してください。
- アクセスする必要がある Organization に SAML シングル サインオンが適用されている場合は、SSO の personal access token を認証します。 詳しくは、「SAMLシングルサインオンで利用するために個人アクセストークンを認可する」を参照してください。
移行のための IP 許可リストの構成
移行先で、目的地が IP 許可リスト (GitHub の IP 許可リスト機能または ID プロバイダーの (IdP) IP 許可リストの制限) を使用する場合は、GitHub.com の IP 許可リストを構成する必要があります。
- GitHub の IP 許可リスト機能を使う場合は、以下の GitHub IP 範囲を 目的地Organization の許可リストに追加する必要があります。
- IdP の IP 許可リストを使って GitHub.com で Enterprise へのアクセスを制限する場合は、移行が完了するまで Enterprise アカウント設定でこれらの制限を無効にする必要があります。
詳細については、「組織に対する許可 IP アドレスを管理する」および「IP 許可リストを使用して Enterprise へのネットワーク トラフィックを制限する」を参照してください。
GitHub の 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 エンドポイント」を参照してください。