Skip to main 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 条件,他们可以查看和筛选所有用户拥有的资源,但无法查看通知、搜索、个人仪表板或收藏的仓库的结果详细信息。

GitHub 支持任何启用 OIDC SSO 的 具有托管用户的企业 的 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

如果企业使用 OIDC SSO 和 CAP 来通过 IP 地址限制访问,GitHub Codespaces 可能不可用。 这是因为 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 范围,还可以从 IdP 允许列表中免除已安装的 GitHub Apps 以及授权的 OAuth apps。 如果这样做,无论起始 IP 地址如何,这些应用都将继续工作。 有关详细信息,请参阅“在企业中强制执行安全设置策略”。

其他阅读材料