Skip to main content
Skip to content

关于对 IdP 的条件访问策略的支持

当企业使用 OIDC SSO 时, GitHub 可以使用 IdP 的条件访问策略(CAP)验证对企业及其资源的访问。

谁可以使用此功能?

Enterprise Managed Users 可供 GitHub Enterprise Cloud 上的新企业账户使用。 请参阅“关于 Enterprise Managed Users”。

注意

对 Enterprise Managed Users 的 OpenID Connect (OIDC) 和条件访问策略 (CAP) 支持仅适用于 Microsoft Entra ID(以前称为 Azure AD)。

关于对条件访问策略的支持

当企业使用 OIDC SSO 时,GitHub 会自动使用 IdP 的条件访问策略(CAP)中的 IP 条件,在成员使用 Web 界面、更改 IP 地址时,以及每次使用与用户帐户关联的 GitHub 或 SSH 密钥进行身份验证时,验证与 personal access token 的交互。

注意

对 Web 会话的 CAP 保护目前为 公开预览,可能会更改。

如果你的企业已经启用了 IdP CAP 支持,你可以选择在企业的“身份验证安全”设置中启用对 Web 会话的扩展保护。 启用 Web 会话保护后,如果不满足用户的 IP 条件,他们可以查看和筛选所有用户拥有的资源,但无法查看通知、搜索、个人仪表板或收藏的仓库的结果详细信息。

对于启用了 OIDC SSO 的任何 GitHub,具有托管用户的企业 都支持 CAP。 企业所有者可以选择使用此 IP 允许列表配置,而不是 GitHub“IP 允许列表”,并在配置 OIDC SSO 后执行此操作。 有关 IP 允许列表的详细信息,请参阅“使用 IP 允许列表限制企业网络的流入流量”和“管理组织允许的 IP 地址”。

  • GitHub 会强制执行你的 IdP 的 IP 条件,但无法强制执行你的设备合规性条件。
  • 多重身份验证策略仅在登录 IdP 时强制实施。

有关将 OIDC 与 Enterprise Managed Users配合使用的详细信息,请参阅 为企业托管用户配置 OIDC从 SAML 迁移到 OIDC

关于 CAP 和部署密钥

部署密钥是一个 SSH 密钥,用于授予对单个存储库的访问权限。 由于部署密钥不代表用户执行操作,因此 CAP IP 条件不适用于使用部署密钥进行身份验证的任何请求。 有关详细信息,请参阅“管理部署密钥”。

集成和自动化的注意事项

GitHub 将源 IP 地址发送给您的 IdP,以根据您的 CAP 进行验证。 若要确保 IdP 的 CAP 未阻止操作和应用,需要对配置进行更改。

警告

如果使用 GitHub Enterprise Importer 从 你的 GitHub Enterprise Server 实例 迁移组织,请确保使用一个豁免于 Entra ID CAP 的服务帐户,否则迁移可能会被阻止。

GitHub Actions

使用 personal access token 的操作很可能会被您的 IdP 的 CAP 阻止。 我们建议由服务帐户创建 personal access token,该服务帐户稍后会从 IdP 的 CAP 中的 IP 控件中豁免。

如果无法使用服务帐号,另一种解除对使用 personal access token 的操作限制的方法是允许 GitHub Actions 使用的 IP 范围。 有关详细信息,请参阅“关于GitHub的 IP 地址”。

GitHub Codespaces

GitHub Codespaces 如果企业使用 OIDC SSO 和 CAP 限制 IP 地址的访问,则可能无法使用。 这是因为 codespace 是使用动态 IP 地址创建的,IdP 的 CAP 可能会阻止这些地址。 其他 CAP 策略还可能会影响 GitHub Codespaces可用性,具体取决于策略的特定设置。

github.dev 编辑器

如果企业使用 OIDC SSO 和 CAP 限制 IP 地址的访问,则 github.dev 编辑器可能不可用。 这是因为 github.dev 依赖动态 IP 地址,而你的 IdP 的 CAP 很可能会阻止这类地址。 其他 CAP 策略还可能会影响 github.dev可用性,具体取决于策略的特定设置。

GitHub Apps 和 OAuth apps

当 GitHub Apps 和 OAuth apps 为用户登录并代表该用户发出请求时,GitHub 会将应用服务器的 IP 地址发送到您的 IdP 进行验证。 如果 IdP 的 CAP 未验证应用的服务器的 IP 地址,请求将失败。

当 GitHub Apps 以应用自身或安装实例的身份调用 GitHub API 时,这些调用都不是代表某个用户执行的。 由于 IdP 的 CAP 执行策略并将策略应用于用户帐户,因此无法针对 CAP 验证这些应用程序请求,并且始终都会允许它们通过。 若要详细了解 GitHub Apps 以应用本身形式或以安装形式进行的身份验证,请参阅 关于使用 GitHub 应用进行身份验证

可以联系要使用的应用的所有者,询问其 IP 范围,并配置 IdP 的 CAP,以允许从这些 IP 范围进行访问。 如果无法联系所有者,可以查看 IdP 登录日志,查看请求中显示的 IP 地址,然后允许列出这些地址。

如果您不希望允许贵企业所有应用的全部 IP 范围,还可以将已安装的 GitHub Apps 和已获授权的 OAuth apps 从 IdP 允许列表中豁免。 如果这样做,无论起始 IP 地址如何,这些应用都将继续工作。 有关详细信息,请参阅“在企业中强制执行安全设置策略”。

其他阅读材料