我们目前有多个不在网关后面的 API。公开的 API 使用 OpenID Connect 进行身份验证和声明授权。一些 API 仅供内部使用,并在防火墙后进行网络保护。
我们计划在我们的 API 前设置 Kong Gateway Enterprise。我们应该能够在网关处集中来自公共客户端的令牌验证。我们也可以集中一些基本的授权(例如范围)。一些逻辑可能仍需要在上游 API 中发生。因此,这些 API 仍然需要知道调用者(客户端和用户)的上下文。
理想情况下,我们希望能够拥有可以公开公开并在内部调用的 API,以避免重复逻辑。我想了解一些在 Kong 上实现这一点的安全方法。我仍然不清楚如何在网关后面设置系统。
我的一些问题是:
- 我们是否应该同时拥有内部网关和外部网关?是否有关于如何选择何时创建单独网关的指导?
- 如果我们在一个链中有多个上游服务,你如何传递 auth 上下文?
- 自定义标题?
- 传递原始的 JWT?
- 我们如何使服务安全地响应内部和外部调用?
- 我们可以设置一个网格并使用 mTLS,但是在 mTLS 和网关之间传递 auth 上下文的方法会不会有所不同?
- 我们可以从 Kong 设置自定义标头,并让其他内部服务也呈现它们。但是由于这不在 JWT 中,我们不是失去了声明的真实性吗?
- 我们可以让每个调用者(包括内部服务)获得他们自己的令牌,但这可能会使客户端和机密的数量难以管理。另外,当这些服务仍然代表用户作为早期请求的一部分时,它不会处理这种情况。
- 或者我们可以继续保持独立的内部和外部服务,但重复一些逻辑。
其他一些可能有用的注释:
- 除了我们的 OIDC 提供商之外,没有其他现有的 PKI。
- 服务不会全部被容器化。想想 EC2 上的 IIS。
- 服务大多是 REST 式的。