Rael S-R via FreeIPA-users wrote:
> # Context:
> 
> ## Goal
> I eventually want to have a sysaccount with readonly access to a number of 
> attributes in our FreeIPA deployment, which will be used by verification 
> scripts in a scheduled pipeline that will prove certain accounts exist or do 
> no exist. One of those checks is making sure that all the "sysaccounts" are 
> expected (no extras), so I'll want a sysaccount that can list the other 
> sysaccounts.
> 
> ## Related posts and resources
> I've already seen some related posts, but I am still experiencing issues that 
> I do not understand at this time:
> - "Allow sysaccount to view its own entry" : 
> https://lists.fedorahosted.org/archives/list/[email protected]/thread/2V3LUZ7DAGASSZUZDJ7ZIWQZ3DO5DN23/#2V3LUZ7DAGASSZUZDJ7ZIWQZ3DO5DN23
>   - Probably the closest to my eventual goal, but I want a sysaccount that 
> can get a list of other sysaccounts
> - FreeIPA Docs > LDAP > System Accounts : 
> https://www.freeipa.org/page/HowTo/LDAP#system-accounts
>   - I have created a number of accounts using the method listed here. These 
> accounts are already in use and enable some of our internally deployed 
> services to authenticate users via LDAP.
> - "Grant extra permissions to System Accounts" : 
> https://lists.fedorahosted.org/archives/list/[email protected]/thread/IIWJ4O3TI44Q7QB4MYRLUCXERWTHFXG3/
>   - mainly relevant because my underlying goal is to have a sysaccount that 
> can read the attributes and sysaccount memberships cannot be managed through 
> the web interface.
> - Documentation on ACIs: 
> https://docs.redhat.com/en/documentation/red_hat_directory_server/12/html/managing_access_control/assembly_managing-access-control-instructions_managing-access-control#con_aci-placement_assembly_managing-access-control-instructions
>   - I only recently found out about ACIs and was previously only aware of the 
> "Permissions/Privileges/Roles" aspect seen in the FreeIPA web UI. From 
> testing, my understanding is that permissions are 1-to-1 with ACIs, though 
> they get two entries: an LDAP entry under "cn=permissions,cn=pbac,..." and 
> then a corresponding ACI attribute on the referenced LDAP entry.
> 
> ## Technical
> - IPA version 4.12.2
> - viewing of underlying LDAP is being done through a locally run instance of 
> "phpLDAPadmin"
>   - https://github.com/osixia/docker-phpLDAPadmin
> 
> ## Personal
> I'm not an LDAP expert and have been trying to understand the various search 
> and filter patterns from examples online, but it's quite likely I am messing 
> up something in the syntax, or not correctly understanding the LDAP 
> structure. Where possible I've tried to model my attempts on existing records 
> or documentation (such as trying to match the created permission looks 
> similar in LDAP to the `System: Read User Kerberos Login Attributes` 
> permission)
> 
> # Specific confusion
> 
> I have been unable to get an ACI that allows a non-admin the ability to see 
> the children of the "cn=sysaccounts,cn=etc,..." sub tree.
> My current test setup is:
> - My own admin user account (rael)
>   - I am using this to read LDAP attributes and verify the data present, as 
> well as edit permissions/privileges/roles in the web interface
> - A simple user account (rael_test)
>   - Is a posix account
>   - is a member of a fresh "FreeIPA State Verifier" role
> - "FreeIPA State Verifier" role has the privilege "testPriv", which has the 
> permission "testPermission" (names adjusted to remove internal ticket 
> information)
> - "testPermission" is configured to grant "read", "search" and "compare" 
> rights
>   - target subtree: `cn=sysaccounts,cn=etc,...`
>   - extra target filter: `(objectclass=simplesecurityobject)`
>     - I have also tried this with more permissive options, like 
> `(objectclass=account)` or `(objectclass=*)`
>   - effective attributes: `description`, `uid`, `dn`
> 
> With this setup, the `rael_test` account is still unable to see any of the 
> system accounts that have been created under "cn=sysaccounts,cn=etc,...". 
> What is the reason for this?
> Why can't the `rael_test` account list the existing accounts that exist under 
> the  "cn=sysaccounts,cn=etc,..." tree?
> 
> ## Details 
> The relevant ACI on `cn=sysaccounts,cn=etc,dc=ghs,dc=nl`:
> ```ini
> aci:
>     (targetattr = "description || dn || uid")
>     (targetfilter = "(objectClass=simplesecurityobject)")
>     (version 3.0;acl "permission:testPerm";allow (compare,read,search) 
> groupdn = "ldap:///cn=testPerm,cn=permissions,cn=pbac,dc=ghs,dc=nl";;)
> ```
> 
> Permission LDIFF:
> ```ini
> version: 1
> 
> # Entry 1: cn=testPerm,cn=permissions,cn=pbac,dc=ghs,d...
> dn: cn=testPerm,cn=permissions,cn=pbac,dc=ghs,dc=nl
> cn: testPerm
> ipapermbindruletype: permission
> ipapermincludedattr: uid
> ipapermincludedattr: description
> ipapermincludedattr: dn
> ipapermissiontype: SYSTEM
> ipapermissiontype: V2
> ipapermlocation: cn=sysaccounts,cn=etc,dc=ghs,dc=nl
> ipapermright: read
> ipapermright: search
> ipapermright: compare
> ipapermtargetfilter: (objectclass=simplesecurityobject)
> member: cn=testPriv,cn=privileges,cn=pbac,dc=ghs,dc=nl
> objectclass: top
> objectclass: groupofnames
> objectclass: ipapermission
> objectclass: ipapermissionv2
> ```
> 
> 
> `rael_test` account permissions:
> ```ini
> version: 1
> 
> # Entry 1: uid=rael_test,cn=users,cn=accounts,dc=ghs,dc=nl
> dn: uid=rael_test,cn=users,cn=accounts,dc=ghs,dc=nl
> cn: rael user_level
> displayname: rael user_level
> gecos: rael user_level
> gidnumber: 62018
> givenname: rael
> homedirectory: /home/rael_test
> loginshell: /bin/bash
> mail: [email protected]
> memberof: cn=ipausers,cn=groups,cn=accounts,dc=ghs,dc=nl
> memberof: cn=emea_users,cn=groups,cn=accounts,dc=ghs,dc=nl
> memberof: ipaUniqueID=da7a1b20-e360-11e8-8530-64006a50df1b,cn=hbac,...
> memberof: ipaUniqueID=ddb2cb20-e360-11e8-9400-64006a50df1b,cn=hbac,...
> memberof: ipaUniqueID=de9d0a8c-e360-11e8-9d46-64006a50df1b,cn=hbac,...
> memberof: ipaUniqueID=e03af1b0-e360-11e8-b7e1-64006a50df1b,cn=hbac,...
> memberof: ipaUniqueID=a1ac6390-ffb4-11e9-9e0a-1866da6daa3e,cn=hbac,...
> memberof: cn=workstation_users,cn=groups,cn=accounts,dc=ghs,dc=nl
> memberof: cn=FreeIPA State Verifier,cn=roles,cn=accounts,dc=ghs,dc=nl
> memberof: cn=testPriv,cn=privileges,cn=pbac,dc=ghs,dc=nl
> memberof: cn=testPerm,cn=permissions,cn=pbac,dc=ghs,dc=nl
> memberof: 
> ipaUniqueID=a09b5cf0-b9db-11ee-8c88-509a4c9d3b10,cn=sudorules,cn=sudo,dc=ghs,dc=nl
> mepmanagedentry: cn=rael_test,cn=groups,cn=accounts,dc=ghs,dc=nl
> objectclass: top
> objectclass: person
> objectclass: organizationalperson
> objectclass: inetorgperson
> objectclass: inetuser
> objectclass: posixaccount
> objectclass: krbprincipalaux
> objectclass: krbticketpolicyaux
> objectclass: ipaobject
> objectclass: ipasshuser
> objectclass: ipaSshGroupOfPubKeys
> objectclass: mepOriginEntry
> objectclass: ipantuserattrs
> sn: user_level
> uid: rael_test
> uidnumber: 62018
> ```
> 
> 
> 
> Please let me know if more information is needed.
> 

Try adding objectclass to the set of allowed read attributes.

rob

-- 
_______________________________________________
FreeIPA-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/[email protected]
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to