[Freeipa-devel] Krb service delegation rules in CLI

Simo Sorce simo at redhat.com
Tue Sep 23 18:58:58 UTC 2014


On Tue, 23 Sep 2014 17:18:38 +0200
Martin Kosek <mkosek at redhat.com> wrote:

> On 09/22/2014 09:48 PM, Alexander Bokovoy wrote:
> > On Mon, 22 Sep 2014, Martin Basti wrote:
> >> Hello,
> >>
> >> Related ticket: https://fedorahosted.org/freeipa/ticket/3644
> >>
> >>
> >> 1) API
> >>
> >> The ipaKrb5DelegationACL objectclass requires targets which are
> >> stored in extra objectclass.
> >>
> >> A) we allow users to create groups of principals and then
> >> associate them as targets -- user can use same group for multiple
> >> delegation ACL
> >>
> >> B) users specify only list of target principals (no groups)
> >>
> >> B seems better to me.
> > No.
> > 
> > You have three clearly separate object types here:
> > 
> > 1. Principals -- any object in the tree that has krbPrincipalAux
> > supplemental auxiliary object class. These objects can be anywhere
> > in the tree, we can decide on limiting subtrees to search.
> > 
> > 2. Delegation ACLs -- any object that has ipaKrb5DelegationACL
> > supplemental structural object class. These objects can be anywhere
> > under cn=s4u2proxy,$SUFFIX
> > 
> > 3. Groups of principals  -- any object that has groupOfPrincipals
> > _and_ doesn't have ipaKrb5DelegationACL object classes. These
> > objects can be anywhere in the tree, we can decide on limiting
> > subtrees to search and can decide on a specific subtree to put new
> > groups of principals.
> > 
> > For (1) you just need to be able to reference principals, this only
> > requires a search filter to define DN of the principal based on
> > krbPrincipalName or krbCanonicalName, with support for 'shortcuts'
> > (specifying principal without realm which is our realm).
> > 
> > (1) is only used to resolve principals for (2) and (3).
> > 
> > For (2) you need to implement a proper object handling, like any
> > other IPA object that supports:
> >  -- multiple values for ipaAllowToImpersonate
> >  -- multiple values for ipaAllowedTarget
> > CLI would look something like this:
> >  ipa krbdelegation-add
> >                   -show
> >                   -find
> >                   -mod
> >                   -add-source
> >                   -add-target
> >                   -del-source
> >                   -del-target
> >                   -del
> > 
> > For (3) you need to implement a proper object handling where
> > creating the object would happen in the predefined subtree but
> > search or modify would be possible for any object matched by a
> > proper filter.
> > 
> > CLI would look something like this:
> >  ipa krbprincipalgroup-add
> >                       -show
> >                       -find
> >                       -mod
> >                       -add-member
> >                       -del-member
> > 
> > 
> > The way we use right now groupOfPrincipals, the objects referenced
> > are placed in different subtrees, according to their primary role.
> > That's right, as krbPrincipalAux is an auxiliary class, and is
> > added on top of other object classes to turn other objects into
> > principals. We also use groupOfPrincipals not only for Kerberos
> > delegation ACLs, that's why support for multiple subtrees is needed.
> > 
> > Creating new groupOfPrincipals objects can be allowed in a single
> > designated place, cn=s4u2proxy,$SUFFIX, because this is primary use
> > of this API.
> 
> Alexander's proposal makes sense to me. I would just personally name
> the commands differently to share the same prefix. I.e.
> 
> ipa krbdelegation-*
> and
> ipa krbdelegationgroup-*
> 
> as we are not creating general purpose principal groups but only
> groups for S4U2Proxy usage.
> 
> I would also reconsider your request to search for the objects in the
> whole s4u2proxy tree. Across FreeIPA framework, we handle objects in
> static and defined location of our tree, not in the entire subtree.
> 
> I think we should although indeed consider adding group of principals
> to own nsContainer (like cn=targets) as otherwise we will have a
> clash between krbdelegation rule names and krbdelegationgroup names.

Keep in mind that we already have a few rules in there and the groups
are in the same container, the names are different as the groups are
named <rule-name>-targets, so we'll have to keep using a subtree
search, but that is fine cn=s4u2proxy has no subtree atm.

Simo.


-- 
Simo Sorce * Red Hat, Inc * New York




More information about the Freeipa-devel mailing list