Skip to main content

Bitbucket サーバーからの移行のアクセスの管理

GitHub Enterprise Importer を使う前に、移行元と移行先の両方に適切なアクセス権があることを確認してください。

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 には、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にアクセスできる 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)repoadmin:orgworkflowreporead:orgworkflow
移行ログのダウンロードrepoadmin:orgworkflowreporead:orgworkflow
マネキンの回収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 へのリポジトリの移行」をご覧ください。

  1. GitHub で、移行者ロールを付与するためのすべての要件を満たす personal access token を作成して記録します。 詳細は、「GitHub Enterprise Importer の personal access token の作成」を参照してください。

  2. personal access token を環境変数として設定します。次のコマンドの TOKEN は、上で記録した personal access token に置き換えます。

    • ターミナルを使っている場合は、export コマンドを使います。

      Shell
      export GH_PAT="TOKEN"
      
    • PowerShell を使っている場合は、$env コマンドを使います。

      Shell
      $env:GH_PAT="TOKEN"
      
  3. 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
    

    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 }
}
クエリ変数説明
organizationIdownerId クエリからの Organization の GetOrgInfo (または Organization ID)。
actor移行ロールを割り当てるチームまたはユーザー名。
actor_type移行者が USERTEAM のどちらであるかを指定します。

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 の作成

  1. 完了したいタスクに対して十分なロールがあることを確認します。 詳しくは、「必要なロール」を参照してください。
  2. personal access token (classic) を作成し、完了したいタスクに必要なすべてのスコープを付与します。 personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。 詳しくは、「個人用アクセス トークンを管理する」と「personal access token に必要なスコープ」を参照してください。
  3. アクセスする必要がある Organization に SAML シングル サインオンが適用されている場合は、SSO の personal access token を認証します。 詳しくは、「SAMLシングルサインオンで利用するために個人アクセストークンを認可する」を参照してください。

移行のための IP 許可リストの構成

移行先で、目的地が IP 許可リスト (GitHub の IP 許可リスト機能または ID プロバイダーの (IdP) IP 許可リストの制限) を使用する場合は、GitHub の IP 許可リストを構成する必要があります。

  • GitHub の IP 許可リスト機能を使う場合は、以下の GitHub IP 範囲を 目的地Organization の許可リストに追加する必要があります。
  • IdP の IP 許可一覧を使用して GitHub で Enterprise へのアクセスを制限する場合は、移行が完了するまで Enterprise アカウント設定でこれらの制限を無効にする必要があります。

詳細については、「組織に対する許可 IP アドレスを管理する」および「IP 許可リストを使用して Enterprise へのネットワーク トラフィックを制限する」を参照してください。

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

さらに、ファイアウォール規則を使用する BLOB ストレージ アカウントを使う場合:

  • GHE.com のエグレス IP 範囲へのアクセスを許可する必要があります。 「GHE.com のネットワークの詳細」を参照してください。
  • Azure Blob Storage を使用している場合は、追加の構成の実行が必要になることがあります。 GitHub Support にお問い合わせください。

参考資料