概述

只要是个公司,基本上都有邮箱和 AD(Active Directory). 在 AD 里,已经有了:

  • 用户

    • 账号密码
    • 邮箱
  • 用户组
    • 组织架构

所以对于一些仅限于本公司一定范围内人员使用的管理或后台或运营运维类系统,其实是非常适合对接 AD 来进行认证、分组,以及根据分组来进行权限分配的。

对于 Rancher,假设使用者只会有这么几类:

  1. 管理员:运维部门
  2. 项目管理员: 项目负责人
  3. 使用者: 开发
  4. 只读用户: 其他人员

那么就可以直接对接 AD 来实现认证、登录、分组、授权。

Reference:

这使 Rancher 管理员可以对外部用户系统中的用户和组进行集群和项目的访问控制,同时允许最终用户在登录 Rancher UI 时使用其 Active Directory 凭据进行身份验证。

AD 账号申请

首先必须从邮箱管理员或 AD 管理员那申请一个新的 AD 用户,以用作 Rancher 的服务账户。此用户需要的权限是:

  • 可以搜索、读取(只读即可) AD 域下的用户和组,及其属性 (比如至少要有 运维部门/开发部门/项目部门相关 OU 下的权限)

配置步骤

详细的步骤直接查看这里:对接 Active Directory | Rancher 文档

这里结合个人的实践说一些实用技巧:

AD 服务器参数

  • 服务帐户 (service account) 用户名:就是 AD 管理员提供给你的 CN, 这里可能会给到你这样的一个串:CN=RancherSA,OU=ApplicationAccount,DC=example,DC=com, 那么就只需要填写 RancherSA 就好了。
  • 用户搜索库:如果 运维部门/开发部门/项目部门 都在 IT 部之下,IT 部的 OU 是:OU=ITDepartment,DC=example,DC=com, 那么就填写这个。
  • 用户组搜索库:这里折腾了很久,你一定要规划清楚要根据什么维度来划分用户组,并且该用户组对应的 objectClass 是什么,而且该 objectClass 一定要有 member 这样的属性和用户来关联。

关于用户组的确认,我使用 JXplorer 来进行详细的分析和查看,具体如下:

JXplorer

这里我使用 AD Client - JXplorer

登录截图如下:

关于用户组,当初是想直接使用组织架构来作为用户组,组织架构的信息如下:

  • objectClass: organizationalUnit
  • 虽然从下图来看,组织架构 和 用户是有层次关系的,但是,在其属性中,member 却为空!

所以,这个是不能用作用户组的.

如果用了这个,并根据用户组来配置权限,那么权限是无法通过用户组来映射到具体的用户的。

第二个选项,是想用邮件组 (mail group)作为用户组,邮件组的信息如下:

  • objectClass: group
  • member 和用户 (objectClass: person) 是关联的。如下图:

如上,那么是可以将邮件组 (mail group)作为用户组。而且注意,邮件组是位于另外一个 OU 的,具体为:OU=Mail Group,DC=example,DC=com

综上,用户组搜索库最终为:OU=Mail Group,DC=example,DC=com

配置用户

这里还是通过 JXplorer, 点击具体的一个人,查看其属性信息,示例如下图:

  • 对象类:personuser 都可以
  • 用户名属性:namecn 都可以
  • 登录属性:一般都为 sAMAccountName, 如果想要使用邮箱登录,就是 userPrincipalName
  • 搜索属性:sAMAccountName|sn|giverName (默认值)(可以通过使用管道 (“|”) 符号分隔属性来指定多个属性。)
  • 用户启用属性:userAccountControl (默认值)

配置组

  • 对象类:group (邮件组)
  • 名称属性:name
  • 用户组成员属性:distinguishedName (默认值)
  • 用户组成员映射属性:member
  • 用户组域名属性:name

测试身份验证

这里填写管理员账号对应的 AD 账号。验证成功该 AD 账号直接就是管理员级别的权限.

授权组

至此,就可以根据用户组来进行授权,如下图:

集群级别授权

可以根据用户组来对集群级别进行授权,如下图:

项目级别授权

可以根据用户组来对项目级别进行授权,如下图:

系列文章

️参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

Rancher 系列文章-Rancher 对接 Active Directory 实战的更多相关文章

  1. windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原

    域内所有的域控制器都有一个内容相同的Active Directory,而且 Active Directory 的内容是动态平衡的,也就是说任何一个域控制器修改了 Active Directory,其他 ...

  2. install Active Directory域控制器

    设置Active Directory域控制器 正如我们在网络与系统配置专题文章中所提到的那样,我们已将两部服务器设置为对应于内部域“intdomain.com”的Active Directory域控制 ...

  3. SharePoint 2013技巧分享系列 - Active Directory同步显示用户照片

    为了保持通讯信息的一致性,需要设置SharePoint,Exchange, Lync等信息同步更新显示,例如,员工头像信息. 本文介绍如何在SharePoint 2013中同步显示Active Dir ...

  4. 【Flutter 实战】17篇动画系列文章带你走进自定义动画

    老孟导读:Flutter 动画系列文章分为三部分:基础原理和核心概念.系统动画组件.8篇自定义动画案例,共17篇. 动画核心概念 在开发App的过程中,自定义动画必不可少,Flutter 中想要自定义 ...

  5. Velero系列文章(四):使用Velero进行生产迁移实战

    概述 目的 通过 velero 工具, 实现以下整体目标: 特定 namespace 在B A两个集群间做迁移; 具体目标为: 在B A集群上创建 velero (包括 restic ) 备份 B集群 ...

  6. Active Directory网域

    Active Directory网域 3.1Windows网络的管理方式 3.1.1工作组模式 工作组由一组用网络连接在一起的计算机组成,他们将计算机内的资源共享给用户访问.工作组网络也被称为“对等式 ...

  7. Windows Azure Active Directory (1) 前言 - 基于声明的验证和授权

    <Windows Azure Platform 系列文章目录> 在我们介绍整套系统架构之前,我们需要首先定义一些基本的概念. 用户及其属性: 用户值得是要使用某项服务的个体.用户一般都有一 ...

  8. Windows Azure Active Directory (2) Windows Azure AD基础

    <Windows Azure Platform 系列文章目录> Windows Azure AD (WAAD)是Windows Azure提供的一个REST风格的服务,为您的云服务提供了身 ...

  9. Windows Azure Active Directory (3) China Azure AD增加新用户

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的China Azure. 本文是对笔者之前的文档:Windows Azure Active ...

  10. Windows Azure Active Directory (4) China Azure AD Self Password Reset

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在开始本章内容之前,请读者熟悉笔者之前写的文档: Windows ...

随机推荐

  1. elementUI table 第一列值相等合并

    效果如下: 首先:在table上加:span-method="spanMethod" 其次: methods中加两个方法 dataPretreatment() { //表格数据列合 ...

  2. cin和缓存区问题

    稍微记录一下今天刷题遇到的C++问题 看到使用while(cin >> s);来读取最后一个字符串.百度了一下发现cin以空格,制表符和回车为终止依据.也就是说我输入"abc 1 ...

  3. 1903021126-申文骏-Java第十一周作业-Java中继承、多态及抽象类的使用

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021126-申文骏-Java第十一周作业-Java中继承.多态及抽象类的使用 作业要求 每道题要有题目 ...

  4. pnn模型 待整理

    https://blog.csdn.net/qq_18293213/article/details/90262378?spm=1001.2101.3001.6650.5&utm_medium= ...

  5. WebApi 下载三维zip文件并预览

    // 异步加载 const LoadObj = async (key?: string) => { LoadState.value = true var objStr, mtlStr var i ...

  6. MackDown的基础语法与学习(记录代码生活)

    MackDown学习 标题 三级标题 四级标题 字体加粗 斜体文字格式 <!--常用的注释--> 删除某行字 插入本地图片 放入一个超链接 https://i.cnblogs.com/po ...

  7. 12.7 linux学习第十四天

    今天老刘开始讲第10章,主要讲Ahache服务和SELinux安全子系统 10.1 网站服务程序 1970年,作为互联网前身的ARPANET(阿帕网)已初具雏形,并开始向非军用部门开放,许多大学和商业 ...

  8. JavaScript基础学习之一

    目录 let和var之间的区别 作用域不同 变量提升 暂时性死区(temporal dead zone,简称 TDZ) 相同作用域下的重复声明 脚本调用 数据类型 Boolean Object 对象 ...

  9. 安装win10:我们无法创建新的分区,也无法定位现有分区

    操作环境:win10企业版ISO,U盘安装,UEFI启动 解决思路:win10 UEFI 安装需要硬盘在GPT模式,如果直接创建分区默认的是MBR,所以将磁盘转换成GPT,再分配一个EFI空白分区,就 ...

  10. Python - XSS-Attribute

    参考资料:https://owasp-skf.gitbook.io/asvs-write-ups/cross-site-scripting-attribute-xss-attribute/kbid-3 ...