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 的账号登录通道打通了,但是相关权限都没有设置,所有这里登录进去了就是这样的情况
五、配置相关权限
-
创建账号
在 Ldap 里面创建三个测试账号:testsql_01 、testsql_02、testsql_03,属于 Ldap 里面什么部门什么组都没关系的
-
分别使用三个账号登录一次 Archery 平台
提醒 : Ldap 里面的账号,只有在 Archery 平台登录过一次,才能够在 "用户管理"里面看得到
-
编辑三个账号,设置对应的权限
依据前面设置的审核流程 (RD-DBA-PM),进行下面的操作:
-
testsql_01 加入到 RD 组,资源组为 测试组
-
testsql_02 加入到 PM 组,资源组为 测试组、开发组
- testsql_03 加入到DBA组,资源组为 测试组、运维组
-
六、审核流程测试
-
浏览器里面用 testsql_01 登录,进行 SQL 上线提交 操作,具体操作流程如下,操作截图如下:
"SQL审核" --- "SQL上线" --- "提交SQL" --- 右侧的方框输入 " ( 上线名单 ) -- 选择组 -- 选择实例 -- 选择数据库 -- 是否备份 -- 选择可以执行的时间范围 " --- "SQL监测" --- "SQL提交"
截图说明:
-
红色方框内是必选或必填项,蓝色方框是可选项,紫色椭圆是执行按钮
-
最上面的是选择编辑好的SQL文件直接执行,无须复制 ,选择好SQL文件,SQL语句就直接导入到左边来了
-
上线名单里面简要写下此处操作的内容信息等,自定义随意填写,建议写的有辨识度些方便后续操作
-
SQL备份要在系统配置里的相应地方进行配置备份库(地址账号相关等),流程完成后中备份库中就可以查询到了
- 上面操作完成后,界面如下:
可以看到 工单详情 和 工单日志 ,还有 操作信息 、终止流程
里面有具体的操作内容、现在的操作流程、下面的流程、审批人等信息
- 浏览器里面用 testsql_02 登录,进行 SQL 上线审核 操作,首先看到的是如下的截图:
- 点击工单名称栏下面的刚才提交的那条工单,得到如下图所示,点击 " 审核通过 "
- 浏览器里面用 testsql_03 登录,进行 SQL 上线的执行操作,登录后如下图
- 点击工单名称栏下面的刚才提交的那条工单,得到如下图所示,点击 " 审核通过 "
- 点击 " 审核通过 " ,到了下图所示界面 ,再点击 " 立即执行 " ,在弹出的对话框中确认即可。至此全部流程走完!
以上是关于SQL审核平台 Archery 之集成 Ldap 篇的主要内容,如果未能解决你的问题,请参考以下文章