参考官方文档:
https://dev.mysql.com/doc/refman/5.7/en/group-replication-security.html
17.5.1 IP地址白名单
组复制插件具有一个配置选项,用于确定可以从哪些主机接受传入的组通信连接。 此选项称为group_replication_ip_whitelist。 如果在服务器s1上设置此选项,则当服务器s2与s1建立连接以进行组通信时,则s1首先在接受来自s2的连接之前检查白名单。 如果s2在白名单中,则s1接受连接,否则s1拒绝s2的连接尝试。
如果未明确指定白名单,则服务器会自动将白名单设置为服务器具有网卡的私有网络。 这意味着服务器即使在公共IP上具有网卡,也不会默认允许来自外部主机的连接。
只要IP白名单设置为AUTOMATIC,就会在错误日志中添加一个条目,类似于
2017-10-07T06:40:49.320686Z 4 [Note] Plugin group_replication reported: '[GCS] Added automatically IP ranges 192.0.2.21/24,198.51.100.44,203.0.113.0/24,127.0.0.1/32 to the whitelist'
您可以通过手动设置允许的组通信连接的主机列表来进一步提高组的安全性。 您可以任意组合指定主机名(自MySQL 5.7.21),简单IP地址或CIDR表示法。 必须以逗号分隔每个条目。 例如:
mysql> STOP GROUP_REPLICATION;
mysql> SET GLOBALgroup_replication_ip_whitelist="192.0.2.21/24,198.51.100.44,203.0.113.0/24,example.org,www.example.com/24"; mysql> START GROUP_REPLICATION;
本地主机IP地址(127.0.0.1)始终添加到白名单中。 如果不显式指定,则隐式并自动添加。 不支持IPv6地址和解析为IPv6地址的主机名。
对于主机名,仅当另一个服务器发出连接请求时才会进行名称解析。 无法解析的主机名不被视为白名单验证,并且会向错误日志写入警告消息。 对已解析的主机名执行前向确认的反向DNS(FCrDNS)验证。
警告:
主机名本质上不如白名单中的IP地址安全。 FCrDNS验证提供了良好的保护级别,但可能会受到某些类型的攻击的影响。 仅在严格必要时指定白名单中的主机名,并确保用于名称解析的所有组件(如DNS服务器)都在您的控制之下。 您还可以使用hosts文件在本地实现名称解析,以避免使用外部组件。
要加入复制组,只需将服务器列入要加入该组的请求的种子成员列入白名单。 通常,这将是复制组的引导成员,但它可以是加入组的服务器的配置中的--loose-group_replication_group_seeds选项列出的任何服务器。 但请注意,重新配置复制组时,组成员将重新建立它们之间的连接。 如果组成员仅在重新配置后由不再属于复制组的服务器白名单,则无法重新连接到复制组中未将其列入白名单的其余服务器。 要完全避免此情况,请为作为复制组成员的所有服务器指定相同的白名单。
注意:
可以根据您的安全要求在不同的组成员上配置不同的白名单,例如,以便将不同的子网分开。 如果需要配置不同的白名单以满足安全要求,请确保复制组中的白名单之间存在足够的重叠,以大限度地提高服务器在没有原始种子成员的情况下重新连接的可能性。