О необходимом доступе для GitHub Enterprise Importer
Для защиты данных GitHub применяет определенные требования к доступу для использования GitHub Enterprise Importer. Эти требования зависят от выполняемой задачи. Чтобы предотвратить ошибки, необходимо внимательно просмотреть эту статью и убедиться, что выполнены все требования для задачи, которую вы хотите завершить.
Для выполнения миграции требуется достаточный доступ как к источнику, так и к месту назначения для миграции.
Что такое источник и назначение?
Источник — это организацияGitHub.com, из которой вы хотите перенести данные.GitHub Enterprise Server
Назначение может быть следующим:
- Учётная запись организации на GitHub.com или GHE.com, если вы перемещаете репозитории
- Корпоративный аккаунт на GitHub.com или GHE.com, если вы мигрируете всю компанию
Какой доступ мне нужен?
Чтобы получить достаточный доступ для миграции, как для источника, так и для назначения, вам потребуется следующее.
- Требуемая роль в организации или корпоративной учетной записи
- А personal access token , который может получить доступ к учётной записи организации или предприятия
- Они должны иметь все необходимые диапазоны, которые зависят от вашей роли и задачи, которую personal access token вы хотите выполнить.
- Если источник или получатель использует SAML single sign-on для GitHub.com, вы должны авторизовать personal access token SSO.
Кроме того, если вы используете списки разрешений IP с источником или назначением, возможно, потребуется настроить списки разрешений так, чтобы они разрешали доступ через GitHub Enterprise Importer.
Если вы впервые переходите с GitHub Enterprise Server 3.8 или выше, вам также нужен кто-то с доступом к Консоль управления хранилищу для настройки blob для экземпляр GitHub Enterprise Server.
Сведения о роли миграции
Чтобы удалить необходимость завершения миграции владелец организации, GitHub включает отдельную роль для использования GitHub Enterprise Importer.
Предоставление роли миграции позволяет назначать другие команды или отдельные лица для обработки миграций.
- Роль миграции для организации можно предоставить только в GitHub.com или GHE.com.
- Вы можете предоставить роль миграции отдельному пользователю или группе. Настоятельно рекомендуется назначить роль миграции команде. Затем можно дополнительно настроить, кто может запустить миграцию, изменив членство в команде. См[. раздел AUTOTITLE или Добавление участников организации в команду](/organizations/organizing-members-into-teams/removing-organization-members-from-a-team).
- Миграция должна использовать personal access token, которая соответствует всем требованиям для выполнения миграции.
Предупреждение
При предоставлении роли миграции в организации пользователю или команде вы предоставляете им возможность импортировать или экспортировать любой репозиторий в этой организации.
Чтобы предоставить роль миграции, см. статью "Предоставление роли миграции".
Примечание.
- Если вы переносите репозиторий между двумя организациями, вы можете предоставить роль миграции одному и тому же лицу или команде для обеих организаций, но необходимо предоставить каждый из них отдельно.
- Вы не можете предоставить роль миграции для корпоративных учетных записей. Таким образом, миграцию организации можно выполнить только в том случае, если вы являетесь владельцем целевого предприятия. Однако вы можете предоставить роль миграции владельцу предприятия для исходной организации.
- Не GitHub CLI поддерживает предоставление роли мигритора организациям на GitHub Enterprise Server, поэтому вы должны быть владельцем исходной организации, чтобы мигрировать репозитории из GitHub Enterprise Server.
Обязательные роли
Для источника и назначения миграции для различных задач требуются разные роли.
Исходная организация
В следующей таблице перечислены роли, которые могут выполнять задачи.
| Задача | Владелец организации | Средство переноса |
|---|---|---|
| Выполнение миграции | ||
| Назначение роли миграции для миграций репозитория |
Целевая организация или предприятие
В следующей таблице перечислены роли, которые могут выполнять задачи.
| Задача | Владелец предприятия | Владелец организации | Средство переноса |
|---|---|---|---|
| Перенос организаций на предприятие | |||
| Назначение роли миграции для миграций репозитория | |||
| Перенос репозиториев в организацию | |||
| Скачивание журнала миграции | |||
| Восстановление манекенов |
Требуемые области для personal access tokens
Для запуска миграции нужен personal access token сервис, который может получить доступ к целевой организации (для миграции репозиториев) или корпоративной учетной записи (для миграций организаций). Также нужен ещё один personal access token , который может получить доступ к исходной организации.
Для других задач, например, для загрузки журнала миграции, нужен только тот personal access token , кто может получить доступ к целевой операции.
Объёмы, необходимые для вас GitHubpersonal access token (classic) , зависят от вашей роли и задачи, которую вы хотите выполнить.
Примечание.
Можно использовать только personal access token (classic), а не fine-grained personal access token. Это означает, что вы не можете использовать GitHub Enterprise Importer , если ваша организация использует политику «Запретить personal access tokens (classic) доступ к вашей организации». Дополнительные сведения см. в разделе Применение политик для персональных маркеров доступа в вашей организации.
| Задача | Владелец предприятия | Владелец организации | Средство переноса |
|---|---|---|---|
| Назначение роли миграции для миграций репозитория | admin:org | ||
| Выполнение миграции репозитория (целевая организация) | |||
repo, , admin:org``workflow | |||
repo, , read:org``workflow | |||
| Скачивание журнала миграции | |||
repo, , admin:org``workflow | |||
repo, , read:org``workflow | |||
| Восстановление манекенов | admin:org | ||
| Выполнение миграции (исходная организация) | |||
admin:org, repo | |||
admin:org, repo | |||
| Выполнение миграции организации (целевое предприятие) | |||
read:enterprise, , admin:org``repo``workflow |
Предоставление роли миграции
Чтобы разрешить другим пользователям, кроме владелец организации запускать миграцию репозитория или скачивать журналы миграции, можно предоставить роль миграции пользователю или группе. Дополнительные сведения см. в разделе "Сведения о роли миграции".
Вы можете предоставить роль мигратора либо через GEI extension of the GitHub CLI API GraphQL.
- Предоставление роли мигритора с помощью GEI extension
- Предоставление роли миграции с помощью API GraphQL
Предоставление роли мигритора с помощью GEI extension
Чтобы предоставить роль мигратора с помощью CLI, необходимо установить GEI extension of the GitHub CLI. Дополнительные сведения см. в разделе Перенос репозиториев из GitHub.com в GitHub Enterprise Cloud.
-
На GitHub.com, создайте и запишите а personal access token , которая соответствует всем требованиям для предоставления роли мигратора. Для получения дополнительной информации см. Создание personal access token для GitHub Enterprise Importer.
-
Задайте для 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Используйте команду, заменив организацию организацией, для которой вы хотите предоставить роль миграции, СУБЪЕКТу имя пользователя или команды и ТИП.USER``TEAMShell 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Примечание.
Если вы предоставляете роль миграции для GHE.com, необходимо также включить URL-адрес целевого API для поддомена вашего предприятия. Например:
--target-api-url https://api.octocorp.ghe.com.
Предоставление роли миграции с помощью API GraphQL
Вы можете использовать мутацию grantMigratorRole GraphQL для назначения роли миграции и revokeMigratorRole изменения для отзыва роли миграции.
Необходимо использовать personal access token (PAT), удовлетворяющий всем требованиям к доступу. Дополнительные сведения см. в разделе "Обязательные области" для personal access tokens.
grantMigratorRole мутация
Эта мутация GraphQL задает роль миграции.
mutation grantMigratorRole (
$organizationId: ID!,
$actor: String!,
$actor_type: ActorType!
) {
grantMigratorRole( input: {
organizationId: $organizationId,
actor: $actor,
actorType: $actor_type
})
{ success }
}
| Переменная запроса | Description |
|---|---|
organizationId | Идентификатор ownerId (или идентификатор организации) для вашей GetOrgInfo организации из запроса. |
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 }
}
Создание для personal access tokenGitHub Enterprise Importer
- Убедитесь, что у вас есть достаточная роль для задачи, которую вы хотите завершить. Дополнительные сведения см. в разделе "Обязательные роли".
- Создайте personal access token (classic), обязательно предоставив все необходимые задачи для выполнения задачи. Можно использовать только personal access token (classic), а не fine-grained personal access token. Для получения дополнительной информации — AUTOTITLE и Required scopes for personal access token.
- Если для организаций, к которым вам нужен доступ, применяется SAML single signon, personal access token авторизуйте их для SSO. Дополнительные сведения см. в разделе Авторизация личного маркера доступа для использования с единым входом.
Настройка списков разрешений IP-адресов для миграций
Если источник или назначение миграции использует список разрешенных IP-адресов (GitHubфункции списка разрешений IP-адресов или ip-адреса поставщика удостоверений (IDP) разрешенных списков, например Azure CAP), необходимо настроить списки разрешений IP на GitHub. См. раздел [AUTOTITLE и Управление разрешенными IP-адресами для организации](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/restricting-network-traffic-to-your-enterprise-with-an-ip-allow-list).
- Если вы используете функцию списка разрешенных IP-адресов GitHub, необходимо добавить диапазоны IP-адресов GitHub ниже в список разрешений для исходных и /или целевых организаций.
- Если вы используете список разрешений поставщика удостоверений для ограничения доступа к вашей организации на GitHub, эти ограничения следует отключить в параметрах учетной записи предприятия до завершения миграции.
Диапазоны IP-адресов зависят от того, является ли назначение миграции GitHub.com или GHE.com.
Если источник вашей миграции GitHub Enterprise Server— , вам не нужно добавлять диапазоны GitHub IP в конфигурацию межсетевого экрана или список разрешений IP на экземпляр GitHub Enterprise Server. Однако, в зависимости от настройки вашего провайдера blob-хранилища, возможно, потребуется обновить конфигурацию провайдера blob-хранилища, чтобы получить доступ к IP-диапазонам GitHub ниже.
IP-диапазоны для GitHub.com
Вам потребуется добавить следующие диапазоны 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 (добавлено 28 июля 2025 года)
- 2a0a:a440::/29
- 2606:50c0::/32
- 20.99.172.64/28 (добавлено 28 июля 2025 года)
Вы можете получить список GitHub Enterprise Importer IP-диапазонов up-toв любое время с помощью конечной точки «Получить GitHub мета-информацию» в REST API.
Ключ github_enterprise_importer в ответе содержит список диапазонов IP-адресов, используемых для миграции.
Дополнительные сведения см. в разделе Конечные точки REST API для метаданных.
Virtual network firewall rules for Хранилище BLOB-объектов Azure forGitHub.com
Клиенты с Хранилище BLOB-объектов Azure, настроенные для хранения данных репозитория для миграции, должны добавить правила брандмауэра виртуальной сети в учетные записи хранения, чтобы разрешить GEI получать доступ к данным репозитория. Для этого требуется использование Azure CLI или PowerShell, так как добавление этих правил брандмауэра виртуальной сети на портале Azure в настоящее время не поддерживается. Следующие идентификаторы подсети виртуальной сети должны быть добавлены в правила брандмауэра виртуальной сети для учетной записи хранения:
/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, выполните шаг 5 в документации по созданию правила виртуальной сети для служба хранилища Azure с помощью идентификаторов подсети сети, указанных выше. Обязательно укажите --subscription аргумент с идентификатором подписки, привязанным к учетной записи хранения.
IP-диапазоны для GHE.com
Вы можете получить список GitHub Enterprise Importer IP-диапазонов up-toв любое время с помощью конечной точки «Получить GitHub мета-информацию» в REST API.
Ключ github_enterprise_importer в ответе содержит список диапазонов IP-адресов, используемых для миграции.
Кроме того, если вы переходите с GitHub Enterprise Server аккаунта blob storage и используете его с правилами файрвола:
- Необходимо разрешить доступ к диапазонам IP-адресов исходящего трафика для GHE.com. См . раздел AUTOTITLE.
- Если вы используете Хранилище BLOB-объектов Azure может потребоваться выполнить дополнительную конфигурацию сети. Это может произойти, если Хранилище BLOB-объектов Azure находится в том же регионе, что и вычисление службы GitHub Enterprise Importer. Обратитесь к Служба поддержки GitHub.