Bug 1300740

Summary: [RFE] IPA: resolve external group memberships of IPA groups during getgrnam and getgrgid
Product: Red Hat Enterprise Linux 7 Reporter: Jakub Hrozek <jhrozek>
Component: sssdAssignee: Jakub Hrozek <jhrozek>
Status: CLOSED ERRATA QA Contact: Steeve Goveas <sgoveas>
Severity: high Docs Contact:
Priority: high    
Version: 7.3CC: ekeck, enewland, grajaiya, jhrozek, ksiddiqu, lslebodn, mkosek, mzidek, nsoman, orion, pbrezina, pvoborni, sumenon
Target Milestone: rcKeywords: FutureFeature, ZStream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: sssd-1.13.0-42.el7 Doc Type: Enhancement
Doc Text:
Feature: In an IPA-AD trust setup, getpwnam and getgrnam calls for IPA groups that contain AD members via external groups used to only return members who were cached via an initgroups call. This patch adds the ability to resolve external members without the initgroups operation as well. Reason: The slapi-nis plugin makes heavy use of this functionality when presenting the external group members to the compatibility tree which is then consumed by legacy clients. It's the only way to define sudo rules through an external group to legacy clients at the moment. Result: calling "getent group" for an IPA group that contains a member from an Active Directory domain would return the AD members as well. Please note that "Domain Users" are a bit of a special case here and its members are not resolved. This is because Domain Users are a primary group for AD users, but do not contain its members as LDAP attributes.
Story Points: ---
Clone Of:
: 1310664 1311569 (view as bug list) Environment:
Last Closed: 2016-11-04 07:15:27 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1310664, 1311569    

Description Jakub Hrozek 2016-01-21 15:30:37 UTC
This bug is created as a clone of upstream ticket:
https://fedorahosted.org/sssd/ticket/2522

Handling group memberships of AD users from a trusted domain has a bit of a history. In the original design the group-memberships where taken from the PAC. This meant that group-membership information was only available after a user logged in to a specific host and only on this host. To allow AD users to be members of IPA groups the IPA KDC added SIDs of IPA groups where the AD user is a member of into the PAC for this user.

Over the time there were request to let the 'id' command line utility show the full list of groups even for AD users which are not logged in. Support for this was added recently in SSSD's IPA provider and on the FreeIPA server side. 

If the SSSD cache entry of an IPA group with external member expires SSSD looks up the group members in the IPA LDAP server but since external memberships are not handled as local IPA members (RFC3207bis) the external members are not found and would be removed from the cache. #2492 mitigates this by making sure that members from different domains are not removed from the cache. Nevertheless it would be better to enhance the group lookup code for IPA groups in a way that it can resolve external members on its own.

Since this is IPA specific the changes should be made in the IPA provider to avoid regressions in the common LDAP group lookup code. On the other hand redundant LDAP requests should be avoided. A plugin scheme with a list of additional member attributes and a tevent request to resolve the additional member attributes might be a way to cover both requirements because the additional attributes can be requested in the same LDAP request as the plain RFC2307bis members and changes to the common group lookup code can be kept very localized and will only be executed if the plugin is available.

Comment 2 Jakub Hrozek 2016-02-24 13:15:18 UTC
Upstream patches:
    master:
        3cf7fdfcaedb986f42a6640e26aa057007b64045
        e2d96566aeb881bd89e5c9236d663f6a9a88019a
        c32266e79f9d4bebd0c31eaa8d6fa26050e7fb3e 
    sssd-1-13:
        7db3bdfd6b1b845866c1ff062d25de5804141e89
        00ee45423f0712b83926c6f8b354a1a18ff741c8
        19194cb18a1cc20f02423861dd831aa5bc3a1003

Comment 5 Sudhir Menon 2016-08-12 14:40:19 UTC
Jakub,
Can you please provide the steps to verify this bug?

Comment 6 Jakub Hrozek 2016-08-12 14:46:14 UTC
(In reply to Sudhir Menon from comment #5)
> Jakub,
> Can you please provide the steps to verify this bug?

You already verified it's clone, https://bugzilla.redhat.com/show_bug.cgi?id=1311569#c6 so the same steps apply.

Comment 7 Sudhir Menon 2016-08-12 14:55:20 UTC
Fix is seen.
Verified using steps as mentioned in comment6 of bz1311569.

ipa-server-4.4.0-7.el7.x86_64
sssd-1.14.0-18.el7.x86_64

Comment 9 errata-xmlrpc 2016-11-04 07:15:27 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2016-2476.html