Archery部署和使用 |
您所在的位置:网站首页 › archeryking无法连接 › Archery部署和使用 |
这里写目录标题
Archery部署Docker安装1、下载 Archery2、将下载好的 zip 压缩包上传至服务器某一目录下,并解压3、进入解压后的文件夹,并进入 /src/docker-compose 文件夹4、修改 docker-compose.yml 文件5、修改 my.cnf 文件6、修改 settings.py 文件 (共 2 个)。7、启动 Archary 相关容器8、观察 Archary 相关容器是否都正常启动 (共 5 个)9、初始化 Archary 数据10、访问 Archary
Archery 部署教程 - 手动【Part1 安装】安装 Python 和 virtualenv外网yum源配置安装python-ldap报错安装pyodbc失败安装mysqlclient失败
数据库初始化
【Part2 插件安装】goInception安装安装go环境安装goInception
SOAR安装
【Part3 管理系统配置】【Part4 启动】archery启动archery 手动启动服务生产环境启动
开启自启动脚本
【Part5 异常信息】
Archery使用用户信息基本使用添加资源组权限组添加用户添加数据库实例和数据库系统配置定义工单审核流程进行工单审核流程测试1) archery001 的操作2) archery002 的操作3) archery003 的操作
Archery部署
Docker安装
1、下载 Archery
本文档使用的版本是 Release v1.7.13。 下载地址:https://github.com/hhyo/archery/releases/ 如果你的服务器上已存在 3306 端口的 MySQL 被其他项目使用,则可以将此 MySQL 的端口进行修改。 ![]() ![]() 如果遇到 docker-compose:未找到命令 则按顺序执行以下命令即可解决 (需要 root 权限): cd /usr/local/bin wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64 rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64 chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose version 8、观察 Archary 相关容器是否都正常启动 (共 5 个) docker ps缓存使用 redis,可参考 django_redis 文档 http://django-redis-chs.readthedocs.io/zh_CN/latest/ # 缓存配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "" } }, "dingding": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "" } } } 数据库初始化 # 数据库初始化 python3 manage.py makemigrations sql python3 manage.py migrate # 数据初始化 python3 manage.py dbshell /etc/profile source /etc/profile 验证是否安装成功 go version有版本号出现则表示成功 ! 安装goInception 下载源码 方式一 链接: 百度网盘 请输入提取码 密码: aai2 放置/opt/goInception目录下 方式二 cd /opt mkdir goInception wget -c https://github.com/hanchuanchuan/goInception/releases/download/v1.1.5/goInception-linux-amd64-v1.1.5.tar.gz 解压源码 tar zxvf goInception-linux-amd64-v1.1.5.tar.gz -C /opt/goInception 重命名 cd goInception/config/ mv config.toml.default config.toml 修改配置 vi config.toml英文输入状态下 按 i 进入insert模式 修改如下配置 其他保留默认配置 # IP地址 host = "127.0.0.1" # 端口 port = 4000 backup_host = "127.0.0.1" backup_port = 3306 backup_user = "root" backup_password = "newpass" 启动 nohup /opt/goInception/goInception -config=/opt/goInception/config/config.toml >>/dev/null 2>&1 & 连接 mysql -h127.0.0.1 -P40007.如有断连问题 启动后运行以下命令 exit SOAR安装SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护 下载源码 方式一 链接: https://pan.baidu.com/s/1r4aJNCvG_rL9BmQfVptvhA 密码: iwdj 放至/opt/soar目录下 方式二 cd /opt mkdir soar cd soar wget -c https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64 重命名 mv soar.linux-amd64 soar 添加权限 chmod a+x /opt/soar/soar 创建配置文件 touch /opt/soar/soar.yaml添加如下配置 可参考: https://github.com/XiaoMi/soar/blob/dev/doc/config.md # 线上环境配置 online-dsn: addr: 127.0.0.1:3306 schema: test user: root password: newpass disable: false # 测试环境配置 test-dsn: addr: 127.0.0.1:3306 schema: test user: root password: newpass disable: false # 是否允许测试环境与线上环境配置相同 allow-online-as-test: true # 是否清理测试时产生的临时文件 drop-test-temporary: true # 语法检查小工具 only-syntax-check: false sampling-statistic-target: 100 sampling: false # 日志级别,[0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug] log-level: 7 log-output: /opt/soar/soar.log # 优化建议输出格式 report-type: markdown ignore-rules: - "" # 黑名单中的 SQL 将不会给评审意见。一行一条 SQL,可以是正则也可以是指纹,填写指纹时注意问号需要加反斜线转义。 blacklist: /opt/soar/soar.blacklist # 启发式算法相关配置 max-join-table-count: 5 max-group-by-cols-count: 5 max-distinct-count: 5 max-index-cols-count: 5 max-total-rows: 9999999 spaghetti-query-length: 2048 allow-drop-index: false # EXPLAIN相关配置 explain-sql-report-type: pretty explain-type: extended explain-format: traditional explain-warn-select-type: - "" explain-warn-access-type: - ALL explain-max-keys: 3 explain-min-keys: 0 explain-max-rows: 10000 explain-warn-extra: - "" explain-max-filtered: 100 explain-warn-scalability: - O(n) query: "" list-heuristic-rules: false list-test-sqls: false verbose: true 安装验证 echo 'select * from film' | ./soar 拓展- web界面显示.并且可以进行部分的sql优化显示(可忽略)https://github.com/xiyangxixian/soar-web 2、inception 【Part3 管理系统配置】此插件如果配置不成功,则无法提交上线 SQL 1、SQL 审计插件 goinception 配置参考 - 语法检测 step1: 安装 wget https://github.com/hanchuanchuan/goInception/archive/refs/tags/v1.2.4.tar.gz tar -zxvf goInception-linux-v1.2.4-27-ga6c0cfa.tar.gz step2: 修改配置文件 cp config/config.toml.default config/config.toml 配置文件要修改和自己环境相一致的配置,否则不能生效 [inc] backup_host = "127.0.0.1" backup_port = 3306 backup_user = "root" backup_password = "123456..."step3: 启动 ./goInception -config /usr/local/src/goInception/config/config.toml & runserver 启动(仅作为本地测试) source /opt/venv4archery/bin/activate #启动 Django-Q,需保持后台运行 python3 manage.py qcluster & #启动服务 python3 manage.py runserver 0.0.0.0:9123 --insecure & 访问地址: http://ip:9123 如果启动成功,但无法访问,看一下防火墙是不是处于开启状态。 以上就是手动安装 archery 的 quanguoc 生产环境启动生产环境启动 - 使用守护进程方式启动 source /opt/venv4archery/bin/activate bash startup.sh 本质使用的是:Gunicorn+Nginx 启动 1、在安装包中以及安装部署了supervisord 配置文件在/usr/local/Archery-1.8.5/supervisord.conf 其中已经启动了Gunicorn(后端)和qcluster(后台校验和写入数据库Django_Q) 所以后端已经启动只要nginx启动即可,重启服务器的话,因为supervisord是自动启动的,所以只要保证nginx没有问题即可。 通过supervisorctl可以查看网页相关内容 1.start nginx //启动nginx的命令。 2.nginx -s quit //此方式停止步骤是待nginx进程处理任务完毕进行停止。 3.nginx -s stop //此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。 4.nginx -s reload //重新加载配置文件:当 nginx的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx, 使用-s reload不用先停止 nginx再启动 nginx 即可将配置信息在 nginx 中生效2、nginx 配置 # archery的nginx配置 server{ listen 9123; # 监听的端口 server_name archery; client_max_body_size 20M; # 处理Request Entity Too Large proxy_read_timeout 600s; # 超时时间与Gunicorn超时时间设置一致,主要用于在线查询 location / { proxy_pass http://127.0.0.1:8888; proxy_set_header Host $host:9123; # 解决重定向404的问题,和listen端口保持一致,如果是docker则和宿主机映射端口保持一致 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /usr/local/Archery-1.8.5/static; # 此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } 开启自启动脚本----- 测试环境 ------ /usr/local/src/redis/redis-5.0.11/src/redis-server & service mysqld start cd /usr/local/src/archery source venv4archery/bin/activate cd Archery-1.8.0 python3 manage.py qcluster & python3 manage.py runserver 0.0.0.0:9123 --insecure &------- 生产环境 ----------- /usr/local/src/redis/redis-5.0.11/src/redis-server & service mysqld start cd /usr/local/src/archery source venv4archery/bin/activate cd Archery-1.8.0 sh startup.sh 【Part5 异常信息】异常一、数据库初始化异常** 手动配置的话,需要自己创建数据库 执行 python3 manage.py migrate 出现数据库初始化异常 原因是数据库编码的问题,创建库的时候设置编码即可 mysql> show global variables like ‘%character%’; mysql> drop database archery; mysql> create database archery default character set utf8; 异常二、ModuleNotFoundError: No module named ‘Crypto’ 解决: pip3 uninstall crypto pip3 uninstall pycrypto pip3 install pycrypto Archery使用 用户信息redis数据库:redis mysql数据库:root 密码 123 mongoDB:无 django管理员 admin Lux@diag 网址:http://10.53.19.51:9123/ 超级管理员:admin 密码 Lux@diag 其他用户:archery001 、archery002 、archery003 , 密码是Password@_ 基本使用 添加资源组 资源这里的意思,其实指的是 " 数据库资源 ",那么资源组,就是说这个组与之相关联的数据库。创建资源组的时候,直接创建就好了,设置组名就好了,别的没什么信息要填写的了。 创建用户账号的时候必须指定这个账号 " 归属 " 的资源组,有些账号同时属于多个资源组,或者说这个账号是关联着多个资源组。这个是在创建用户账号或者修改用户账号时再制定。( 做过 Archery 和 Ldap " 打通 " 的,Ldap 所有账号都没有关联过资源组,所以后续必须有对要登录使用 Archery 的账号的指定相关资源组的这个操作 )。 Archery 平台刚部署之后,系统这里是没有任何资源组的,所以必须要手动添加资源组,依照要设定的审核流程,设置相应的资源组个数,本次实验审核流程有三步,故这里要添加三个资源组。 如果要使用 Archery 结合 DingDing ,在配置 Webhook 的过程中,要在相关资源组设置 Access_Token,才能够完成在整个审核流程中 DingDing 的通知提醒功能。或者是 Archery 结合飞书 、企业微信 ,都是在这里进行设置。 添加方式: " 系统管理 " — " 资源组管理 " — " 添加组 " — " 组名称 " — " 保存 " 其余都不用填写; 示例: 创建三个资源组 — 测试组、开发组、运维组 权限组的意思就很简单明了,就是对用户账号的操作做权限限定,限定哪些用户账号能够干什么,哪些用户账号不能够干什么,具体在 Archery 平台上的体现就是,哪些账号只能提交审核,哪些账号可以审批已提交的审核,又哪些用户账号可以执行已提交的审核,等等例如这些。 创建用户账号的时候 , 必须指定这个账号所关联的权限组,一个账号只能够关联到一个权限组。( 做过 Archery 和 Ldap " 打通 " 的,Ldap 所有账号都没有关联过权限组,所以后续必须有对要登录使用 Archery 的账号的指定相关权限组的这个操作 ) Archery 平台刚部署之后,系统这里是有 五个系统自带的权限组 — RD 、PM 、QA 、DBA 、Default , 每个 组都有各自对应的权限。使用系统自带的组,就能够完成一个完整的审核流程。当然也可以自己定定义权限组,用一些比较有个性化的名字,然后设置相对应的权限,也是可以完成一个完整的审核流程的。 五个组权限的大小依次是 Default < QA < RD < PM < DBA , 下面简单的说明下 Default 和 RD 这两个权限组 配置方式: " 系统管理 " — " 其他配置管理 " — " 权限组管理 " — 右上角的位置 " 增加 组 + " — “输入名称,以及权限可用的权限和按钮” — " 保存 " 示例: 默认存在一些组,可不用添加 添加用户 用户账号,就是登录 Archery 平台的账号了,用来操作、使用 Archery 平台,进行相关的审核操作。 创建用户账号的时候 , 必须指定这个账号所关联的权限组、资源组。一个用户账号只能关联一个权限组,但是可以关联到多个资源组,在审核流程中,除了提交SQL审核上线的那个用户账号,后面的账号必须是关联到多个资源组,也就是说后面的用户账号除了自身的资源组之外,还必须关联到前面一个用户账号所关联到的资源组。 用户账号的来源:一个是中 Archery 平台有管理员创建,第二是 Ldap 里面的账号,但是 Ldap 里面的用户账号必须登录过一次 Archery 平台 ,才能够中用户管理里面看得到,稍后再编辑这些账号并配置相关的 权限组、资源组。 添加方式: " 系统管理 " — " 其他配置管理 " — " 用户管理 " — 右上角的位置 " 增加 用户管理 + " — " 认证信息(用户名、口令、口令确认)" — " 个人信息(显示中文名、电子邮件信息) " — " 权限信息(组,指的是从系统默认的五个权限组中选择一个、用户权限 这里不操作) " — " 资源组(选择一个或者多个资源组) " — " 保存 " “用户权限” 这里不做任何的操作,因为用户权限这里由用户账号所属的权限组来限定,所有这里就先不指定了 示例: 创建三个测试账号:archery001 、archery002 、archery003 , 并指定组;密码是Password@_ archery001 加入到 RD 组 ,资源组为 测试组 archery002 加入到 PM 组 ,资源组为 测试组、开发组 archery003 加入到 DBA组,资源组为 测试组、运维组 说明: 第一,审核流程中除SQL审核提交人之外,后面的审核人,都必须关联到SQL提交人所在的资源组 第二,实例数据库和资源组及用户账号之间的关联关系,只能够是软件作者设计的那套流程,即用实例数据库下的数据库只关联到SQL审核提交人的资源组,而用户账号再关联到这个审核流程中自己所在组以及前面一个用户账号所在的资源组。 添加数据库实例和数据库 实例 ,指的就是哪个服务器上面的数据库管理系统 (通常大家称呼习惯了为数据库),而这里提到的数据库,才是真正的数据库,是这个数据库管理系统里面的各个数据库,是我们使用命令 " show databases 或者 show dbs " 得到的结果。 这里,我们要区别一下, 在没有接触使用 Archery 审核平台之前,我们接触到的 “实例” 这个概念。例如在我们服务器 (地址:172.16.1.10)上安装了一个 MYSQL 的数据库管理系统,并且部署好了两个实例,使用的端口分别是 3306、3308 ,那么一般都说这里是个多实例 MYSQL,每个实例下面有各自的数据库,这个没有毛病,老铁!结合 Archery 的实例描述起来,同样也是两个实例,比方说 实例 172.16.1.10_3306 实例 、172.16.1.10_3308 实例,这个并不冲突和矛盾。数据库呢,也就是两个实例里面各自包含的数据库。 添加方式: " 实例管理 " — " 实例列表 " — " 添加实例 " — " 增加实例配置 (实例名称、实例类型、数据库类型、实例连接、端口、用户名、口令、数据库 、字符集(utf8) 、资源组、实例标签(支持上线、支持查询 都加上) ) " — " 保存 " " 数据库管理 " — " 请选择实例 " — " 创建数据库 " — " 数据库名称 " — " 负责人 " — " 备注 " — " 创建 " 示例: 添加两个数据库实例和实例下的测试数据库 并 指定数据库对应的资源组,用户名:root 密码:123 MYSQL 数据库的实例 ( 名称为 :MYSQL129 ) ,数据库为 test1290 MONGODB 数据库的实例 ( 名称为 :MONGODB130 ) ,数据库为 test130;无密码(本人先单独安装mongodb) 以上两个数据库实例下的数据库 都指定资源组为 测试组 如果数据未创建成功,在" 数据库管理 " — " 请选择实例 " — " 创建数据库 " — " 数据库名称 " — " 负责人 " — " 备注 " — " 创建 " 左边的操作 : " 系统管理 " — " 配置项管理 " — " 选择操作 " — " 配置项 ( 系统设置 ) " 右边的操作 : " Inception配置 " — " GO_INCEPTION_HOST " 填写 " 部署的IP(此处10.53.19.51)" 、" GO_INCEPTION_PORT " 填写 " 4000 " — 最下面点击 " 保存配置 " 添加方式: 左边的操作 : " 系统管理 " — " 配置项管理 " — " 选择操作 " — " 配置项 ( 工单审核流配置 ) " — " 工单类型 ( SQL上线申请 ) " — " 组 (测试组) " 右边的操作 : " 操作 " — " 请选择审批权限组 " 下拉框 — 第一次选择 PM 组 ,第二次选择 DBA 组 — " 变更 " 我们设定工单审核流为 :RD —> PM —> DBA ( 使用 Archery 平台自带的权限组就可以了) insert into info(id,name,age,address) values(1001,“jack”,25,“USA”) DB129SQL审核测试-001 " SQL审核 " — " SQL上线 " —" 提交SQL" — " 填写SQL、上线单名、选择组、选择实例、选择数据库 “— " SQL检查 " —” SQL提交" 报错:Can’t connect to MySQL server on ‘127.0.0.1’ (111) 1、首先看系统配置中的goInception是否正确 2、其次查看部署的服务器,mysql -h127.0.0.1 -P4000 是否能够成功。未开启的话,启动goInception(nohup /opt/goInception/goInception -config=/opt/goInception/config/config.toml >>/dev/null 2>&1 &) 检测结果 提交审核 点击审核通过 状态变动 在此环节, archery003 账号的操作其实有两个步骤的,截图这里没有第一个步骤的截图 ( 感觉没必要 ) 第一个步骤:其实很上面的 archery002 一样的,也是有一个 "审核通过"的按钮的执行界面 第二个步骤:才是下面第二、三个截图里面的 “立即执行” 的界面,然后点击执行 **问题:**一直在排队中 原因: django-q的状态问题 ,查看(ps -ef |grep qcluster) **解决:**可能是开了多个django-q,kill - 9 一个就行了;如下图后面的是正常的 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |