[tac_plus] Re: Different privs for different devices?
john heasley
heas at shrubbery.net
Wed Jun 30 22:04:37 UTC 2010
Wed, Jun 30, 2010 at 11:45:53PM +0200, Alan McKinnon:
> On Wednesday 30 June 2010 23:27:12 Paul Floyd wrote:
> > Hi all -
> >
> > New to the list and tac_plus. I'm trying to figure out if there's a way to
> > grant a set of users one privilege level on one set of devices and a
> > different privilege level on another set of devices. My best guess at a
> > config to do this was something like this:
> >
> > =====
> >
> > group = helpdesk_full {
> > acl = routers_full_access
> > service = exec {
> > priv-lvl = 15
> > }
> > }
> >
> > group = helpdesk_limited {
> > acl = routers_limited_access
> > service = exec {
> > priv-lvl = 7
> > }
> > member = helpdesk_full
> > }
> >
> > group = helpdesk {
> > login = file /etc/tacacs/users
> > member = helpdesk_limited
> > }
> >
> > ====
> >
> > However when I tried this, it seemed a member of the helpdesk group was
> > able to log in to a router in the "routers_limited access" ACL, but not
> > one in the "routers_full_access" group. If I'm interpreting the debug
> > correctly, it appears tac_plus processes the router_limited_access ACL and
> > immediately returns a login rejected message. It never tries to match
> > against the
> > routers_full_access ACL.
> >
> > Is what I'm trying to accomplish possible with tac_plus, and if so, how do
> > I go about it?
>
> tac-plus's ability to assign rights to users is deliberately simplistic. A
> user belongs to one group, which belong to one group, etc, etc till you reach
> a group that is not a member of another group.
>
> Rules are applied on a "first match wins" basis. The user in group "helpdesk"
> has no acl or rights, so tac_plus checks the group config. That does have an
> acl and rights so they are applied and used. End of story.
>
> It is a common error to assume that tac_plus walks the entire group
> inheritance tree and does some complex resolution to find the rights to apply.
> It does no such thing - it looks in a strict order and uses the first rule it
> finds.
>
> The reason for this is simple - conflict resolution. John mentioned as much
> about 6 months ago and it's a horrible problem to solve (I'm dealing with the
> same thing myself and reaching the same conclusion). How do you resolve
> opposing conflicts in rights? John's approach is to avoid the entire problem
> and guarantee it can't happen.
I think that you make some more complex decisions by using external
authorization scripts.
> A sensible approach that cause you more work than you think proper but leave
> you sane is to maintain two seperate group, acl and rights definitions, even
> if they overlap to greater or lesser degree.
>
> Or, Gabor might drop by with a suggestion, he has some very useful patches in
> his collection but I haven't tried them enough to comment.
indeed he does. I hope to import them (possibly w/ some adjustment - sorry)
once i get a better config parser completed.
More information about the tac_plus
mailing list