0

我们将服务部署在 K8s 中,使用 istio 作为服务网格,并使用 Ingress-nginx 公开。

现在,我们想使用 Ingress-nginx 入口控制器添加 AuthN 和 AuthZ。

  1. 我们想做 Oauth2-OpenID。使用 oauth2-proxy 模块可以做到这一点。返回的 jwt 令牌具有用户的 UUID,但没有他的组。
  2. 我们有 k8s 服务,它具有用户 UUID 和组(后端 dynamodb)的映射。所以我们需要检索用户组。
  3. 我们有基于 OPA(开放策略代理)的规则,用于针对用户组的服务 API 的 AuthZ。因此必须针对用户组验证服务 API。
  4. 一旦 AuthN 和 AuthZ 成功后,带有用户 UUID 的 http 标头,userGroup 应该传递给上游服务。
  5. 我们还需要使用用户 UUID、userGroup 设置 cookie 以供客户端应用程序使用。

以上 5 个步骤都可以使用“Ingress-nginx”一点一点地执行。但是,不能一起作为代理链。有没有办法在“Ingress-nginx”入口控制器中执行这些操作?我正在寻找开源入口控制器。

谢谢。

问候, 普拉卡什

4

3 回答 3

0

APIsix网关推荐支持身份认证和K8S部署 https://apisix.apache.org/

于 2022-03-01T09:37:43.270 回答
0

Datawiza ( https://www.datawiza.com/platform/ ) 为此提供了商业解决方案。它有基本使用的免费计划。

于 2022-03-01T04:47:07.517 回答
0

我不是 100% 肯定,但你不能用 ingress-nginx 做到这一点,我试过但失败了,因为 Nginx 不会给你很大的灵活性加上它的代理服务。

我建议检查一次 Kong API 网关,或者您也可以将其用作入口控制器,它也是开源的。您可以使用开源插件并无需任何更改即可使用它们。

使用 Kong 插件可以轻松设置 AuthZ 和 AuthN。

在这里你可以参考我的一篇关于 Authz & AuthN with Kong, keycloak 的文章:https ://faun.pub/kong-jwt-scope-base-auth-with-keycloak-b9938a96d281

于 2022-03-01T05:39:36.000 回答