--- /dev/null
+
+# 安装部署手册
+
+**业务中台之认证授权服务**
+
+
+* 修订历史
+
+版本 | 作者 | 日期 | 备注
+- | - | - | -
+v1 | 刘洪青 | 2020-06-10 | 初稿
+
+
+[TOC]
+
+
+## 安装准备
+
+### MySQL 初始配置及相关基础命令
+
+数据文件目录:/var/lib/mysql
+
+* 安装完成后,调整 mysql 服务的配置参数
+
+ 查看当前配置:show variables;
+
+ 最大连接数 max_connections
+ 操作日志的保留时长 binlog_expire_logs_seconds
+
+ 参考命令:
+ ```
+ set global max_connections = 1000;
+ set persist max_connections = 1000;
+
+ // 7天 86400 * 7
+ // 1天 86400
+ set global binlog_expire_logs_seconds = 86400 * 7;
+ set persist binlog_expire_logs_seconds = 86400 * 7;
+ ```
+
+ 时区设置
+
+ 确保MySQL 的时区设置为 GMT+8
+
+
+* 创建数据库帐号
+
+ 参考命令:
+ ```
+ create user 'user'@'%' identified with mysql_native_password by 'your_password';
+ ```
+
+
+* 创建 database
+
+ 参考命令:
+ ```
+ create database `user` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+ ```
+
+
+* 授予权限
+
+ 将 database 的权限授予对应的帐号
+
+ 参考命令:
+ ```
+ grant all privileges on `user`.* to 'user'@'%' with grant option;
+ ```
+
+
+* 授予 SUPER 权限
+ 由于 部分帐号 需要创建 触发器,故,需要 SUPER 权限
+ 涉及帐号有 user、user_authz、cas_server
+
+ 参考命令:
+ ```
+ grant SUPER on *.* to 'user'@'%';
+ grant SUPER on *.* to 'user_authz'@'%';
+ grant SUPER on *.* to 'cas_server'@'%';
+
+ grant SUPER on *.* to 'tmp_data'@'%';
+ ```
+
+
+* 备份与还原
+
+ 参考命令:
+ 备份:
+ ```
+ mysqldump -u root -p cas_server > cas_server.sql
+ mysqldump -u root -p token_server > token_server.sql
+ mysqldump -u root -p user > user.sql
+ mysqldump -u root -p user_authz > user_authz.sql
+ mysqldump -u root -p agent_service > agent_service.sql
+ ```
+
+ 还原:
+ ```
+ mysql -u root -p cas_server < cas_server.sql
+ mysql -u root -p token_server < token_server.sql
+ mysql -u root -p user < user.sql
+ mysql -u root -p user_authz < user_authz.sql
+ mysql -u root -p agent_service < agent_service.sql
+ ```
+
+
+### Harbor 准备及相关说明
+
+* 创建 devops 帐号
+
+ 用于 rancher 部署时拉取镜像
+
+ 用户管理 下 创建用户
+ 如 devops
+
+
+* 镜像同步
+
+ 从 https://harbor.supwisdom.com 中同步镜像
+
+ 仓库管理 下 新建目标
+ ```
+ supwisdom https://harbor.supwisdom.com rancher.devops / PWMgP85qiLFC
+ ```
+
+ 同步管理 下 新建规则
+
+ ```
+ thirdparty-agent-service thirdparty-agent-service/*
+
+ authx-service authx-service/*
+
+ user-data-service goa/*
+ user-authorization-service user-authorization-service/*
+ personal-security-center personal-security-center/*
+
+ jobs-server jobs-server/*
+
+ cas-server cas-server/*
+ token-server token-server/*
+ ```
+
+ 同步规则,创建完成后,进行镜像同步
+
+ 选择某个同步规则,点击 同步,等待任务完成
+
+
+* 授予 devops 帐号 对各个项目的 访客 权限
+
+ 项目 下,点击 项目名称,进入到 成员,添加用户,查找用户 devops,选择角色 访客,确定,添加即可
+
+
+### Rancher 准备及相关说明
+
+* 商店设置
+
+ 进入 全局 - 集群(具体名称视项目安装而定) - 工具 - 商店设置,添加应用商店
+
+ 名称:`supwisdom`
+ 商店URL地址:`https://e.coding.net/supwisdom/charts/charts.git`
+ 分支:`master`
+ 范围:选择`cluster`
+
+
+* 创建项目
+
+ 进入 全局 - 集群(具体名称视项目安装而定) - 项目/命名空间,添加项目
+
+ 输入 项目名称,保存
+
+ 本产品所须创建的项目名称为:`authx-platform`
+
+
+* 启动应用
+
+ 进入 全局 - 集群(具体名称视项目安装而定) - 项目(某个项目)
+
+ 进入 应用商店
+
+ 点击 启动,在应用列表中 找到 相关应用
+
+ 点击 该应用,选择模板版本(一般选择最新的版本),根据情况设置 配置选项,启动 即可
+
+ 本产品所须的相关应用清单:
+ ```
+ minio Minio文件服务
+
+ agent-service Agent Service 代理服务
+
+ authx-service 用户授权相关服务
+
+ jobs-server 同步服务
+
+ cas-server CAS 认证
+
+ token-server Token 认证
+ ```
+
+* 确定命名空间
+
+ 本产品安装过程中所须的命名空间如下:
+
+ ```
+ authx-minio Minio文件服务
+
+ agent-service Agent Service 代理服务
+
+ authx-service 用户授权相关服务
+
+ jobs-server 同步服务
+
+ cas-server CAS 认证
+
+ token-server Token 认证
+ ```
+
+
+### 域名准备
+
+* 确定域名
+
+ 首先明确是否使用泛域名,如:`*.paas.xxx.edu.cn`,或 直接使用学校域名 `xxx.edu.cn`
+
+ 本产品安装需要的域名如下:
+ ```
+ authx-minio.paas.xxx.edu.cn 文件服务
+
+ security-center.paas.xxx.edu.cn 安全中心
+
+ cas.paas.xxx.edu.cn CAS 认证(视具体情况,可调整)
+ token.paas.xxx.edu.cn Token 认证(APP适用)
+ ```
+
+ 如果使用 学校域名,则去除 .paas 即可,同时申请开通相关域名
+
+
+
+## 开始安装
+
+### 数据库安装(略)
+
+* 确定服务地址、端口
+
+ 明确MySQL 数据库的 IP、端口
+
+
+### 数据库创建
+
+* 数据库帐号
+
+ 以下是 各服务对应的数据库帐号
+
+ 服务 | 数据库帐号
+ - | -
+ 第三方代理服务 thridparty-agent-service | agent_service
+ - | -
+ 用户服务 user-data-service | user
+ 授权服务 user-authorization-service | user_authz
+ - | -
+ 认证服务 cas-server | cas_server
+ 认证服务(APP适用) token-server | token_server
+ - | -
+ v4认证迁移数据 | tmp_data
+
+ 命令:
+ **请修改命令中的 `your_password` 为实际的数据库帐号的密码**
+ ```
+ create user 'agent_service'@'%' identified with mysql_native_password by 'your_password';
+
+ create user 'user'@'%' identified with mysql_native_password by 'your_password';
+ create user 'user_authz'@'%' identified with mysql_native_password by 'your_password';
+ create user 'cas_server'@'%' identified with mysql_native_password by 'your_password';
+ create user 'token_server'@'%' identified with mysql_native_password by 'your_password';
+
+ create user 'tmp_data'@'%' identified with mysql_native_password by 'your_password';
+ ```
+
+
+* 数据库
+
+ 以下是 各服务对应的数据库
+
+ 服务 | 数据库
+ - | -
+ 第三方代理服务 thridparty-agent-service | agent_service
+ - | -
+ 用户服务 user-data-service | user
+ 授权服务 user-authorization-service | user_authz
+ - | -
+ 认证服务 cas-server | cas_server
+ 认证服务(APP适用) token-server | token_server
+ - | -
+ v4认证迁移数据 | tmp_data
+
+ 命令:
+ ```
+ create database `agent_service` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+
+ create database `user` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+ create database `user_authz` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+ create database `cas_server` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+ create database `token_server` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+
+ create database `tmp_data` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
+ ```
+
+
+* 数据库权限授予
+
+ 将 database 的权限授予对应的帐号
+
+ 命令:
+ ```
+ grant all privileges on `agent_service`.* to 'agent_service'@'%' with grant option;
+
+ grant all privileges on `user`.* to 'user'@'%' with grant option;
+ grant all privileges on `user_authz`.* to 'user_authz'@'%' with grant option;
+ grant all privileges on `cas_server`.* to 'cas_server'@'%' with grant option;
+ grant all privileges on `token_server`.* to 'token_server'@'%' with grant option;
+
+ grant all privileges on `tmp_data`.* to 'tmp_data'@'%' with grant option;
+ ```
+
+
+* SUPER 权限授予
+
+ 由于 部分帐号 需要创建 触发器,故,需要 SUPER 权限
+ 涉及帐号有 user、user_authz、cas_server
+
+ 命令:
+ ```
+ grant SUPER on *.* to 'user'@'%';
+ grant SUPER on *.* to 'user_authz'@'%';
+ grant SUPER on *.* to 'cas_server'@'%';
+
+ grant SUPER on *.* to 'tmp_data'@'%';
+ ```
+
+
+* 用户数据的交换帐号
+
+ **待部署完成后操作**
+
+ 如果,存在数据交换 须将组织机构数据、帐号数据 同步到用户服务的数据库的
+ 则,需要创建一个 交换用的数据库帐号(user_trans),并为该帐号授予 表 user.TMP_ORGANIZATION_ORIGIN、user.TMP_ACCOUNT_ORIGIN 的读写操作的权限
+
+ 命令:
+ ```
+ create user 'user_trans'@'%' identified with mysql_native_password by 'your_password';
+
+ grant select on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
+ grant insert on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
+ grant update on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
+ grant delete on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
+
+ grant select on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
+ grant insert on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
+ grant update on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
+ grant delete on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
+
+ grant select on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
+ grant insert on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
+ grant update on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
+ grant delete on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
+
+ grant select on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
+ grant insert on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
+ grant update on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
+ grant delete on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
+ ```
+
+
+### rancher 部署(应用商店)
+
+#### minio
+
+模式: standalone
+
+Access Key: 1y8N@8R@a_2u
+Secret Key: 8pxlIe9#lN7Q
+
+域名: authx-minio.paas.xxx.edu.cn
+
+
+#### agent-service
+
+
+
+
+#### authx-service
+
+
+
+#### jobs-server
+
+
+
+#### cas-server
+
+
+
+#### token-server
+
+
+
+
+
### 创建授权应用
```sql
-INSERT INTO TB_SYSTEM (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME,
+INSERT INTO TB_R_SYSTEM (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME,
BUSINESS_DOMAIN_ID,
CODE, NAME, ENABLED)
-VALUES ('20', '1', 0, 'admin', '2019-07-01 00:00:00',
+VALUES ('10', '1', 0, 'admin', '2019-07-01 00:00:00',
'1',
- '用户授权', '20', '', 1);
+ '10', '用户授权', 1);
INSERT INTO TB_APPLICATION (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME,
BUSINESS_DOMAIN_ID, SYSTEM_ID,
NAME, APPLICATION_ID, SYNC_URL, ENABLED)
-VALUES ('20', '1', 0, 'admin', '2019-07-01 00:00:00',
- '1', '20',
- '20', '用户授权', 1);
+VALUES ('10', '1', 0, 'admin', '2019-07-01 00:00:00',
+ '1', '10',
+ '用户授权', '10', '', 1);
commit;
```
use user_authz;
INSERT INTO TB_ROLE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, APPLICATION_ID, CODE, NAME, DESCRIPTION, ENABLED, EXTERNAL_ID)
-VALUES ('20', '1', 0, 'admin', '2019-07-01 00:00:00', '20', 'cas-admin', '认证管理员', '认证管理员', 1, '20');
+VALUES ('20', '1', 0, 'admin', '2019-07-01 00:00:00', '10', 'cas-admin', '认证管理员', '认证管理员', 1, '20');
INSERT INTO TB_ROLE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, APPLICATION_ID, CODE, NAME, DESCRIPTION, ENABLED, EXTERNAL_ID)
-VALUES ('30', '1', 0, 'admin', '2019-07-01 00:00:00', '20', 'user-admin', '用户管理员', '用户管理员', 1, '30');
+VALUES ('30', '1', 0, 'admin', '2019-07-01 00:00:00', '10', 'user-admin', '用户管理员', '用户管理员', 1, '30');
INSERT INTO TB_ROLE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, APPLICATION_ID, CODE, NAME, DESCRIPTION, ENABLED, EXTERNAL_ID)
-VALUES ('40', '1', 0, 'admin', '2019-07-01 00:00:00', '20', 'user-authz-admin', '授权管理员', '授权管理员', 1, '40');
+VALUES ('40', '1', 0, 'admin', '2019-07-01 00:00:00', '10', 'user-authz-admin', '授权管理员', '授权管理员', 1, '40');
INSERT INTO TB_ROLE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, APPLICATION_ID, CODE, NAME, DESCRIPTION, ENABLED, EXTERNAL_ID)
-VALUES ('41', '1', 0, 'admin', '2019-07-01 00:00:00', '20', 'user-authz-grant-admin', '用户授权管理员', '用户授权管理员', 1, '41');
+VALUES ('41', '1', 0, 'admin', '2019-07-01 00:00:00', '10', 'user-authz-grant-admin', '用户授权管理员', '用户授权管理员', 1, '41');
INSERT INTO TB_ROLE (ID, COMPANY_ID, DELETED, ADD_ACCOUNT, ADD_TIME, APPLICATION_ID, CODE, NAME, DESCRIPTION, ENABLED, EXTERNAL_ID)
-VALUES ('42', '1', 0, 'admin', '2019-07-01 00:00:00', '20', 'user-authz-man-grant-admin', '分级授权管理员', '分级授权管理员', 1, '42');
+VALUES ('42', '1', 0, 'admin', '2019-07-01 00:00:00', '10', 'user-authz-man-grant-admin', '分级授权管理员', '分级授权管理员', 1, '42');
commit;
```
```sql
use user_authz;
-UPDATE TB_ROLE SET APPLICATION_ID='20' WHERE ID IN ('20', '30', '40', '41', '42');
+UPDATE TB_ROLE SET APPLICATION_ID='10' WHERE ID IN ('20', '30', '40', '41', '42');
commit;
```
+
+
+
+