Skip to main content

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

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

谁可以使用此功能?

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

Note

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

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

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

Note

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

如果你的企业已经启用了 IdP CAP 支持,你可以选择在企业的“身份验证安全”设置中启用对 Web 会话的扩展保护。 要启用此功能,你的企业必须拥有 1,000 名或更少的成员,无论是活动还是已暂停的成员。

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

  • GitHub Enterprise Cloud 强制实施你的 IdP 的 IP 条件,但不能强制实施你设备的合规性条件。
  • 多重身份验证策略仅在登录 IdP 时强制实施。

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

关于 CAP 和部署密钥

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

集成和自动化的注意事项

GitHub 将发起的 IP 地址发送到你的 IdP 以针对你的 CAP 进行验证。 若要确保 IdP 的 CAP 未阻止操作和应用,需要对配置进行更改。

Warning

如果使用 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 地址如何,这些应用都将继续工作。 有关详细信息,请参阅“为企业中的安全设置实施策略”。

其他阅读材料