[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: Challenge With Access Control
Michal,
Thanks, that worked.
Brian
-----Original Message-----
From: Michal Dobroczynski [mailto:michal.dobroczynski@gmail.com]
Sent: Thursday, July 05, 2007 11:25 AM
To: Brian Gaber
Cc: openldap-software@openldap.org
Subject: Re: Challenge With Access Control
Add -h 10.16.13.84 or whatever the LDAP listens on to ldapsearch and try
again.
Regards,
Michal
On 05/07/07, Brian Gaber <Brian.Gaber@pwgsc.gc.ca> wrote:
> Michal,
>
> Tried your suggestion, ldapsearch still fails. Here is the
log:
>
> Jul 5 11:09:31 ias2 slapd[11565]: entry_decode:
> "SFTid=0002-00000000,ou=servers,o=sft"
> Jul 5 11:09:31 ias2 slapd[11565]: <=
> entry_decode(SFTid=0002-00000000,ou=servers,o=sft)
> Jul 5 11:09:31 ias2 slapd[11565]: =>
> bdb_dn2id("SFTid=0002-00000000,ou=servers,o=sft")
> Jul 5 11:09:31 ias2 slapd[11565]: <= bdb_dn2id: got id=0x00000030 Jul
> 5 11:09:31 ias2 slapd[11565]: => test_filter
> Jul 5 11:09:31 ias2 slapd[11565]: EQUALITY
> Jul 5 11:09:31 ias2 slapd[11565]: => access_allowed: search access to
> "SFTid=0002-00000000,ou=servers,o=sft" "SFTid" requested Jul 5
> 11:09:31 ias2 slapd[11565]: => acl_get: [1] attr SFTid Jul 5 11:09:31
> ias2 slapd[11565]: => acl_mask: access to entry
> "SFTid=0002-00000000,ou=servers,o=sft", attr "SFTid" requested Jul 5
> 11:09:31 ias2 slapd[11565]: => acl_mask: to value by "", (=0) Jul 5
> 11:09:31 ias2 slapd[11565]: <= check a_dn_pat: self Jul 5 11:09:31
> ias2 slapd[11565]: <= check a_peername_path: 10.16.13.84 Jul 5
> 11:09:31 ias2 slapd[11565]: <= check a_peername_path:
> IP=10.16.13.8[1-6]*
> Jul 5 11:09:31 ias2 slapd[11565]: => acl_string_expand: pattern:
> IP=10.16.13.8[1-6]*
> Jul 5 11:09:31 ias2 slapd[11565]: => acl_string_expand: expanded:
> IP=10.16.13.8[1-6]*
> Jul 5 11:09:31 ias2 slapd[11565]: => regex_matches: string:^I
> IP=127.0.0.1:46749
> Jul 5 11:09:31 ias2 slapd[11565]: => regex_matches: rc: 1 no matches
> Jul 5 11:09:31 ias2 slapd[11565]: <= acl_mask: no more <who> clauses,
> returning =0 (stop) Jul 5 11:09:31 ias2 slapd[11565]: =>
> access_allowed: search access denied by =0 Jul 5 11:09:31 ias2
> slapd[11565]: <= test_filter 50 Jul 5 11:09:31 ias2 slapd[11565]:
> bdb_search: 48 does not match filter
>
> -----Original Message-----
> From: Michal Dobroczynski [mailto:michal.dobroczynski@gmail.com]
> Sent: Thursday, July 05, 2007 11:01 AM
> To: Brian Gaber
> Cc: openldap-software@openldap.org
> Subject: Re: Challenge With Access Control
>
> As far as I understand the log - you need to include the port. This
> should help then:
>
> by peername.regex="IP=10\.16\.13\.8[1-6]:[0-9]*" read
>
> Regards,
> Michal
>
> On 05/07/07, Brian Gaber <Brian.Gaber@pwgsc.gc.ca> wrote:
> > Tried your suggestion and still have a problem.
> >
> > Here is the new slapd.conf:
> >
> > access to *
> > by self write
> > by peername.ip=10.16.13.84 write
> > by peername.regex="IP=10\.16\.13\.8[1-6]" read
> >
> > Here is the log:
> >
> > entry_decode: "SFTid=0001-00000000,ou=servers,o=sft"
> > Jul 5 10:46:35 ias2 slapd[11401]: <=
> > entry_decode(SFTid=0001-00000000,ou=servers,o=sft)
> > Jul 5 10:46:35 ias2 slapd[11401]: =>
> > bdb_dn2id("SFTid=0001-00000000,ou=servers,o=sft")
> > Jul 5 10:46:35 ias2 slapd[11401]: <= bdb_dn2id: got id=0x0000002f
> > Jul
>
> > 5 10:46:35 ias2 slapd[11401]: => test_filter
> > Jul 5 10:46:35 ias2 slapd[11401]: EQUALITY
> > Jul 5 10:46:35 ias2 slapd[11401]: => access_allowed: search access
> > to
>
> > "SFTid=0001-00000000,ou=servers,o=sft" "SFTid" requested Jul 5
> > 10:46:35 ias2 slapd[11401]: => acl_get: [1] attr SFTid Jul 5
> > 10:46:35
>
> > ias2 slapd[11401]: => acl_mask: access to entry
> > "SFTid=0001-00000000,ou=servers,o=sft", attr "SFTid" requested Jul
> > 5
> > 10:46:35 ias2 slapd[11401]: => acl_mask: to value by "", (=0) Jul 5
> > 10:46:35 ias2 slapd[11401]: <= check a_dn_pat: self Jul 5 10:46:35
> > ias2 slapd[11401]: <= check a_peername_path: 10.16.13.84 Jul 5
> > 10:46:35 ias2 slapd[11401]: <= check a_peername_path:
> > IP=10.16.13.8[1-6]
> > Jul 5 10:46:35 ias2 slapd[11401]: => acl_string_expand: pattern:
> > IP=10.16.13.8[1-6]
> > Jul 5 10:46:35 ias2 slapd[11401]: => acl_string_expand: expanded:
> > IP=10.16.13.8[1-6]
> > Jul 5 10:46:35 ias2 slapd[11401]: => regex_matches: string:^I
> > IP=127.0.0.1:46504
> > Jul 5 10:46:35 ias2 slapd[11401]: => regex_matches: rc: 1 no
> > matches Jul 5 10:46:35 ias2 slapd[11401]: <= acl_mask: no more
> > <who> clauses,
>
> > returning =0 (stop) Jul 5 10:46:35 ias2 slapd[11401]: =>
> > access_allowed: search access denied by =0 Jul 5 10:46:35 ias2
> > slapd[11401]: <= test_filter 50
> >
> > -----Original Message-----
> > From: Michal Dobroczynski [mailto:michal.dobroczynski@gmail.com]
> > Sent: Thursday, July 05, 2007 10:36 AM
> > To: Brian Gaber
> > Cc: openldap-software@openldap.org
> > Subject: Re: Challenge With Access Control
> >
> > On 05/07/07, Brian Gaber <Brian.Gaber@pwgsc.gc.ca> wrote:
> > >
> > >
> > >
> > > Hope someone can explain this to me. I am sure it is very
trivial.
>
> > > I
> >
> > > have a primary LDAP server (10.16.13.84), a replica LDAP server
> > > (10.16.13.85) and a few clients all with a 10.16.13.x address.
> > >
> > > Here is the access control I thought would work:
> > >
> > > access to *
> > > by self write
> > > by peername=10.16.13.84 write
> > > by peername=10.16.13.81 read
> > > by peername=10.16.13.82 read
> > > by peername=10.16.13.83 read
> > > by peername=10.16.13.85 read
> > > by peername=10.16.13.86 read
> > >
> > > Here is what does work:
> > >
> > > access to *
> > > by self write
> > > by peername.ip=10.16.13.84 write
> > > by * read
> > >
> > > By work I mean that when I am on the replica (10.16.13.85)
> > > and
> >
> > > issue an ldapsearch to itself I get a 32 no such object with the
> > > top
>
> > > access, but I get the expected result with the bottom access.
> >
> > I am not 100% sure, but maybe this will help you (I am using similar
> > ACL). AFAIR in the peername you need to add the "IP=" - but I don't
> > really remember, please correct me. The regex matching directive
> > that works for me looks like this:
> >
> > by peername.regex="IP=10\.10\.120\..+" read
> >
> > Then you could try:
> >
> > by peername.regex="IP=10\.16\.13\.8[1-6]" read
> >
> > And please double check if you need to supply the "IP=10.10.10.10"
> > for
>
> > the "by peername" without regex.
> > The regex solution will not conflict with the first entry as write
> > permission includes reading (and ACL parsing stops on the first
> > matched rule).
> >
> > Hope this helps.
> >
> > Regards,
> > Michal
> >
> > >
> > > Brian Gaber
> >
>