【问题标题】:Whitelist mysql host from kubernetes来自 kubernetes 的白名单 mysql 主机
【发布时间】:2020-05-19 01:53:09
【问题描述】:

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

我在新部署后总是收到以下错误: 主机 'X.X.X.X' 不允许连接到这个 MySQL 服务器

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

有什么办法可以让我只注册节点 IP 来保持其持久性?

【问题讨论】:

    标签: mysql database kubernetes google-kubernetes-engine istio


    【解决方案1】:

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

    Kubernetes network policy 可能是您正在寻找的最佳集群级别匹配项。您将数据库本身设置为接受来自所有地址的连接,然后设置网络策略以拒绝来自具有特定标签集的 pod 的连接。由于您通过 label 进行控制,因此任何具有适当标签集的新 pod 都将自动获得访问权限,而无需手动更改。

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 2020-10-20
      • 1970-01-01
      • 2021-05-06
      • 2012-06-28
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多