SQL审核平台 Archery 之集成 Ldap 篇

Posted 我只想躺平

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL审核平台 Archery 之集成 Ldap 篇相关的知识,希望对你有一定的参考价值。

一、安装相关包

1、安装LDAP相关的扩展包
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                               NAMES
a333e364b407        redis:5                     "docker-entrypoint.s…"   2 weeks ago         Up 23 hours         6379/tcp                            redis
8ec336fb9bd7        hanchuanchuan/goinception   "/usr/local/bin/dumb…"   2 weeks ago         Up 23 hours         4000/tcp                            goinception
c3fe74f742ac        hhyo/archery:1.8.0          "dockerize -wait tcp…"   2 weeks ago         Up 23 hours         0.0.0.0:9123->9123/tcp              archery
70f045f968b5        mysql:5.7                   "docker-entrypoint.s…"   2 weeks ago         Up 23 hours         0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
c225ba8127f4        hhyo/inception              "/bin/sh -c nohup /…"   2 weeks ago         Up 23 hours         6669/tcp                            inception

[root@localhost ~]# docker exec -it c3 bash
[root@c3fe74f742ac archery]# yum -y install openldap-devel 

2、安装PYTHON依赖库
# 缺少的话在浏览器登陆时会报错:"500 Internal Server Error",其原因是 Django 3.x 版本移除了部分用于兼容Python2 的 API
[root@c3fe74f742ac archery]# source /opt/venv4archery/bin/activate
[root@c3fe74f742ac archery]# pip install django-auth-ldap==1.3.0 --upgrade pip
[root@c3fe74f742ac archery]# pip install six

[root@c3fe74f742ac archery]# cd /opt/venv4archery/lib/python3.8/site-packages/
[root@c3fe74f742ac archery]# cp six.py /opt/venv4archery/lib/python3.8/site-packages/django/utils/

3、重启下相关容器
[root@localhost ~]# docker restart c3
[root@localhost ~]# docker ps  | grep archery
c3fe74f742ac        hhyo/archery:1.8.0            0.0.0.0:9123->9123/tcp           archery

二、编辑配置文件

1、进入相关容器修改配置文件
[root@localhost ~]# docker exec -it c3 bash
[root@c3fe74f742ac archery]# yum -y install vim  ( 非必须步骤)

[root@c3fe74f742ac archery]# cd /opt/archery/archery
[root@c3fe74f742ac archery]# ls
asgi.py     __init__.py    __pycache__   settings.py    urls.py   wsgi.py

[root@c3fe74f742ac archery]# cp settings.py settings.py.bak
[root@c3fe74f742ac archery]# vim settings.py  ( 修改 LDAP 相关的部分如下 )
# 前面标识了数字的是修改过的行(非行号):11、22、44、55、66,增加或者修改 ,33那边一行是注释掉

# LDAP
11  ENABLE_LDAP = True     
if ENABLE_LDAP:
    import ldap
    from django_auth_ldap.config import LDAPSearch

    AUTHENTICATION_BACKENDS = (
        django_auth_ldap.backend.LDAPBackend,  # 配置为先使用LDAP认证,如通过认证则不再使用后面的认证方式
        django.contrib.auth.backends.ModelBackend,  # django系统中手动创建的用户也可使用,优先级靠后。注意这2行的顺序
    )

22    AUTH_LDAP_SERVER_URI = "ldap://172.20.20.XXX:389"
33    # AUTH_LDAP_USER_DN_TEMPLATE = "cn=%(user)s,ou=xxx,dc=xxx,dc=xxx"
44    AUTH_LDAP_BING_DN = cn=admin,dc=tfit,dc=com
55    AUTH_LDAP_BING_PASSWORD = 对应账号的口令
66    AUTH_LDAP_USER_SEARCH = LDAPSearch(ou=People,dc=tfit,dc=com,ldap.SCOPE_SUBTREE,(uid=%(user)s),)
    AUTH_LDAP_ALWAYS_UPDATE_USER = True  # 每次登录从ldap同步用户信息
    AUTH_LDAP_USER_ATTR_MAP =   # key为archery.sql_users字段名,value为ldap中字段名,用户同步信息
        "username": "cn",
        "display": "displayname",
        "email": "mail"
    

#  关于LDAP 相关的配置默认就是这么多,也可以再增加一些其他的,如获取权限方式、是否设置缓存等信息,但是不建议设置!特别是配置成从LDAP获取权限,ARCHERY 管理权限的方式更为灵活和简单

2、重启下相关容器
[root@localhost ~]# docker restart c3
[root@localhost ~]# docker ps  | grep archery
c3fe74f742ac        hhyo/archery:1.8.0            0.0.0.0:9123->9123/tcp           archery

三、使用LDAP账号登录测试

​   至此,Archery 与 Ldap 两者已经完全 "打通" ,Ldap 的账号可以顺利登录 Archery 了!

提示:Ldap 里面的账号,只有登录过 Archery 平台,才能够在 " 用户管理 " 里面看得到

四、提交SQL测试

​   通过上面的步骤,已经是实现了使用 Ldap 账号登录完美登录到 Archery 平台了,但是,真正想再操作的时候,则会发现 --- 实例无法选择、组无法选择 、点击 " 提交SQL " ,提示如下:

​   上面的具体原因,其实也很简单:我们只是把 Ldap 到 Archery 的账号登录通道打通了,但是相关权限都没有设置,所有这里登录进去了就是这样的情况

五、配置相关权限

  1. 创建账号

    在 Ldap 里面创建三个测试账号:testsql_01 、testsql_02、testsql_03,属于 Ldap 里面什么部门什么组都没关系的
     

  2. 分别使用三个账号登录一次 Archery 平台

    提醒 : Ldap 里面的账号,只有在 Archery 平台登录过一次,才能够在 "用户管理"里面看得到
     

  3. 编辑三个账号,设置对应的权限

    依据前面设置的审核流程 (RD-DBA-PM),进行下面的操作:

    • testsql_01 加入到 RD 组,资源组为 测试组

    • testsql_02 加入到 PM 组,资源组为 测试组、开发组

    • testsql_03 加入到DBA组,资源组为 测试组、运维组

六、审核流程测试

  1. 浏览器里面用 testsql_01 登录,进行 SQL 上线提交 操作,具体操作流程如下,操作截图如下:

      "SQL审核" --- "SQL上线" --- "提交SQL" --- 右侧的方框输入 " ( 上线名单 ) -- 选择组 -- 选择实例 -- 选择数据库 -- 是否备份 -- 选择可以执行的时间范围 " --- "SQL监测" --- "SQL提交"

截图说明:

  • 红色方框内是必选或必填项,蓝色方框是可选项,紫色椭圆是执行按钮

  • 最上面的是选择编辑好的SQL文件直接执行,无须复制 ,选择好SQL文件,SQL语句就直接导入到左边来了

  • 上线名单里面简要写下此处操作的内容信息等,自定义随意填写,建议写的有辨识度些方便后续操作

  • SQL备份要在系统配置里的相应地方进行配置备份库(地址账号相关等),流程完成后中备份库中就可以查询到了
     

    1. 上面操作完成后,界面如下:

    可以看到 工单详情工单日志 ,还有 操作信息 、终止流程

    里面有具体的操作内容、现在的操作流程、下面的流程、审批人等信息

     

    1. 浏览器里面用 testsql_02 登录,进行 SQL 上线审核 操作,首先看到的是如下的截图:

       
    2. 点击工单名称栏下面的刚才提交的那条工单,得到如下图所示,点击 " 审核通过 "

       
    3. 浏览器里面用 testsql_03 登录,进行 SQL 上线的执行操作,登录后如下图

       
    4. 点击工单名称栏下面的刚才提交的那条工单,得到如下图所示,点击 " 审核通过 "

       
    5. 点击 " 审核通过 " ,到了下图所示界面 ,再点击 " 立即执行 " ,在弹出的对话框中确认即可。至此全部流程走完!

以上是关于SQL审核平台 Archery 之集成 Ldap 篇的主要内容,如果未能解决你的问题,请参考以下文章

SQL审核平台 Archery 之配置 DingDing 通知篇

SQL审核平台 Archery 之简单使用篇

搭建sql审核平台archery

搭建sql审核平台archery

SQL审核平台 Archery 之安装篇

SQL 审核查询平台