将来自 kubernetes 的 mysql 主机列入白名单



我目前正在尝试使用 istio 在 kubernetes 上构建我的服务,并且在尝试将所有允许通过 mysql.user 表连接到 Mysql 数据库的主机 IP 列入白名单时遇到麻烦。

新部署后,我总是收到以下错误: 不允许主机"X.X.X.X"连接到此MySQL服务器

知道每次我部署服务时,总是会弹出一个新的 pod IP,我必须添加用新主机 IP 替换旧用户。我真的很想避免对主机使用"%"。

有什么方法可以只注册节点 IP 以保持其持久性?

Kubernetes 和 Istio 都提供网络级保护,将允许的主机设置为"all"是安全的。

对于您正在寻找的内容,Kubernetes 网络策略可能是最佳集群级别匹配。 您将数据库本身设置为接受来自所有地址的连接,但随后将设置网络策略以拒绝连接,但具有一组特定标签的 Pod 除外。 由于您按标签控制,因此任何具有相应标签集的新 Pod 都将被自动授予访问权限,而无需手动更改。

根据您的需求,ClusterIP服务提供的默认保护可能足以满足您的需求。 如果服务ClusterIP但不是任何其他类型,则无法从群集外部访问该服务;没有使其可访问的网络路径。 这通常足以防止临时网络窥探者找到您的数据库。

Istio 的授权系统在网络级别上更加强大和健壮。 它可以限制调用方的 Kubernetes 服务帐户的调用,并使用 TLS 证书而不仅仅是 IP 地址来识别调用方。 但是,默认情况下它不会启用,根据我对它的有限经验,很容易意外配置它以执行诸如阻止 Kubernetes 运行状况检查或 Prometheus 指标探测之类的操作。 如果您对 IP 级安全性感到满意,这可能比您需要的更强大。

最新更新