Skip to main content

Управление доступом к миграции между продуктами GitHub

Перед GitHub Enterprise Importerиспользованием убедитесь, что у вас есть соответствующий доступ как к источнику, так и к назначению вашей миграции.

О необходимом доступе для 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

Чтобы предоставить роль мигратора с помощью CLI, необходимо установить GEI extension of the GitHub CLI. Дополнительные сведения см. в разделе Перенос репозиториев из GitHub.com в GitHub Enterprise Cloud.

  1. На GitHub.com, создайте и запишите а personal access token , которая соответствует всем требованиям для предоставления роли мигратора. Для получения дополнительной информации см. Создание personal access token для GitHub Enterprise Importer.

  2. Задайте для personal access token в качестве переменной среды, заменив TOKEN в командах ниже personal access token, записанных выше.

    • Если вы используете терминал, используйте export команду.

      Shell
      export GH_PAT="TOKEN"
      
    • Если вы используете PowerShell, используйте $env команду.

      Shell
      $env:GH_PAT="TOKEN"
      
  3. gh gei grant-migrator-role Используйте команду, заменив организацию организацией, для которой вы хотите предоставить роль миграции, СУБЪЕКТу имя пользователя или команды и ТИП.USER``TEAM

    Shell
    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

  1. Убедитесь, что у вас есть достаточная роль для задачи, которую вы хотите завершить. Дополнительные сведения см. в разделе "Обязательные роли".
  2. Создайте personal access token (classic), обязательно предоставив все необходимые задачи для выполнения задачи. Можно использовать только personal access token (classic), а не fine-grained personal access token. Для получения дополнительной информации — AUTOTITLE и Required scopes for personal access token.
  3. Если для организаций, к которым вам нужен доступ, применяется 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.

Дополнительные материалы