move localhost guest access in front of catch-all localhost access
authorPeter Palfrader <peter@palfrader.org>
Sun, 29 Sep 2019 17:00:45 +0000 (19:00 +0200)
committerPeter Palfrader <peter@palfrader.org>
Sun, 29 Sep 2019 17:00:45 +0000 (19:00 +0200)
modules/postgres/manifests/cluster.pp
modules/postgres/manifests/cluster/hba_entry.pp
modules/postgres/templates/cluster/pg_hba.conf-head.erb
modules/roles/manifests/ftp_master.pp

index 92f87d1..1f639cd 100644 (file)
@@ -86,6 +86,14 @@ define postgres::cluster(
       order   => '00',
       content => template('postgres/cluster/pg_hba.conf-head.erb'),
     }
+    postgres::cluster::hba_entry { 'local-connections':
+      pg_port  => $real_port,
+      database => 'all',
+      user     => 'all',
+      address  => ['127.0.0.1', '::1'],
+      order    => '30',
+      firewall => false,
+    }
     Concat::Fragment <| tag == "postgres::cluster::${real_version}::${real_cluster}::hba" |>
   }
 }
index 6831374..843a4a7 100644 (file)
@@ -15,6 +15,7 @@
 # @param address          hosts that match
 # @param method           auth method
 # @param order            ordering of this entry in pg_hba.conf
+# @param firewall         also add a firewall rule
 define postgres::cluster::hba_entry (
   Optional[Integer] $pg_port = undef,
   Optional[String] $pg_cluster = undef,
@@ -25,6 +26,7 @@ define postgres::cluster::hba_entry (
   Optional[Variant[Stdlib::IP::Address, Array[Stdlib::IP::Address]]] $address = undef,
   Enum['md5', 'trust'] $method = 'md5',
   String $order = '50',
+  Boolean $firewall = true,
 ) {
   $address_methods = ['md5', 'trust']
   if $method in $address_methods {
@@ -66,7 +68,7 @@ define postgres::cluster::hba_entry (
   }
   ###
 
-  if ($address) {
+  if ($address and $firewall) {
     ferm::rule::simple { "postgres::cluster::hba_entry::${name}":
       description => "allow access to pg${real_version}/${real_cluster}: ${name}",
       saddr       => $address,
index d84d7d1..65b9031 100644 (file)
@@ -9,14 +9,5 @@ local   all             postgres                                peer
 
 # "local" is for Unix domain socket connections only
 local   all             all                                     peer
-# IPv4 local connections:
-host    all             all             127.0.0.1/32            md5
-# IPv6 local connections:
-host    all             all             ::1/128                 md5
-# Allow replication connections from localhost, by a user with the
-# replication privilege.
-#local   replication     all                                     peer
-#host    replication     all             127.0.0.1/32            md5
-#host    replication     all             ::1/128                 md5
 ######################################
 
index b95330c..40f8040 100644 (file)
@@ -36,6 +36,7 @@ class roles::ftp_master (
     user     => 'guest',
     address  => '127.0.0.1',
     method   => 'trust',
+    order    => '20',
+    firewall => false,
   }
-
 }