作者:李楷文

Choerodon作为多云管理平台,可以通过LDAP的方式对接企业已有的应用,通过同步用户到Choerodon平台,使企业用户无需注册就可使用LDAP的账户和密码登录到Choerodon平台,实现 DevOps 开发运维一体化和敏捷管理的等目标,极大地降低了企业用户迁移负担。

本文将从LDAP的概念,如何使用Choerodon LDAP以及配置定时任务三个方面进行介绍。

什么是LDAP

LDAP是轻量级目录访问协议(Lightweight Directory Access Protocol)的缩写,是一个开放的,中立的,工业标准的应用协议,用于与目录服务进行交互。LDAP有许多种实现,比如Open LDAP和微软的Active Directory等,类似于关系型数据库的多种不同的实现,如oracle和mysql等。

LDAP基于TCP/IP协议,使用Client/Server架构,允许客户端在目录服务器中执行各种操作,包括存储和检索数据,搜索与给定标准集匹配的数据,对客户端进行身份验证等。LDAP的标准TCP端口对于未加密的通信是389,对于通过TLS加密的通道的LDAP是636,这里可以类比HTTP协议默认端口为80,HTTPS协议默认端口为443。

LDAP目录使用有层次的、树形结构存储数据,具有优异的查询,浏览和搜索性能,但写入性能差,没有事务处理和回滚等功能,不适合频繁修改数据。通常用于存储公司员工信息,用户使用同一个账户和密码就可以登录到多个不同的服务,也可以存储公用证书和安全密钥,公司物理设备信息等。

基本概念

Directory Servers

目录服务器是一种存储树形条目信息的网络数据库,与关系型数据库存储行和列的关系信息不同,可以被认为一种NoSQL数据库。

Entries

LDAP entry(LDAP条目)是有关实体的信息集合,每个条目由下面三部分组成:DN,属性集合(attributes)和对象类集合(object class)。

DNs and RDNs

DN是distinguished name的缩写,是entry的唯一标识,同时记录了entry所在的目录树层级位,类似于文件系统的上下文路径。

一个DN由零个或多个相对可分辨的名称或者RDN组成。每个RDN由一个或者多个属性-值组成(通常是一个)。例如uid=superlee,dc=choerodon,dc=io这个DN,由3个RDN组成,RDN的顺序指定了DIT(directory information tree)中相关条目的位置,从左到右以降序表示层级结构,即父目录在偏右侧,上述DN的父目录的DN为ou=choerodon,ou=io,uid是RDN的属性,superlee是RDN的值。

Root DSE是一个长度为0的字符串DN的特殊条目,每一个LDAP server 必须要有一个这样公开的特殊条目。

Attributes

Attributes用于保存条目的数据。一个条目可以有多个attribute,每一个attribute都有一个attribute type (属性类型),零个或多个attribute options(属性选项)以及一组包含实际数据的值。

属性类型指定LDAP client和server应该如何处理该属性,必须包含对象标识符(OID)和零个或多个名称。

属性选项不常用,但是可以提供一些元数据,如对该属性的值进行多语言处理。

如图所示,该entry包含了多个attribute。

Object Classes

对象类标记条目的类型,每个条目有一个结构对象类,指明条目所代表的对象类型(person/group/device等),还有零个或多个辅助对象类,提供其他特征。

Object Identifiers (OIDs)

对象标识符,用于唯一标识LDAP协议中的各种元素,OID由一系列由句点分隔的数字组成(例如,“1.2.840.113556.1.4.473”是表示服务器端排序请求控件的OID)。

可以使用ldapsearch命令查询LDAP server是否支持分页查询。

ldapsearch -H ldap://ldap.server.address:389 -x -D "uid=superlee,dc=choerodon,dc=io" -W -b "" -s base -a always "(objectClass=*)

如果返回值里包含1.2.840.113556.1.4.473,那么服务器就是支持分页查询的。

其他术语

  • base DN: 基准DN,通常指一个属性结构的顶部,如下的树形结构的base DN就是dc=gp,dc=gl,dc=google,dc=com
  • DIT: directory information tree
  • entryUUID: 包含DIT条目的通用唯一ID(UUID)的属性。
  • LDIF: LDAP数据交换格式。IETF术语,用于加载(导入)和保存(导出)条目到LDAP启用目录的文本格式。用于数据的导入导出,每行都是“属性: 值”对,见openldap ldif格式示例(http://uee.me/aVvkE)
  • dc: domain component,通常指域名的每个组件,如http://www.baidu.com可以被写成dc=www,dc=baidu,dc=com
  • cn: common name,被广泛用作命名某些“东西”或真实世界实体的属性。
  • ou: organizational unit name,表明用户所属的组织单元,属于多个组织使用逗号隔开。
  • l: locality name,局部名,地方名
  • st: state or province name,州或者省份名称
  • o: organizational name,组织名
  • c: country name,国家名
  • street: street name,街道名
  • uid: user id,用户id

Choerodon LDAP使用

详情可阅读《Choerodon LDAP文档》

这里做一些补充说明。

Choerodon的LDAP在组织层级,即每个组织都有各自的LDAP配置,配置好LDAP后即可同步到当前组织下,用户登录的时候根据登录名查询对应的组织,然后找到对应的LDAP server去认证,认证通过则登录成功,否则则登录失败。

如果组织下的LDAP已经被停用,则该组织下的所有LDAP用户都不能登录。

Choerodon只支持可以分页查询的LDAP server。

  • 2: 主机名,即ldap server的地址,必须以ldap://或者ldaps://开头。
  • 4: 这个值是每次分页查询用户的数量以及发送saga事件的用户数量。
  • 5: 查询和连接LDAP server的超时时间,单位为秒。

注意: 管理员登录账户和密码,要有在base DN上的登录权限,否则测试连接会报登录失败。

  • 1: 用户对象类,一般设置为person,用于检索符合这个类型的条目。支持输入多个object class,使用逗号分隔。
  • 2: 读取entry的该属性设置到iam_user表的login_name字段,作为登录名。
  • 6: uuid,LDAP对象的唯一标识,大多数是entryUUID属性,Microsoft Active Directory可能是objectGUID属性,如果您的的ldap服务器确实不支持uuid,使用能唯一标识对象的字段即可,比如uid或者entryDN。记录部分用户同步失败的uuid,方便到LDAP server查询。
  • 7: 额外的过滤条件用于同步用户,允许为空,表达式必须以“(”开始,以“)”结束,语法参考ldap search syntax(http://uee.me/aVvmj)。

注意: 测试连接里的属性匹配,抓取了base DN下的100个满足已经设置的用户对象类和自定义筛选条件的条目,然后去校验设置好的loginName,email等 属性是否存在,如果不存在该属性名就返回不匹配。

Choerodon LDAP定时任务配置

Choerodon 支持配置LDAP同步用户和禁用用户定时任务,定时任务配置文档。

组织层设置同步定时任务

首先进入组织层的任务明细界面

然后在当前界面点击创建任务按钮

任务支持简单任务和cron表达式任务,这里以简单任务作实例,每天同步一次,执行30次。

超时策略:

  • 阻塞: 下次触发时间若上次触发任务未完成,则暂停定时任务,任务不再被执行。
  • 串行: 下次触发时间若上次触发任务未完成,两次任务可按照触发时间依次被执行。
  • 并行: 下次触发时间若上次触发任务未完成,两次任务可以同时被执行。

点击下一步选择iam-service,Choerodon有两个内置的定时任务,同步定时任务和禁用用户定时任务。禁用用户定时需要设置filterStr,用来筛选需要禁用的用户。这个筛选表达式必须以'('开始,以')'结束,语法参考ldap search syntax。

点击下一步选择通知对象,之后点下一步确认信息后创建即可。

全局层设置同步定时任务

首先使用具有site层权限的账户登录,然后按如下顺序点击菜单,进入任务明细界面。

然后在当前界面点击创建任务按钮,这里和组织层的操作一致。

在配置执行程序时,Choerodon内置了两个默认的LDAP相关的全局层任务。其中同步用户需要设置组织code参数,表明同步该组织下的用户,过滤停用用户需要设置组织code和筛选停用用户的条件。之后选择下一步和需要通知的对象确认即可。

关于Choerodon猪齿鱼

Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

  • 猪齿鱼官网:http://choerodon.io
  • Github:https://github.com/choerodon
  • 码云:https://gitee.com/choerodon

由Choerodon猪齿鱼核心团队创立的 BuildRun(https://gobuildrun.com),基于猪齿鱼带来了多云架构环境下基于视觉的企业级应用创建、集成、部署、生命周期管理和分发的能力。

BuildRun 以云原生的现代化软件架构来帮助企业提升软件开发生产力和业务敏捷性,提供多云低代码应用平台和多云应用生命周期管理平台,帮助企业隐藏应用开发和运行时的基础架构复杂性,让每个人专注于业务逻辑,促进团队快速、持续地将想法转化为真正的商业价值。

团队在云原生技术和架构(DevOps、持续交付、微服务和容器)应用场景,如企业数字化转型、企业中台等方面拥有丰富的经验,公司客户包括商业地产、建筑工程、医药、家居、汽车配业、大型工业等企业,为您提供最合适的解决方案。

免费注册试用:https://apps.gobuildrun.com/#/base/register-organization

oid 值 内存使用_如何使用Choerodon LDAP以及配置定时任务相关推荐

  1. oid 值 内存使用_[技术干货] zabbix监控项原型组合键值

    自动发现中监控项原型使用多个值组合成一个新的键值. 这里我们以华为RH5885V3的内存为例: 我们先walk出要用来作为组合键值的值,我们称之为VALUE.而OID节点后面延伸出来的数值,例如.1. ...

  2. linux 内存占用_分享Linux内存占用几个案例

    案例一 问题 最近一台 CentOS 服务器,发现内存无端损失了许多,free 和 ps 统计的结果相差十几个G,非常奇怪,后来Google了许久才搞明白. 分析 1.linux系统内存消耗主要有三个 ...

  3. JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系

    文章目录 Pre 示例demo 总体关系 代码示例论证 反汇编 Pre JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器 中我们探讨了线程栈中的内部结构 ,大家 ...

  4. Java反序列化json内存溢出_反序列化JSON时出现线程错误

    所以我为我的客户做了一个请求包装器,一切都运行正常 . 但突然(我不知道为什么) JsonConvert.DeserializeObject(c) 抛出经典异常 调用线程无法访问此对象,因为其他线程拥 ...

  5. java 二维数组内存溢出_程序员:学习心得,Java内存区域,内存溢出异常

    Java 内存区域 Heap 线程公有 存放实例对象 是GC主要管理区域,因此可以更细致的划分为:新生代.老年代 再细致一点划分:Eden区.From Survivor区.To Survivor区 内 ...

  6. p值 统计学意义_统计学意义不重要为什么p值不应过高

    p值 统计学意义 Have you ever heard somebody say that a study revealed „significant results"? What doe ...

  7. java 多线程 内存泄露_关于内存泄露的总结

    大致先分为五个小模块: 1.什么是内存泄漏 2.有哪些情况会导致内存泄漏切如何解决 3.如何检测内存泄漏 4.Java得基本数据类型和占用字节 5.什么是内存溢出和解决办法 一.什么是内存泄漏(Mem ...

  8. python 动态执行 内存变化_详解Pytorch显存动态分配规律探索

    下面通过实验来探索Pytorch分配显存的方式. 实验显存到主存 我使用VSCode的jupyter来进行实验,首先只导入pytorch,代码如下: import torch 打开任务管理器查看主存与 ...

  9. 2678v3支持内存频率_你听过E5-2678 v3这款CPU吗?我用它帮朋友干了件大事!

    2017年上映的3D电影<加勒比海盗5>中那些气势磅礴但细节又如此逼真的特效让广大好莱坞影迷过了一把眼瘾. 要实现这些逼真的特效,需要用到强大的计算机进行特效设计和渲染.前几天,小编一个做 ...

最新文章

  1. SAP MM初阶事务代码MEK1维护PB00价格
  2. [译]Kinect for Windows SDK开发入门(九):骨骼追踪进阶 下
  3. SpringFlux入门(上篇)
  4. kubernetes (k8s)的二进制部署单节点(etcd和flannel网络)
  5. 运维与节能:数据中心绿色运维技术研讨会召开
  6. java xframeoptions,Header:X-Frame-Options开启与关闭方法
  7. IntelliJ IDEA 2017 MySQL5 绿色版 Spring 4 Mybatis 3 配置步骤详解(二)
  8. 【编译原理笔记06】语法分析,移入-归约分析:自底向上的分析,LR(0)分析法,LR(0)分析表的构建(基于自动机)
  9. 网站 测试服务器配置,安装调试、软件测试、网站测试 配置维护环境配置、安全维护、安全运维等与服务器相关业务...
  10. RedHat Enterprise Linux 7下安装 Oracle 12C
  11. [HDU5727]Necklace(二分图最大匹配,枚举)
  12. 海明码计算(校验码)
  13. LaTeX入门学习(6)(字体)
  14. 4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板
  15. 杭州师范大学仓前校区宽带认证客户端电信用户拨号宽带链接路由器
  16. editplus配置python_Editplus配置Python的开发环境
  17. 第2章 变量、数据类型、运算符
  18. pyecharts画世界地图时显示为中文之世界各国中英文国名对照
  19. 京东EB级全域大数据平台的演进与治理历程
  20. ios swift view父视图(半)透明,子视图不透明

热门文章

  1. HTML基础(part8)--HTML5
  2. 20应用统计考研复试要点(part17)--概率论与数理统计
  3. SQL case when 2种用法
  4. mysql循环建表_mysql创建存储过程,批量建表分表00到99
  5. 机器学习第六篇:详解支持向量机算法
  6. 适合 Kubernetes 初学者的一些实战练习 (五)
  7. 在生产环境中调试 Angular 应用程序而不显示源映射
  8. SAP Spartacus如何判断用户是否已经成功登录
  9. fixture.detectChange开始单步调试,如何执行到Directive的ngOnChange钩子
  10. Angular里的structural directive的一个例子