如何防止直接访问Nginx入口控制器公开的已部署API服务

时间:2018-12-07 16:36:12

标签: amazon-ec2 kubernetes kops nginx-ingress

我已经使用kops和入口nginx控制器在aws上部署了应用程序。

据我了解,入口控制器看起来可以公开展示群集中部署的每个服务。因此,这使我对安全性和身份验证感到疑惑。

我的项目的架构是什么? 我在集群中部署了3个服务:

  1. -client-ui(前端)

  2. -authentication-api(创建/生成/验证JWT令牌并调用其他服务,例如data-api)

  3. -data-api(在数据库中创建/读取/更新/删除敏感数据的API)

所以问题是:如果Ingress控制器公开了所有服务,如果不允许用户访问,则如何限制对特定服务的访问?

在这种情况下,只能从authentication-api访问data-api。因此,如果我在浏览器中输入 www.client-ui.com/data/getXXX显然我不应该能够访问该端点。如果他的jwt令牌已经过验证,我应该只能从authentication-api进行操作。

所以我想某些api应该只能从集群内部访问,而某些api应该是公开的!?

您能解释一下我该怎么做吗?

谢谢

1 个答案:

答案 0 :(得分:1)

根据云提供商的不同,入口服务上会有不同的注释。您想要的是特定入口资源的内部负载平衡器。 对于您的情况(AWS),应为:

annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true"

请参阅: