Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-27246

Implement a method to add IPs to allowlist for Galera Cluster node addresses that can make SST/IST requests

Details

    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-

      Attachments

        Issue Links

          Activity

            GeoffMontee Geoff Montee (Inactive) created issue -
            GeoffMontee Geoff Montee (Inactive) made changes -
            Field Original Value New Value
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            Labels galera security sst wsrep galera ist security sst wsrep
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            Description Currently, as long as a node has access to Galera Cluster's TCP ports, it is allowed to make SST/IST requests. No authentication is performed. There are basically two ways to prevent an unauthorized node from making SST/IST requests at the moment:

            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 for SSTs. There is some information about how to configure TLS for mariabackup SSTs here:

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

            However, some users do not think this is sufficient. They would like MariaDB to implement some method that can be used to whitelist the addresses that are allowed to make SST/IST requests.

            How could this be implemented?

            The most intuitive method would probably be to treat {{wsrep_cluster_address}} as a whitelist 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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_whitelist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a whitelist for SST/IST requests. If it is set to {{OFF}}, then no whitelist is used.
            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.

            h2. 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

            h2. New Requested SST/IST Whitelist

            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 whitelist the addresses that are allowed to make SST/IST requests.

            How could this be implemented?

            The most intuitive method would probably be to treat {{wsrep_cluster_address}} as a whitelist 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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_whitelist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a whitelist for SST/IST requests. If it is set to {{OFF}}, then no whitelist is used.
            julien.fritsch Julien Fritsch made changes -
            Assignee Jan Lindström [ jplindst ] Ralf Gebhardt [ ralf.gebhardt@mariadb.com ]
            ralf.gebhardt Ralf Gebhardt made changes -
            Assignee Ralf Gebhardt [ ralf.gebhardt@mariadb.com ] Seppo Jaakola [ seppo ]
            ralf.gebhardt Ralf Gebhardt added a comment -

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

            ralf.gebhardt Ralf Gebhardt added a comment - Hi seppo , please review this feature request and lets discuss this in our next call.
            ralf.gebhardt Ralf Gebhardt made changes -
            Fix Version/s 10.5 [ 23608 ]
            julien.fritsch Julien Fritsch made changes -
            Issue Type Task [ 3 ] New Feature [ 2 ]
            stepan.patryshev Stepan Patryshev (Inactive) made changes -
            stepan.patryshev Stepan Patryshev (Inactive) made changes -

            Workaround: use ssl certificates in wsrep_provider_options

            manjot Manjot Singh (Inactive) added a comment - Workaround: use ssl certificates in wsrep_provider_options
            clieu Christine Lieu (Inactive) made changes -
            Summary Implement a method to whitelist Galera Cluster node addresses that can make SST/IST requests Implement a method to add IPs to allowlist for Galera Cluster node addresses that can make SST/IST requests
            mkaruza Mario Karuza (Inactive) made changes -
            Assignee Seppo Jaakola [ seppo ] Mario Karuza [ mkaruza ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 100337 ] MariaDB v4 [ 135783 ]
            jplindst Jan Lindström (Inactive) made changes -
            Component/s Authentication and Privilege System [ 13101 ]
            Component/s Galera [ 10124 ]
            Component/s Galera SST [ 10121 ]
            Component/s wsrep [ 11500 ]
            Component/s Authentication and Privilege System [ 14922 ]
            Component/s Galera [ 14918 ]
            Component/s Galera SST [ 14920 ]
            Component/s wsrep [ 15006 ]
            Key MENT-425 MDEV-27246
            Affects Version/s 10.4 [ 23604 ]
            Affects Version/s 10.3 [ 23605 ]
            Affects Version/s 10.2 [ 23606 ]
            Issue Type New Feature [ 2 ] Task [ 3 ]
            Project MariaDB Enterprise [ 11500 ] MariaDB Server [ 10000 ]
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Mario Karuza [ mkaruza ] Jan Lindström [ jplindst ]
            jplindst Jan Lindström (Inactive) made changes -
            Fix Version/s 10.8 [ 26121 ]
            jplindst Jan Lindström (Inactive) made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            jplindst Jan Lindström (Inactive) added a comment - - edited https://github.com/MariaDB/server/pull/1966 branch : preview-10.8- MDEV-27246 -galera-allowlist galera-library branch : mariadb-4.x commit 71c9d8e6
            jplindst Jan Lindström (Inactive) made changes -
            Status In Progress [ 3 ] In Testing [ 10301 ]
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Ramesh Sivaraman [ JIRAUSER48189 ]
            jplindst Jan Lindström (Inactive) made changes -
            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.

            h2. 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

            h2. New Requested SST/IST Whitelist

            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 whitelist the addresses that are allowed to make SST/IST requests.

            How could this be implemented?

            The most intuitive method would probably be to treat {{wsrep_cluster_address}} as a whitelist 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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_whitelist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a whitelist for SST/IST requests. If it is set to {{OFF}}, then no whitelist is used.
            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.

            h2. 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

            h2. 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?

            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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_allowlist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a whitelist for SST/IST requests. If it is set to {{OFF}}, then no allowlist is used.
            jplindst Jan Lindström (Inactive) made changes -
            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.

            h2. 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

            h2. 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?

            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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_allowlist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a whitelist for SST/IST requests. If it is set to {{OFF}}, then no allowlist is used.
            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.

            h2. 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

            h2. 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?

            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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_allowlist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a allowlist for SST/IST requests. If it is set to {{OFF}}, then no allowlist is used.
            jplindst Jan Lindström (Inactive) made changes -
            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.

            h2. 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

            h2. 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?

            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

            We could also make this behavior optional. For example, we could create a new system variable called {{wsrep_sst_enforce_allowlist}}. If it is set to {{ON}}, then {{wsrep_cluster_address}} is treated as a allowlist for SST/IST requests. If it is set to {{OFF}}, then no allowlist is used.
            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.

            h2. 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

            h2. 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?

            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
            ramesh Ramesh Sivaraman made changes -
            ramesh Ramesh Sivaraman made changes -
            serg Sergei Golubchik made changes -
            Fix Version/s 10.9 [ 26905 ]
            Fix Version/s 10.8 [ 26121 ]
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Ramesh Sivaraman [ JIRAUSER48189 ] Jan Lindström [ jplindst ]
            jplindst Jan Lindström (Inactive) made changes -
            Status In Testing [ 10301 ] Stalled [ 10000 ]
            jplindst Jan Lindström (Inactive) made changes -
            Priority Major [ 3 ] Critical [ 2 ]
            jplindst Jan Lindström (Inactive) made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            • new branch : preview-10.9-MDEV-27246-galera-allowlist
            jplindst Jan Lindström (Inactive) added a comment - new branch : preview-10.9- MDEV-27246 -galera-allowlist
            jplindst Jan Lindström (Inactive) made changes -
            Status In Progress [ 3 ] In Testing [ 10301 ]
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Ramesh Sivaraman [ JIRAUSER48189 ]
            ramesh Ramesh Sivaraman made changes -
            ramesh Ramesh Sivaraman made changes -
            Assignee Ramesh Sivaraman [ JIRAUSER48189 ] Jan Lindström [ jplindst ]
            Status In Testing [ 10301 ] Stalled [ 10000 ]

            ok to push

            ramesh Ramesh Sivaraman added a comment - ok to push
            serg Sergei Golubchik made changes -
            serg Sergei Golubchik made changes -

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

            serg Sergei Golubchik added a comment - galera-sst-mysqldump constantly fails in this branch, cannot push

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

            serg Sergei Golubchik added a comment - the branch was renamed to bb-10.9- MDEV-27246 -galera-allowlist
            sysprg Julius Goryavsky made changes -
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Mario Karuza [ mkaruza ]
            ralf.gebhardt Ralf Gebhardt made changes -
            Fix Version/s 10.10 [ 27530 ]
            Fix Version/s 10.9 [ 26905 ]
            ralf.gebhardt Ralf Gebhardt made changes -
            Assignee Mario Karuza [ mkaruza ] Jan Lindström [ jplindst ]
            jplindst Jan Lindström (Inactive) made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]

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

            jplindst Jan Lindström (Inactive) added a comment - New branch: preview-10.10- MDEV-27246 -allowlist-galera
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Mario Karuza [ mkaruza ]
            jplindst Jan Lindström (Inactive) added a comment - Latest version fails on regression testing http://buildbot.askmonty.org/buildbot/builders/kvm-deb-focal-amd64/builds/4872 node_3 crashes on http://buildbot.askmonty.org/buildbot/builders/kvm-deb-focal-amd64/builds/4872/steps/galera-sst-mysqldump/logs/node3 16:01
            jplindst Jan Lindström (Inactive) added a comment - - edited Set a new preview branch preview-10.10-allowlist-galera Local testing looks good Buildbot looks good
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Mario Karuza [ mkaruza ] Jan Lindström [ jplindst ]
            jplindst Jan Lindström (Inactive) made changes -
            Status In Progress [ 3 ] In Testing [ 10301 ]
            jplindst Jan Lindström (Inactive) made changes -
            Assignee Jan Lindström [ jplindst ] Ramesh Sivaraman [ JIRAUSER48189 ]

            ramesh Can you do short testing on preview version.

            jplindst Jan Lindström (Inactive) added a comment - ramesh Can you do short testing on preview version.

            jplindst preview version looks good.

            ramesh Ramesh Sivaraman added a comment - jplindst preview version looks good.
            ramesh Ramesh Sivaraman made changes -
            Assignee Ramesh Sivaraman [ JIRAUSER48189 ] Jan Lindström [ jplindst ]
            Status In Testing [ 10301 ] Stalled [ 10000 ]
            ramesh Ramesh Sivaraman made changes -
            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.

            h2. 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

            h2. 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?

            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
            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.

            h2. 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

            h2. 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-

            ralf.gebhardt Ralf Gebhardt added a comment - - edited

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

            ralf.gebhardt Ralf Gebhardt added a comment - - edited ramesh , and wsrep_allowlist can be a ip4, ip6 or a hostname? Can it include wildcards?
            ramesh Ramesh Sivaraman added a comment - - edited

            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)]>
            

            ramesh Ramesh Sivaraman added a comment - - edited 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)]>
            serg Sergei Golubchik made changes -
            Priority Critical [ 2 ] Blocker [ 1 ]
            serg Sergei Golubchik made changes -
            Fix Version/s 10.10.1 [ 27913 ]
            Fix Version/s 10.10 [ 27530 ]
            Resolution Fixed [ 1 ]
            Status Stalled [ 10000 ] Closed [ 6 ]
            ralf.gebhardt Ralf Gebhardt made changes -
            Labels galera ist security sst wsrep Preview_10.10 galera ist security sst wsrep
            mariadb-jira-automation Jira Automation (IT) made changes -
            Zendesk Related Tickets 105280

            People

              jplindst Jan Lindström (Inactive)
              GeoffMontee Geoff Montee (Inactive)
              Votes:
              3 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.