关于 GitHub Enterprise Importer 的所需访问权限
为了保护您的数据,GitHub 强制执行使用 GitHub Enterprise Importer 的特定访问要求。这些要求根据您尝试执行的任务而有所不同。为避免错误,您应仔细阅读本文并验证您是否满足要完成的任务的所有要求。
要将存储库从 Azure DevOps 迁移到 GitHub,您需要对源(Azure DevOps 上的组织)和目标(GitHub 上的组织)都具有足够的访问权限。要拥有足够的访问权限,您需要以下所有内容。
- GitHub 上目标组织中的所需角色
- 可以访问 GitHub 上目标组织的个人访问令牌
- 个人访问令牌必须具有所有所需的范围,这些范围取决于您的角色和您要完成的任务。
- 如果目标组织对 GitHub 使用 SAML 单点登录,则必须为 SSO 授权个人访问令牌。
- 可以访问 Azure DevOps 上源组织的个人访问令牌
此外,如果您对源或目标使用 IP 允许列表,则可能需要配置允许列表以允许 GitHub Enterprise Importer 访问。
关于迁移者角色
为了消除组织所有者完成迁移的需要,GitHub 包含一个用于使用 GitHub Enterprise Importer 的独立角色。
授予迁移者角色允许您指定其他团队或个人来处理您的迁移。
- 您只能为 GitHub.com 或 GHE.com 上的组织授予迁移者角色。
- 您可以将迁移者角色授予单个用户或团队。我们强烈建议您将迁移者角色分配给团队。然后,您可以通过调整团队成员资格进一步自定义谁可以运行迁移。请参阅“将组织成员添加到团队”或“从团队中移除组织成员”。
- 迁移者必须使用满足运行迁移的所有要求的个人访问令牌。
警告
当您将组织中的迁移者角色授予用户或团队时,您授予他们导入或导出该组织中任何存储库的能力。
要授予迁移者角色,请参阅“授予迁移者角色”。
GitHub 的所需角色
对于 GitHub 上的目标组织,不同任务需要不同的角色。
下表列出了哪些任务可以由哪个角色执行。
任务 | 组织所有者 | 迁移者 |
---|---|---|
为存储库迁移分配迁移者角色 | ||
运行存储库迁移 | ||
下载迁移日志 | ||
回收虚拟人 |
个人访问令牌所需的范围
要运行迁移,您需要一个可以访问 GitHub 上目标组织的个人访问令牌,以及另一个可以访问 Azure DevOps 上源组织的个人访问令牌。
对于其他任务,例如下载迁移日志,您只需要一个可以访问 GitHub 上目标组织的个人访问令牌。
GitHub 的个人访问令牌
GitHub 个人访问令牌(经典)所需的范围取决于您的角色和您要完成的任务。
注意
您只能使用个人访问令牌(经典),不能使用细粒度个人访问令牌。这意味着如果您组织使用“限制个人访问令牌(经典)访问您的组织”策略,则无法使用 GitHub Enterprise Importer。有关更多信息,请参阅“在您的企业中实施个人访问令牌的策略”。
任务 | 组织所有者 | 迁移者 |
---|---|---|
为存储库迁移分配迁移者角色 | admin:org | |
运行存储库迁移(目标组织) | repo 、admin:org 、workflow | repo 、read:org 、workflow |
下载迁移日志 | repo 、admin:org 、workflow | repo 、read:org 、workflow |
回收虚拟人 | admin:org |
Azure DevOps 的个人访问令牌
您的 Azure DevOps 个人访问令牌必须具有 work item (read)
、code (read)
和 identity (read)
范围。
如果您希望在生成迁移脚本时使用 --rewire-pipelines
标志,则还需要 Build (Read)
范围。要使用 inventory-report
和 --integrate-boards
标志,您需要向您的个人访问令牌授予完全访问权限。
如果您要从多个组织迁移,请允许个人访问令牌访问所有可访问的组织。有关更多信息,请参阅Microsoft Docs 中的使用个人访问令牌。
授予迁移者角色
要允许组织所有者以外的人员运行迁移或下载迁移日志,您可以将迁移者角色授予用户或团队。有关更多信息,请参阅“关于迁移者角色”。
您可以使用 ADO2GH 扩展、GitHub CLI 或 GraphQL API 授予迁移者角色。
使用 ADO2GH 扩展授予迁移者角色
要使用 CLI 授予迁移者角色,您必须已安装 GitHub CLI 的 ADO2GH 扩展。有关更多信息,请参阅“将存储库从 Azure DevOps 迁移到 GitHub Enterprise Cloud”。
-
在 GitHub 上,创建并记录满足授予迁移者角色所有要求的个人访问令牌。有关更多信息,请参阅“为 GitHub 创建个人访问令牌”。
-
将个人访问令牌设置为环境变量,在以下命令中将 TOKEN 替换为您上面记录的个人访问令牌。
-
如果您使用的是终端,请使用
export
命令。Shell export GH_PAT="TOKEN"
export GH_PAT="TOKEN"
-
如果您使用的是 PowerShell,请使用
$env
命令。Shell $env:GH_PAT="TOKEN"
$env:GH_PAT="TOKEN"
-
-
使用
gh ado2gh grant-migrator-role
命令,将 ORGANIZATION 替换为您要为其授予迁移者角色的组织,将 ACTOR 替换为用户或团队名称,并将 TYPE 替换为USER
或TEAM
。Shell gh ado2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
gh ado2gh grant-migrator-role --github-org ORGANIZATION --actor ACTOR --actor-type TYPE
注意
如果您正在为 GHE.com 授予迁移者角色,则还必须包含您企业子域的目标 API URL。例如:
--target-api-url https://api.octocorp.ghe.com
。
使用 GraphQL API 授予迁移者角色
您可以使用grantMigratorRole
GraphQL 变异来分配迁移者角色,并使用revokeMigratorRole
变异来撤销迁移者角色。
您必须使用满足所有访问要求的个人访问令牌 (PAT)。有关更多信息,请参阅“个人访问令牌所需范围”。
grantMigratorRole
变异
此 GraphQL 变异设置迁移角色。
mutation grantMigratorRole (
$organizationId: ID!,
$actor: String!,
$actor_type: ActorType!
) {
grantMigratorRole( input: {
organizationId: $organizationId,
actor: $actor,
actorType: $actor_type
})
{ success }
}
查询变量 | 描述 |
---|---|
organizationId | 您组织的ownerId (或组织 ID),来自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 }
}
为 GitHub 创建个人访问令牌
- 验证您是否具有完成所需任务的足够角色。有关更多信息,请参阅“所需角色”。
- 创建一个个人访问令牌(经典),确保授予完成所需任务的所有范围。您只能使用个人访问令牌(经典),不能使用细粒度个人访问令牌。有关更多信息,请参阅“管理您的个人访问令牌”和“个人访问令牌所需范围”。
- 如果对您需要访问的组织实施了 SAML 单点登录,请为 SSO 授权个人访问令牌。有关更多信息,请参阅“为使用 SAML 单点登录授权个人访问令牌”。
为迁移配置 IP 允许列表
如果迁移的源或目标使用 IP 允许列表(GitHub 的 IP 允许列表功能或您的身份提供商 (IdP) 的 IP 允许列表限制,例如 Azure CAP),您需要在 GitHub 上配置 IP 允许列表。请参阅“管理组织的允许 IP 地址”和“使用 IP 允许列表限制对企业的网络流量”。
- 如果您使用 GitHub 的 IP 允许列表功能,则必须将以下 GitHub IP 范围添加到源和/或目标组织的允许列表中。
- 如果您使用 IdP 的 IP 允许列表来限制对 GitHub 上企业的访问,则应在迁移完成后禁用企业帐户设置中的这些限制。
IP 范围因迁移目标是 GitHub.com 还是 GHE.com 而异。
GitHub.com 的 IP 范围
您需要将以下 IP 范围添加到您的 IP 允许列表(s)
- 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 允许列表(s)
- 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
进一步阅读
- “组织中的角色”