[MDEV-27246] Implement a method to add IPs to allowlist for Galera Cluster node addresses that can make SST/IST requests Created: 2019-10-10  Updated: 2023-03-22  Resolved: 2022-08-02

Status: Closed
Project: MariaDB Server
Component/s: Authentication and Privilege System, Galera, Galera SST, wsrep
Fix Version/s: 10.10.1

Type: Task Priority: Blocker
Reporter: Geoff Montee (Inactive) Assignee: Jan Lindström (Inactive)
Resolution: Fixed Votes: 3
Labels: Preview_10.10, galera, ist, security, sst, wsrep

Issue Links:
Relates
relates to MDEV-6385 MariaDB Galera Authentication between... Closed
relates to MDEV-27263 Cluster bootstrap node shows duplicat... Closed
relates to MDEV-27275 Galera cluster joiner node does not p... Closed
relates to MDEV-28146 SST via mysqldump crash when testing ... Closed
relates to MDEV-27874 Cluster node is not updating mysql.ws... Closed

 Description   

Currently, as long as a node has access to Galera Cluster's TCP ports, it is allowed to make SST/IST requests. In general, no authentication is performed.

Current Security Methods

Currently, there are basically two ways to prevent an unauthorized node from making SST/IST requests:

1.) Use firewall rules to prevent unauthorized hosts from accessing the Galera Cluster ports.

https://mariadb.com/kb/en/library/configuring-mariadb-galera-cluster/#network-ports

2.) Configure your nodes to require TLS with certificate validation. This would have to be done separately for SSTs and ISTs.

For mariabackup SSTs, there is some information about how to configure TLS here:

https://mariadb.com/kb/en/library/mariabackup-sst-method/#tls

For rsync SSTs, there is some information about how to configure TLS here:

https://mariadb.com/kb/en/library/introduction-to-state-snapshot-transfers-ssts/#rsync

For ISTs, there is some information about how to configure TLS here:

https://mariadb.com/kb/en/library/securing-communications-in-galera-cluster/#securing-galera-cluster-replication-traffic

New Requested SST/IST Allowlist

Some users do not think that any of the current methods are sufficient. They would like MariaDB to implement some method that can be used to allowlist the addresses that are allowed to make SST/IST requests.

How could this be implemented?

Introduced a new variable called wsrep_allowlist to store Galera node IPs in the cluster. If the joiner node IP is not in the wsrep_allowlist, the Galera cluster will not allow the joiner node to join the cluster. This will help prevent unauthorized access to the cluster

The most intuitive method would probably be to treat wsrep_cluster_address as a allowlist of the addresses that can make SST/IST requests., This system variable is already used to configure the addresses of the nodes in the cluster, so it would work out-of-the-box for most users.

-https://mariadb.com/kb/en/library/galera-cluster-system-variables/#wsrep_cluster_address-



 Comments   
Comment by Ralf Gebhardt [ 2019-11-29 ]

Hi seppo, please review this feature request and lets discuss this in our next call.

Comment by Manjot Singh (Inactive) [ 2020-10-06 ]

Workaround: use ssl certificates in wsrep_provider_options

Comment by Jan Lindström (Inactive) [ 2021-12-14 ]
Comment by Jan Lindström (Inactive) [ 2022-02-09 ]
  • new branch : preview-10.9-MDEV-27246-galera-allowlist
Comment by Ramesh Sivaraman [ 2022-03-16 ]

ok to push

Comment by Sergei Golubchik [ 2022-03-18 ]

galera-sst-mysqldump constantly fails in this branch, cannot push

Comment by Sergei Golubchik [ 2022-03-18 ]

the branch was renamed to bb-10.9-MDEV-27246-galera-allowlist

Comment by Jan Lindström (Inactive) [ 2022-05-26 ]

New branch: preview-10.10-MDEV-27246-allowlist-galera

Comment by Jan Lindström (Inactive) [ 2022-06-06 ]

Latest version fails on regression testing

Comment by Jan Lindström (Inactive) [ 2022-06-15 ]
Comment by Jan Lindström (Inactive) [ 2022-06-15 ]

ramesh Can you do short testing on preview version.

Comment by Ramesh Sivaraman [ 2022-06-22 ]

jplindst preview version looks good.

Comment by Ralf Gebhardt [ 2022-06-23 ]

ramesh, and wsrep_allowlist can be a ip4, ip6 or a hostname? Can it include wildcards?

Comment by Ramesh Sivaraman [ 2022-06-23 ]

ralf.gebhardt@mariadb.com Yes, wsrep_allowlist can be IPv4 or IPv6. It does not accept wildcard IP or hostname. Galera prints warning message in error log if we use Wildcard IP or hostname.

[Warning] WSREP: Invalid IP address 192.168.100.% provided in `wsrep_allowlist` variable
 
[Warning] WSREP: Invalid IP address localhost provided in `wsrep_allowlist` variable
 
MariaDB [(none)]> select * from mysql.wsrep_allowlist;
Empty set (0.003 sec)
 
MariaDB [(none)]>

Generated at Thu Feb 08 09:51:28 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.