Security Https证书和Kubernetes(EKS)

Security Https证书和Kubernetes(EKS),security,https,kubernetes,Security,Https,Kubernetes,我想保护在Kubernetes(EKS)上运行的web应用程序的安全。连接到群集的所有节点都在专用子网上运行 我有一个前端服务和一打后端服务 前端服务是运行在端口80上的容器的吊舱。它被配置为连接到ELB,该ELB仅接受来自443的具有https证书的流量 apiVersion: v1 kind: Service metadata: name: service_name labels: app: service_name annotations: service.be

我想保护在Kubernetes(EKS)上运行的web应用程序的安全。连接到群集的所有节点都在专用子网上运行

我有一个前端服务和一打后端服务

前端服务是运行在端口80上的容器的吊舱。它被配置为连接到ELB,该ELB仅接受来自443的具有https证书的流量

apiVersion: v1
kind: Service
metadata:
  name: service_name
  labels:
    app: service_name
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: xxxxxxxxxx
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  ports:
    - port: 443 # Exposed port
      targetPort: 80 # Container port
  selector:
     app: service_name
  type: LoadBalancer
后端服务是运行同样在端口80上运行的容器的吊舱。它们都未配置为可从集群外部访问。后端服务通过指向(而不是https)相互对话,因为我使用此模板配置了它们:

apiVersion: v1
kind: Service
metadata:
  name: service_name
spec:
  ports:
    - port: 80 # Exposed port
      targetPort: 80 # Container port
  selector:
     app: service_name
这一切都是可行的,但是否足够


前端/后端容器是否也应该将certificate/443与通配符https证书一起使用?这个配置应该在容器内部还是在服务的配置上进行?

我现在已经做了很多调查,下面是我的结论

我的所有EKS EC2实例都在专用子网上运行,这意味着它们无法从外部访问。是的,默认情况下Kubernetes不会加密POD之间的流量,这意味着访问我的VPC的黑客(可能是一名无赖的AWS工程师,可能是一名设法实际访问AWS数据中心的人,可能是设法访问我的AWS帐户的人…)将能够嗅探网络流量。同时,我觉得在这种情况下,黑客将获得更多!例如,如果他有权访问我的AWS帐户,他可以自己下载https证书。如果他设法走进一个(高安全性)AWS数据中心并找到了我的服务器,最好将他必须承担的风险与您的数据的价值进行比较。如果您的数据包括信用卡/付款或敏感个人数据(出生日期、健康详细信息…),则必须使用SSL加密。 无论如何,为了保证pods的流量,有两种选择

  • 更新所有pod源代码并在那里添加证书。如果您运行许多POD,并且证书每隔一年过期,则需要大量维护
  • 添加一个额外的“网络层”,如。这将增加集群的复杂性,对于EKS,AWS的支持将是“最大努力”。理想情况下,您将支付Istio支持费用
  • 对于负载平衡器,我决定向集群添加入口(Ngnix、Traefik…),并使用https进行设置。这是至关重要的,因为ELB位于公共子网上