我们有一个 Kubernetes 集群 (kube-),分布在 4 个运行 CoreOS 的节点上。我们最重要的服务将在此 Kubernetes 环境中运行,我们正在尽一切努力使其尽可能安全,但我们计划将 API 端口 (6443) 暴露给互联网。
这样做是否安全?
到目前为止,我们做了以下工作:
我们禁用了匿名访问(使用--anonymous-auth = false标志)。
证书检查似乎工作正常,但如果不提供客户端证书数据,我就无法访问集群上的任何内容。
我们计划使用 RBAC 授权。
我们目前已安装最新版本的 kubernetes(并且我们计划在新的修复发布时快速更新)。
我们设置了速率限制的防火墙来缓解暴力攻击。
我们为服务器购买的交换机支持DDoS保护。
我们还可以采取其他措施来确保该暴露端口的安全吗?或者这样做完全不明智吗?
答案1
您采取的步骤似乎足以保护 api 端口
唯一需要验证的是,如果您使用的是 K8s v1.10 之前的版本,则可以通过设置 -- 禁用不安全端口insecure-port=0
,这样就只允许加密流量。
有时这是不可能的,因为健康检查配置或引导机制。如果是这种情况,请用防火墙阻止公共和内部访问端口。此标志自 v1.10 起已弃用。
本文可能还有助于安全最佳实践