`
yangzb
  • 浏览: 3500359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在LDAP中使用角色(Role)和组(Group)来管理用户

阅读更多

LDAP(轻量级目录服务器)越来越被广泛的使用,特别是在管理海量用户信息和管理身份认证信息的时候,LDAP被国内大多数企业所使用,从中国电信,中 国移动,新浪,和许多省市政府部门都使用LDAP来管理用户身份的信息。下面重点介绍在LDAP中管理用户的一些概念和技巧。

LDAP服务器使用树状结构来存储和查找用户的信息。这种树状结构比较适合用户身份信息的存储,因为无论在社会还是在企业中,对人的管理是分层的。 从地域上的国家、省市到区域,从企业的大部门到小部门,从总经理到小职员,所有的管理都是分层的。“人类的层次划分是社会活动的自然产物”,忘了这句话是 谁说的了,但是我们观察自己的周围环境,树状结构的分层无处不在,这也是LDAP为什么在人员管理上这么流行的原因,也是LDAP最初设计的需求。当然, 在这里我们不讨论人类社会活动现象,只讨论LDAP技术问题。

LDAP在存储树状结构的数据比关系型数据库有很大的优势。请试图想想在关系数据库中要实现这种树状的数据,需要费一番功夫,并且要定位层次比较深 的节点的数据需要经过复杂的查询和转换。但是LDAP这种树状的结构也有一个重要的缺点,就是很难反映出除了结构层次之外的其他关系(例如在同一个组织之 下的管理和被管理的关系),而且当组织结构经常发生变化的情况下,树状结构很难满足这种灵活性的要求。有树状结构特点决定,当一个组织变化的时候,这个组 织下的所有节点都需要一一变化。

因此,在LDAP中出现了Group(组)和Role(角色)来动态的管理节点之间的关系。例如,建立一个“管理员”的组或角色,然后可以将不同组 织结构下的人员放到“管理员”这个逻辑结构下。那么通过“管理员”这个虚拟的组织结构可以将不同物理组织下的人员动态的组合在一起。例如给“管理员”赋予 特殊的权力,使他们能够修改本机构中的人员信息。过了一段时间,如果需要将“管理员”这个逻辑组织取消或者改动,只需要在LDAP的单个节点上操作,而实 际“管理员”逻辑结构的成员们,不需要作任何的变化,原来是在哪个物理组织,现在也不用变化。这种Group(组)和Role(角色)的出现是增加了节点 之间的关联程度。

Group(组)和Role(角色)的功能基本相同,操作起来也很类似。那么Group(组)和Role(角色)到底有什么区别呢?事实上,由于实现方法不同,Group(组)和Role(角色)在某些操作上体现出不同的性能。

Group(组)的实现机制很简单,每个Group本身就是LDAP的一个实体。这个实体有个member的属性。每次将一个成员添加到这个 Group中就会在Member属性中添加一条记录(成员的DN)。如果这个Group有200个成员,那么它的member属性中会有200条记录。这 种实现方式非常适合下面的操作:1. 列举当前Group下的所有成员。2.将一些成员从当前的Group中删除或添加。因为所有的成员都记录在Group实体的属性里;这种实现方式非常不适 合下面的操作:查找某个用户所属的所有Group。这个操作可能要去每个Group中查找信息。

Role(角色)的实现机制就比较复杂了。其实每个LDAP实体本身都有一个“nsrole”的属性。如果某个角色赋予这个用户的话,就会在这个用 户的“nsrole”(其实是nsroleDN,这个会在以后解释)的属性中添加一个角色的记录。如果当前用户有10个角色(例如,他又是领导,又是员 工,又是管理员,又是教授....),那么在这个用户的"nsrole"属性中会有10条记录(Role的DN)。这种实现方式非常适合下面的操作: 列举当前用户拥有的所有的角色,因为在用户的“nsrole”属性中记录了所有的角色。因此给一个用户授权通常使用角色,这是因为从用户信息中就能很快获 得当前用户所有的角色,以及相关的权限。

另外还有一些准则来帮助判断在设计时到底使用Group还是Role。

1 使用Group会很容易将用户从一系列“逻辑组织”中删除或添加。只要是Group的创建者,就有权限修改Group中的member属性。而角色(Role)的信息存在每个用户的“nsroleDN”中,需要特定的权限才能修改这个属性。

2 如果要使用分布式部署(例如使用Chaining的方式),要考虑到角色(Role)是无法跨越服务器的界限

3 如果成员数量巨大(超过20000)个,可以使用动态组的概念(FilterGroup),这个以后再将。

 

分享到:
评论

相关推荐

    ldap2pg:通过YAML或LDAP管理PostgreSQL角色和特权

    `ldap2pg` 是一个强大的工具,它允许系统管理员使用YAML配置文件或直接从LDAP目录来管理PostgreSQL数据库的角色和权限。这个工具是用Python编写的,旨在简化在大型组织中,特别是那些依赖于中央身份验证服务(如LDAP...

    puppet用户管理

    在 Puppet 中,用户管理和用户组管理是基础但至关重要的功能,这使得 Puppet 能够在多平台上统一地维护系统账户的安全性和一致性。以下是对 Puppet 用户和用户组管理的详细解释: **一、用户组管理** 1. **特性** ...

    ansible-tower-ldap-settings:简化Ansible Tower LDAP配置

    必须是清单group_search :单个LDAP组搜索过滤器。 必须是一个字符串superuser :定义具有超级用户塔式特权的用户的组或用户DN。 organization_map :将Tower组织映射到用户或组LDAP DN的词典列表。

    eSSO Single Sign On

    综上所述,eSSO Single Sign-On利用LDAP、Active Directory等技术,实现了用户在企业环境中的一次登录多应用访问,通过目录服务进行账户管理和权限分配,而组和角色的概念则进一步细化了权限控制。在具体实现时,...

    Windows 2000活动目录服务管理.rar

    Windows 2000活动目录(Active Directory)服务是微软Windows Server操作系统中的核心组件,它提供了一种集中化的方式来管理和存储网络资源,如用户账户、计算机、组策略和服务。在Windows 2000中,活动目录服务首次...

    OpenStack认证管理

    - **Role Assignment**:指定了某个用户或用户组在特定项目或域内的角色。 - **Token**:用户认证成功后获得的令牌,用于后续的服务请求。 - **Catalog**:服务目录,包含所有服务的列表及端点信息。 - **Endpoint**...

    最完整的Toad For Oracle使用手册

    - **Group Policy Management**:探讨了如何使用组策略来管理Toad的配置。 - **Citrix Support**:讲解了Toad在Citrix环境下的支持情况。 - **SQL*Net Versions**:提到了Toad对不同版本的SQL*Net的支持。 - **...

    ansible-role-openldap:OpenLDAP服务器角色

    适用于host_vars的从站“ rid”的openldap_slave_rid (0)值(必须是唯一的),而其余配置在playbook或group_vars中可以保持唯一 `slapd_rc_flags(“ -h'ldap:/// ldaps:///'”) openldap_db_engine (mdb-...

    keycloak-radius-plugin:将Radius服务器作为Keycloak SSO的一部分

    将Keycloak授权, Role , Group和User属性映射到Radius属性 授权/角色/组/用户的条件属性 拒绝授权/角色/组/用户的属性 根据keycloak策略动态分配属性(角色, javascript ,时间,用户) 开始/停止Keycloak会话 ...

    SVNGroup-开源

    首先,它很可能提供了更丰富的权限策略,比如基于角色的访问控制(Role-Based Access Control, RBAC),这意味着管理员可以创建不同的角色,每个角色对应一组特定的权限,然后将这些角色分配给团队成员。这样的设计...

    Solaris 10 System Administration Essentials

    目录 Chapter 1 Installing the Solaris 10 Operating System 1 1.1 Methods to Meet Your Needs 1 1.2 The Basics of ...13.5.4 Using Proxy Credentials to Initialize an LDAP Client 362 13.5.5 Initializing an...

    WorkFlow Specify

    19. 基于角色的路由(Role Based Routing)....................................................................8 20. 自由流(Unrestricted Routing) ...........................................................

Global site tag (gtag.js) - Google Analytics