关于 GitHub Enterprise Importer 所需的访问权限
为了保护数据,GitHub 强制实施特定的访问要求来使用 GitHub Enterprise Importer。 为防止出错,应仔细查看本文,并确认是否符合要完成的任务的所有要求。
若要运行迁移,需要对迁移的源和目标具有足够的访问权限。 对于存储库迁移,目标是组织。 对于组织迁移,目标是企业帐户。
在首次从 GitHub Enterprise Server 3.8 或更高版本迁移之前,还需要有权访问 管理控制台 的人员为 你的 GitHub Enterprise Server 实例 设置 Blob 存储。
在其他任务中,只需要对操作目标的访问权限。 例如,若要为组织授予迁移者角色,只需对该组织的访问权限。
若要对源或目标具有足够的访问权限,需要以下两项:
- GitHub 组织或企业帐户中必需的角色
- 对于 Bitbucket Server,必需的权限以及 SFTP 或 SMB 访问权限
- 对于 GitHub 产品和 Azure DevOps,可以访问组织或企业帐户的 personal access token
- personal access token 必须具有所有必需的范围,具体取决于你的角色和要完成的任务。
- 如果源或目标对 GitHub.com 使用 SAML 单一登录,则必须授权 personal access token 以实现 SSO。
此外,如果将 IP 允许列表用于源或目标,则可能需要配置允许列表以允许 GitHub Enterprise Importer 访问。
GitHub 所需的角色
在迁移到或迁移自 GitHub 产品时,不同任务需要不同的角色。
任务 | 企业所有者 | 组织所有者 | 迁移者 |
---|---|---|---|
运行迁移(源组织) | |||
X | X | ||
运行组织迁移(目标企业) | X | ||
为存储库迁移分配迁移者角色 | |||
X | |||
运行存储库迁移(目标组织) | |||
X | X | ||
下载迁移日志 | |||
X | X | ||
回收模型 | |||
X |
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
如果运行迁移时收到以下错误,SSH 私钥将使用不受支持的密码:cipher name aes256-ctr for openssh key file is not supported
。 若要详细了解如何生成兼容的私钥,请参阅“使用 GitHub Enterprise Importer 排查迁移问题”。
personal access token 所需的范围
若要运行迁移,需要一个可以访问目标组织(用于存储库迁移)或企业帐户(用于组织迁移)的 personal access token。 如果源是 GitHub 产品或 Azure DevOps,则还需要另一个可以访问源组织的 personal access token。
在其他任务(例如下载迁移日志)中,只需要一个可以访问操作目标的 personal access token。
GitHub 产品的 Personal access token
GitHub personal access token (classic) 所需的范围取决于你的角色和要完成的任务。
注意:只能使用 personal access token (classic),而不能使用 fine-grained personal access token。这意味着,如果贵组织使用“限制 personal access tokens (classic) 访问组织”策略,则你无法使用 GitHub Enterprise Importer。 有关详细信息,请参阅“在企业中为个人访问令牌实施策略”。
任务 | 企业所有者 | 组织所有者 | 迁移者 |
---|---|---|---|
运行迁移(源组织) | - | read:org 、repo | read:org 、repo |
运行组织迁移(目标企业) | read:enterprise 、admin:org 、repo 、workflow | - | - |
为存储库迁移分配迁移者角色 | - | admin:org | - |
运行存储库迁移(目标组织) | - | repo 、admin:org 、workflow | repo 、read:org 、workflow |
下载迁移日志 | - | repo 、admin:org 、workflow | repo 、read:org 、workflow |
回收模型 | - | admin:org | - |
Azure DevOps 的 Personal access token
若要从 Azure DevOps (ADO) 运行迁移,ADO personal access token 必须具有以下范围:work item (read)
、code (read)
和 identity (read)
。
如果要从多个组织迁移,请允许 personal access token 访问所有可访问的组织。 有关详细信息,请参阅 Microsoft Docs 中的使用 personal access token。
为 GitHub Enterprise Importer 创建 personal access token
- 验证是否有足够的角色权限来完成要完成的任务。 有关详细信息,请参阅“必需的角色”。
- 创建 personal access token (classic),确保授予要完成的任务所需的全部范围。 只能使用 personal access token (classic),而不能使用 fine-grained personal access token。 有关详细信息,请参阅“管理个人访问令牌”和“personal access token 所需的范围”。
- 如果对需要访问的组织强制实施 SAML 单一登录,请授权 personal access token 以实现 SSO。 有关详细信息,请参阅“授权用于 SAML 单点登录的个人访问令牌”。
为迁移配置 IP 允许列表
如果将 IP 允许列表用于迁移源或目标,则可能需要配置允许列表以允许访问 GitHub Enterprise Importer。
若要正确配置 IP 允许列表,请仔细阅读以下部分。 可能有多个部分适用,具体取决于你的迁移情况。
迁移的源或目标为 GitHub.com
如果以下两种情况都适用于你的迁移,则需要在 GitHub.com 上配置 IP 允许列表:
- 迁移的源或目标为 GitHub.com
- 源或目标使用 IP 允许列表,即 GitHub 的 IP 允许列表功能或标识提供者的 (IdP) IP 允许列表限制(例如 Azure CAP)
如果使用 GitHub 的 IP 允许列表功能,则必须将下面的 GitHub IP 范围添加到源和/或目标组织的允许列表中。
如果使用 IdP 的 IP 允许列表限制对 GitHub.com 上企业的访问,则应在迁移完成之前在企业帐户设置中禁用这些限制。
有关详细信息,请参阅“管理组织允许的 IP 地址”和“使用 IP 允许列表限制到企业的网络流量”。
迁移的源为 GitHub Enterprise Server
如果迁移源为 GitHub Enterprise Server,则无需将任何 GitHub IP 范围添加到防火墙配置或 你的 GitHub Enterprise Server 实例 上的 IP 允许列表。
但是,根据 Blob 存储提供程序的设置,可能需要更新 Blob 存储提供程序的配置,以允许访问下面的 GitHub IP 范围。
确定 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 (从 UTC 2023 年 11 月 8 日 00:00 起生效)
可以使用 REST API 的“获取 GitHub 元信息”终结点随时获取 GitHub Enterprise Importer 使用的最新 IP 范围列表。
响应中的 github_enterprise_importer
键包含用于迁移的 IP 范围列表。
有关详细信息,请参阅 REST API 文档中的“元数据”。
延伸阅读
- "组织中的角色"