Authentication Kubernetes应用程序身份验证

Authentication Kubernetes应用程序身份验证,authentication,kubernetes,Authentication,Kubernetes,也许这是一个愚蠢的问题,但我真的不知道是否必须在kubernetes集群中使用令牌等来保护应用程序 例如,我从集群内的客户机向集群内的服务器发出grpc调用。 我认为这应该是安全的,无需使用令牌或类似的东西对客户端进行身份验证,因为(如果我理解正确的话)kubernetes吊舱和服务在VPN中工作,只要不告诉它就不会公开 但这真的安全吗?我是否应该在集群中构建一个授权系统 另外,我如何使用服务在不将服务器暴露在集群之外的情况下通过服务器吊舱对grpc调用进行负载平衡?如果您有服务,当您有多个副本

也许这是一个愚蠢的问题,但我真的不知道是否必须在kubernetes集群中使用令牌等来保护应用程序

例如,我从集群内的客户机向集群内的服务器发出grpc调用。 我认为这应该是安全的,无需使用令牌或类似的东西对客户端进行身份验证,因为(如果我理解正确的话)kubernetes吊舱和服务在VPN中工作,只要不告诉它就不会公开

但这真的安全吗?我是否应该在集群中构建一个授权系统


另外,我如何使用服务在不将服务器暴露在集群之外的情况下通过服务器吊舱对grpc调用进行负载平衡?

如果您有
服务
,当您有多个
副本时,它已经有内置负载平衡器

此外,Kubernetes流量是集群内部的开箱即用流量,除非您使用
负载平衡器
入口
节点端口
明确公开流量

这是否意味着交通安全?不 默认情况下,Kubernetes集群中的一切都是允许的,因此每个服务都可以访问StatefleSet应用程序中的每个服务或pod

您可以使用
NetworkPolicy
来允许从一个服务到另一个服务的流量,而不允许其他任何服务。这将增加安全性

这是否意味着现在交通安全?视情况而定。 身份验证将添加一个额外的安全层,以防容器被黑客攻击。可能会有更多的情况,但我现在想不起来

因此,内部身份验证通常用于提高生产系统的安全性


我希望它能回答这个问题。

好的,谢谢。因此,只要我把一切都设置得正确,并且没有弄乱我的网络策略,我就不必在测试中使用身份验证,但应该在生产中使用身份验证。如果
NetworkPolicy
firewall只允许服务对服务的通信,那么黑客需要破解此服务来发送请求。若你们也有身份验证,那个么秘密通常在环境变量中,所以密码也可以在完整的容器接管中读取。除非它被部分黑客攻击,否则身份验证可以增加价值。简言之,只有在应用程序内部运行更复杂的加密/解密机制才能增加价值。所以不可能在应用程序之外(比如在shell中)进行身份验证。我相信HTTPS可以增加更大的价值,因为Kubernetes使用诸如Calico之类的插件,而流量在IPIP隧道中。它们没有加密。所以,如果有人能够捕获节点之间的数据包,他们就可以看到HTTP情况下的所有内容。特别是,如果集群分布在不同的位置,并且有人可以访问VPN,或者集群是基于前提的,我也会考虑人为故障。如果您或其他管理员在群集中之外暴露流量并忘记
NetworkPolicy
。这是没有授权的缺点。当然,我很高兴听到一些批评我的理解,如果有人可以证明在这种情况下没有auth的例子场景。