Forum: CFEngine Help
Subject: Limit cf-serverd access to certain IPs
Author: toddnni
Link to topic: https://cfengine.com/forum/read.php?3,23620,23620#msg-23620

Hi all,

I am trying to limit access to files according to IP-addresses. Currently I use 
complicated structure like this

bundle common network {

vars:
  any::
    "hostid[192.168.2.10]"  string => "000";
    "host[000]"    string => "192.168.2.10";
    "host[000]"   string => "example1";
    "host[000]"     string => "local.net";
    "host[000]"  slist => { "cf_null" };
    "host[000]"       string => "location1";
    "host[000]" string => "location1 location2";

    "hostid[192.168.2.11]"  string => "001";
    "host[001]"    string => "192.168.2.11";
    "host[001]"   string => "example2";
    "host[001]"     string => "local.net";
    "host[001]"  slist => { "kerberos", "kerberos.local.net" };
    "host[001]"       string => "location2";
    "host[001]" string => "location2";

    "hostips"
      comment => "The list of known IPs.",
      slist => getindices("network.hostid");
    "hostids"
      comment => "Used to iterate over the host array.",
      slist => getindices("network.host");
}

bundle server access_rules {

vars:
  any::
    "hostids" slist => { "@(network.hostids)" };

access:
  any::
    "$(cf.masterfiles)"
      comment => "Allow only known IP-addresses to download policies.",
      admit => { "@(network.hostips)" },
      ifencrypted => "true";
    
"/var/secretfiles/ssh.$(network.host[$(hostids)]).$(network.host[$(hostids)]).dsa"
      comment => "Only host himself can download his private SSH keys.",
      admit => { "$(network.host[$(hostids)])" ),
      ifencrypted => "true";
}


The structure may seem overly complicated to you, but every field in the host 
array is currently needed. One reason for this structure is that same list can 
be used to create hosts files or DNS database.

My configuration works, but I'm worried about performance when the number of 
hosts grow
+ performance of cf-agent because of the large array and
+ performance of cf-serverd because of complicated access rules.
This kind of structure might also be painful to upkeep.

What do you think?
1. Should I worry about performance at all?
2. Do you know a better way to handle an IP address list (maybe a hosts file 
and parsestringarray())?
3. How do you limit access to policy files?

Thanks for you time.

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to