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

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

## GitHub Enterprise Importer に必要なアクセスについて

データを保護するために、GitHub では、GitHub Enterprise Importer を使うための特定のアクセス要件が適用されます。 これらの要件は、実行しようとしているタスクによって異なります。 エラーを防ぐには、この記事を注意深く読み、完了したいタスクのすべての要件を満たしていることを確認する必要があります。

Bitbucket Server から GitHub にリポジトリを移行するには、ソース (Bitbucket Server インスタンス) と移行先 (GitHub上の組織) の両方に十分なアクセス権が必要です。 十分なアクセス権を持つには、次のものが必要です。

* GitHub
  で移行先の組織に必要なロール
* personal access token
  GitHub
  上の宛先組織にアクセスできるもの
  * personal access tokenには、ロールと完了するタスクに応じて、必要なすべてのスコープが必要です。
  * 宛先組織が GitHubに SAML シングル サインオンを使用する場合は、SSO の personal access token を承認する必要があります。
* Bitbucket サーバー 上で、必要なアクセス許可と SFTP または SMB アクセスが必要

また、宛先組織で IP 許可リストを使用する場合は、 GitHub Enterprise Importerによるアクセスを許可するように許可リストを構成することが必要になる場合があります。

## 移行者の役割について

Organization の所有者が移行を完了する必要を取り除くために、GitHub には、GitHub Enterprise Importer を使うための個別のロールが含まれています。

移行者ロールを付与すると、移行を処理する他のチームまたは個人を指定できます。

* 移行者ロールは、GitHub.com または GHE.com 上の organization に対してのみ付与できます。
* 移行者ロールは、個々のユーザーまたはチームに付与できます。 移行者ロールをチームに割り当てることを強くお勧めします。 その後、チーム メンバーシップを調整することで、移行を実行できるユーザーをさらにカスタマイズできます。 「[チームに組織メンバーを追加する](/ja/enterprise-server@3.21/organizations/organizing-members-into-teams/adding-organization-members-to-a-team)」または「[チームから組織のメンバーを削除する](/ja/enterprise-server@3.21/organizations/organizing-members-into-teams/removing-organization-members-from-a-team)」を参照してください。
* 移行者は、移行を実行するためのすべての要件を満たす personal access token を使う必要があります。

> \[!WARNING]
> Organization 内の移行者ロールをユーザーまたはチームに付与すると、その Organization 内のリポジトリをインポートまたはエクスポートする権限が付与されます。

移行者ロールを付与するには、[移行者のロールの付与](#granting-the-migrator-role)に関する記事を参照してください。

<span id="required-roles"></span>

## GitHub に必要となるロール

GitHubの移行先組織では、タスクごとに異なるロールが必要です。

次の表に、これらのロールで実行できるタスクの一覧を示します。

| タスク                      | Organization owner                                                                                                                                                                                                                                                                                                         | 移行ツール                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| リポジトリの移行に移行ツール ロールを割り当てる | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Can perform" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="Cannot perform" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |
| リポジトリの移行の実行              | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Can perform" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Can perform" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                           |
| 移行ログのダウンロード              | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Can perform" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Can perform" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                           |
| マネキンの回収                  | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Can perform" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="Cannot perform" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |

## personal access token に必要となるスコープ

移行を実行するには、personal access tokenで移行先組織にアクセスできるGitHubが必要です。

GitHub
personal access token (classic)に必要なスコープは、あなたの役割と実行したいタスクによって異なります。

> \[!NOTE]
> personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。つまり、組織が "組織へのアクセスをGitHub Enterprise Importerに制限する" ポリシーを使用している場合、personal access tokens (classic)を使用することはできません。 詳しくは、「[Enterprise 内の個人用アクセス トークンに対するポリシーの適用](/ja/enterprise-cloud@latest/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-personal-access-tokens-in-your-enterprise#restricting-access-by-personal-access-tokens)」をご覧ください。

| タスク                             | 組織の所有者                                                                                                                                                                                                                               | 移行ツール                                                                                                                                                                                                                                |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| リポジトリ移行用の移行ロールを割り当てる            | `admin:org`                                                                                                                                                                                                                          | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-dash" aria-label="Not applicable" role="img"><path d="M2 7.75A.75.75 0 0 1 2.75 7h10a.75.75 0 0 1 0 1.5h-10A.75.75 0 0 1 2 7.75Z"></path></svg> |
| リポジトリの移行の実行 (移行先の Organization) |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| `repo`、`workflow`、`admin:org`   |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| `repo`、`workflow`、`read:org`    |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| 移行ログのダウンロード                     |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| `repo`、`workflow`、`admin:org`   |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| `repo`、`workflow`、`read:org`    |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| マネキンの回収                         |                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                      |
| `repo`、`workflow`、`admin:org`   | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-dash" aria-label="Not applicable" role="img"><path d="M2 7.75A.75.75 0 0 1 2.75 7h10a.75.75 0 0 1 0 1.5h-10A.75.75 0 0 1 2 7.75Z"></path></svg> |                                                                                                                                                                                                                                      |

## Bitbucket Server に必要なアクセス許可

Bitbucket Server から移行するには、以下が必要です。

* 管理者またはスーパー管理者のアクセス許可を持つ Bitbucket Server アカウントのユーザー名とパスワード
* Bitbucket Server インスタンスが Linux 上で実行されている場合は、Bitbucket Server インスタンスへの SFTP アクセス (「[SSH キー](#ssh-keys)」を参照してください)。 一般に、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 を使用した移行のトラブルシューティング](/ja/enterprise-server@3.21/migrations/troubleshooting/troubleshooting-your-migration-with-github-enterprise-importer#cipher-name-is-not-supported-error)」を参照してください。

## 移行者ロールの付与

Organization の所有者以外のユーザーが移行を実行したり、移行ログをダウンロードしたりできるようにするには、ユーザーまたはチームに移行者ロールを付与します。 詳細については、「[移行者ロールについて](#about-the-migrator-role)」を参照してください。

BBS2GH extension of the GitHub CLIまたは GraphQL API を使用して、移行者ロールを付与できます。

* [を使用して移行者ロールを付与する BBS2GH extension](#granting-the-migrator-role-with-the-bbs2gh-extension)
* [GraphQL API を使って移行者ロールを付与する](#granting-the-migrator-role-with-the-graphql-api)

### BBS2GH extension を使用して移行者ロールを付与する

CLI を使用して移行者ロールを付与するには、 BBS2GH extension of the GitHub CLIをインストールしている必要があります。 詳しくは、「[Bitbucket Server から GitHub Enterprise Cloud へのリポジトリの移行](/ja/enterprise-server@3.21/migrations/using-github-enterprise-importer/migrating-from-bitbucket-server-to-github-enterprise-cloud/migrating-repositories-from-bitbucket-server-to-github-enterprise-cloud#step-1-install-the-bbs2gh-extension-of-the-github-cli)」をご覧ください。

1. GitHubで、移行者ロールを付与するためのすべての要件を満たすpersonal access tokenを作成して記録します。 詳細については、[「personal access token 用の GitHub Enterprise Importer
   の作成」](#creating-a-personal-access-token-for-github-enterprise-importer)を参照してください。
2. personal access token を環境変数として設定します。次のコマンドの TOKEN は、上で記録した personal access token に置き換えます。

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

     ```shell copy
     export GH_PAT="TOKEN"
     ```

   * PowerShell を使っている場合は、`$env` コマンドを使います。

     ```shell copy
     $env:GH_PAT="TOKEN"
     ```
3. `gh bbs2gh grant-migrator-role` コマンドを使って、ORGANIZATION を移行者ロールを付与する Organization に、ACTOR をユーザーまたはチーム名に、TYPE を `USER` または `TEAM` に置き換えます。

   ```shell copy
   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 に必要なスコープ](#required-scopes-for-personal-access-tokens)に関する記事を参照してください。

#### `grantMigratorRole` ミューテーション

この GraphQL ミューテーションは、移行ロールを設定します。

```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` ミューテーション

このミューテーションにより、移行者ロールが削除されます。

```graphql
mutation revokeMigratorRole (
  $organizationId: ID!,
  $actor: String!,
  $actor_type: ActorType!
) {
  revokeMigratorRole( input: {
    organizationId: $organizationId,
    actor: $actor,
    actorType: $actor_type
  })
   { success }
}
```

## personal access token 用の GitHub Enterprise Importer を作成する

1. 完了したいタスクに対して十分なロールがあることを確認します。 詳細については、[必要なロール](#required-roles-for-github)に関する記事を参照してください。
2. personal access token (classic)を作成し、完了するタスクに必要なすべてのスコープを付与します。
   personal access token (classic) のみを使用でき、fine-grained personal access token は使用できません。詳細については、「[個人用アクセス トークンを管理する](/ja/enterprise-server@3.21/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」および[「personal access tokenに必要なスコープ」を参照してください](#required-scopes-for-personal-access-tokens)。
3. アクセスする必要がある組織に SAML シングル サインオンが適用されている場合は、SSO の personal access token を承認します。 詳しくは、「[シングル サインオンに使用する個人用アクセス トークンの認可](/ja/enterprise-cloud@latest/authentication/authenticating-with-single-sign-on/authorizing-a-personal-access-token-for-use-with-single-sign-on)」をご覧ください。

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

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

* GitHubの IP 許可リスト機能を使用する場合は、以下のGitHub IP 範囲を宛先組織の許可リストに追加する必要があります。
* IdP の IP 許可リストを使用して、 GitHubで企業へのアクセスを制限する場合は、移行が完了するまでエンタープライズ アカウント設定でこれらの制限を無効にする必要があります。

詳細については、「[組織に対する許可 IP アドレスを管理する](/ja/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)」および「[IP 許可リストを使用して Enterprise へのネットワーク トラフィックを制限する](/ja/enterprise-cloud@latest/admin/configuring-settings/hardening-security-for-your-enterprise/restricting-network-traffic-to-your-enterprise-with-an-ip-allow-list)」を参照してください。

### 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 Enterprise Importer メタ情報の取得" エンドポイントを使用して、GitHubによって使用される IP 範囲の up-to-date リストをいつでも取得できます。

応答の `github_enterprise_importer` キーに、移行に使われる IP 範囲のリストが含まれます。

詳しくは、「[メタデータ用 REST API エンドポイント](/ja/enterprise-server@3.21/rest/meta#get-github-meta-information)」をご覧ください。

### Azure Blob Storageの仮想ネットワーク ファイアウォール規則GitHub.com

移行用のリポジトリ データを格納するように 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 の仮想ネットワーク規則の作成](https://learn.microsoft.com/azure/storage/common/storage-network-security-virtual-networks?tabs=azure-cli)に関するドキュメントの手順 5 に従います。 `--subscription` 引数には、ストレージ アカウントに関連付けられたサブスクリプション ID を指定してください。

### GHE.com の IP 範囲

以下を許可する必要があります。

* すべてのユーザーに必要な範囲
* データ所在地リージョンに依存する追加の範囲

追加する範囲については、「[GHE.com のネットワークの詳細](/ja/enterprise-cloud@latest/admin/data-residency/network-details-for-ghecom#ip-ranges-for-github-enterprise-importer)」をご覧ください。

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

* GHE.comのエグレス IP 範囲へのアクセスを許可する必要があります。 「[GHE.com のネットワークの詳細](/ja/enterprise-cloud@latest/admin/data-residency/network-details-for-ghecom#githubs-ip-addresses)」を参照してください。
* Azure Blob Storage を使っている場合は、追加のネットワーク構成の実行が必要になることがあります。 これは、GitHub Enterprise Importer サービスのコンピューティングと同じリージョンにAzure Blob Storageが配置されている場合に発生する可能性があります。
  [GitHub のサポート](https://support.github.com)にお問い合わせください。

## 参考資料

* [組織の役割](/ja/enterprise-server@3.21/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)