我想确保我的web应用程序运行在Kubernetes (EKS)上。连接到集群的所有节点都运行在私有子网上。
我有一个前端服务和十几个后端服务。
前端服务是运行在80个港口上的集装箱的吊舱。它被配置为附加到ELB,ELB只接受来自带有https证书的443的通信量。
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上。它们中没有一个被配置为可以从集群外部访问。后端服务通过指向name (而不是https)相互交谈,因为我用这个模板配置了它们:
apiVersion: v1
kind: Service
metadata:
name: service_name
spec:
ports:
- port: 80 # Exposed port
targetPort: 80 # Container port
selector:
app: service_name一切都很好,但够了吗?
前端/后端容器是否也应该与通配符https证书一起使用证书/443?这个配置是在容器内部完成还是在服务配置上完成?
发布于 2018-11-25 06:47:28
我已经做了相当多的调查,下面是我要讲的内容。
我所有的EKS EC2实例都运行在私有子网上,这意味着它们不能从外部访问。是的,在默认情况下,Kubernetes不加密豆荚之间的通信,这意味着获得对我VPC的访问的黑客(可能是一个流氓AWS工程师,一个设法实际访问AWS数据中心的人,一个设法访问我的AWS帐户的人.)就能嗅到网络流量了。同时,我觉得在这种情况下,黑客将有更多的访问!如果他能够访问我的AWS帐户,他可以自己下载https证书。如果他设法进入一个(高度安全的) AWS数据中心并找到我的服务器,那么比较他所承担的风险与您的数据的价值是很好的。如果您的数据包括信用卡/付款或敏感的个人数据(出生日期、健康详细信息.),则必须进行SSL加密。无论如何,为了保护豆荚的流量,有两个选项。
对于负载均衡器,我决定向集群中添加一个入口(Ngnix,Traefik.)然后用https设置它。这一点至关重要,因为ELB位于公共子网上。
https://stackoverflow.com/questions/53169659
复制相似问题