将 API 网关与 OIDC 配合使用
借助 GitHub Actions,可以使用 OpenID Connect (OIDC) 令牌对 GitHub Actions 之外的工作流进行身份验证。 例如,可以在专用网络的边缘运行 API 网关,该网关使用 OIDC 令牌对传入请求进行身份验证,然后代表专用网络中的工作流发出 API 请求。
下图概述了此解决方案的体系结构:
重要的是,不仅要验证 OIDC 令牌来自 GitHub Actions,而且还要验证它专门来自你预期的工作流,以使其他 GitHub Actions 用户无法访问专用网络中的服务。 可以使用 OIDC 声明创建这些条件。 有关详细信息,请参阅“关于使用 OpenID Connect 进行安全强化”。
这种方法的主要缺点是,必须实现 API 网关来代表你发出请求,并在网络边缘运行网关。
具有以下优点。
- 无需配置任何防火墙,也无需修改专用网络的路由。
- API 网关是无状态的,可以水平缩放以处理高可用性和高吞吐量。
有关详细信息,请参阅 github/actions-oidc-gateway 存储库中的 API 网关的参考实现。 此实现需要对用例进行自定义,并且无法按原样随时运行。 有关详细信息,请参阅“关于使用 OpenID Connect 进行安全强化”。