Openldap

訪問(讀取)openldap 中的操作屬性需要哪些使用者權限

  • July 17, 2019

我現在正在配置一個 openldap 伺服器。為了定義使用者權限,我使用 ldif 文件。為了檢查權限並查看是否一切正常,我使用了 Apache Directory Studio。

對使用者權限的一個要求是,使用者可以讀取自己的條目,本地管理員可以讀取其分支中的所有使用者條目,並且“全域”管理員可以讀取所有使用者條目。到目前為止一切正常。

另外我需要知道使用者屬於哪些組。為此,我想使用memberOfopenldap 支持的操作屬性。不幸的是,只有“全域”管理員才能看到操作屬性。如果我嘗試使用本地管理員或簡單使用者在 Apache Directory Studio 中獲取操作屬性,則不會顯示/獲取操作屬性。

我試圖為這些使用者授予所有成員屬性的讀取權限,其中他們的 dn 使用以下規則輸入:

olcAccess: to attrs=member,entry
    by dnattr=member selfwrite
    by * break

此規則類似於 openldap 文件末尾的第 8.3.5 章。這似乎根本不起作用,所以我嘗試添加一個通用規則來訪問角色條目:

olcAccess: to dn.regex="ou=Roles,dc=([^,]+),dc=customers,dc=domain,dc=de$" attrs=entry,@groupOfNames,children
    by group.expand="cn=Administrators,ou=Roles,dc=$1,dc=customers,dc=domain,dc=de" write
    by group.expand="cn=ProductionUser,ou=Roles,dc=$1,dc=customers,dc=domain,dc=de" read   
    by group.expand="cn=TestUser,ou=Roles,dc=$1,dc=customers,dc=domain,dc=de" read
    by * break

使用此規則,任何使用者都可以讀取其分支的所有角色條目。操作屬性或至少memberOf對使用者仍然不可見。

那麼我需要授予哪些權限,以便每個使用者至少可以讀取memberOf其自己條目的 - 屬性?

看來我的嘗試很複雜。使用對所有內容的一般訪問規則self似乎可以按預期工作:

olcAccess: to * 
    by self read

使用該規則,每個使用者都可以閱讀與自己的條目(而不僅僅是自己的條目本身)相關的所有內容,包括操作屬性。

引用自:https://serverfault.com/questions/975442