Redis二次开发说明文档
一、新增了管理员账号(admin_requirepass)
1.1 二次开发说明
- 通过在redis.conf配置文件中添加admin_requirepass字段来设置管理员密码
1.2 注意事项
- 主从同步的密码需要与admin_requirepass保持一致
1.3 操作步骤
- redis.conf
admin_requirepass adminPassword
- redis-cli
127.0.0.1:6379> auth adminPassword OK
二、新增了用户组(user_group)
2.1 二次开发说明
- 通过在redis.conf配置文件中添加user_group字段来初始化用户组信息(可为空,主要通过命令来添加)
- 通过config set user_group来设置用户组,再执行config rewrite生成配置文件(保证重启生效)
- 无论添加、修改、删除用户都是通过config set user_group来完成
- 添加的格式为config set user_group “(权限)(用户名1):(密码1) (权限)(用户名2):(密码2)”
- 权限分为3种:
- w:读写权限,只能进行读写操作,不能进行同步操作(默认用户为该权限)
- r:只读权限,权限最小,只能进行读操作
- c:复制权限,权限最大,可读可写可同步
2.2 注意事项
- 用户组中的用户认证时第一步先判断权限,再判断用户名密码,所以通过指令设置用户组时不能少了权限字段
2.3 操作步骤
- redis-cli
127.0.0.1:6379> config set user_group "wuser1:123456 ruser2:123456" # 设置用户组 OK 127.0.0.1:6379> auth user1:123456 # 获取读写权限 OK 127.0.0.1:6379> set a b OK 127.0.0.1:6379> auth user2:123456 # 获取只读权限 OK 127.0.0.1:6379> get a "b" 127.0.0.1:6379> set c d # 添加失败 (error) ERR command set not support for your account
三、增加config可操作的属性
3.1 二次开发说明
-
通过config set对新增的属性进行动态修改,config rewrite进行报错
-
增加属性如下:
属性 参数 说明 bind “127.0.0.1 xxx.xxx.xxx.xxx” 用户申请外网ip后,可以通过bind设置外网ip;
释放外网连接时,可以通过bind删除外网ip地址;user_group “wuser:pass ruser2:pass2” 设置用户组信息 auditlog [yes|no] 是否开启审计日志 auditlogfile “/data/logs/redis/audit.log” 审计日志存放路径 disable [yes|no] 是否禁用Redis -
新增配置redis.conf
admin_requirepass "" # 管理员密码 user_group "" # 用户组信息 auditlog yes # 是否开启审计日志 auditlogfile "/data/logs/redis/audit.log" # 审计日志路径 disable no # 是否禁用
3.2 注意事项
- 修改bind字段后需要进行config rewrite,且重启Redis才能生效
3.3 操作步骤
- redis-cli
127.0.0.1:6379> config set bind "127.0.0.1 192.168.xx.xx 113.xx.xx.xx" OK 127.0.0.1:6379> config set auditlog yes OK 127.0.0.1:6379> config rewrite OK
四、限制命令
- 将敏感指令做限制,只有管理员能进行操作
- 限制的指令如下:
指令 限制说明 shutdown 关闭Redis,可能会导致系统无法管理、监控Redis debug 例如debug reload会重启Redis save 数据备份由管理机进行,用户无需担心如何备份 bgsave 同上 bgrewriteaof 同上 replconf 阿里云进行了限制 lastsave 阿里云进行了限制 readonly 阿里云进行了限制 readwrite 阿里云进行了限制 config set key value 防止用户对Redis的参数进行修改 config write 同上 replicaof 防止用户修改服务器的复制设置 slaveof 同上 asking 阿里云进行了限制 pfselftest 阿里云进行了限制 cluster 阿里云进行了限制 migrate 阿里云进行了限制 psync 只有复制权限的账号和管理员才能操作 sync 只有复制权限的账号和管理员才能操作
五、屏蔽信息
-
将敏感信息进行屏蔽,只有管理员能查询
-
屏蔽信息如下:
-
info
info 信息 详细字段 屏蔽说明 Server config_file 会显示配置文件路径信息,较为敏感 Server executable 会显示路径信息,较为敏感 Server os 阿里云进行了屏蔽 Server gcc_version 阿里云进行了屏蔽 Memory total_system_memory 阿里云进行了屏蔽 Memory total_system_memory_human 阿里云进行了屏蔽 Persistence 全部字段 阿里云进行了屏蔽 Replication 全部字段 阿里云进行了屏蔽 -
config get
config get 信息 屏蔽说明 dbfilename 敏感信息 requirepass 敏感信息 masterauth 此为admin_requirepass管理员密码 logfile 敏感信息 pidfile 敏感信息 dir 敏感信息 save 阿里云进行了屏蔽 bind 敏感信息 slaveof 阿里云进行了屏蔽 appendfilename 阿里云进行了屏蔽 cluster-announce-ip 阿里云进行了屏蔽 unixsocket 阿里云进行了屏蔽 slave-announce-ip 阿里云进行了屏蔽 replica-announce-ip 阿里云进行了屏蔽 port 阿里云进行了屏蔽 cluster-announce-port 阿里云进行了屏蔽 cluster-announce-bus-port 阿里云进行了屏蔽 loglevel 阿里云进行了屏蔽 client-output-buffer-limit 阿里云进行了屏蔽 unixsocketperm 阿里云进行了屏蔽 -
role
127.0.0.1:6379>role # 在主Redis中执行 1) "master" 2) (integer) 56 3) 1) 1) "0.0.0.0" # 屏蔽了从Redis的ip 2) "6379" 3) "56" 127.0.0.1:6379>role # 在从Redis中执行 1) "slave" 2) "0.0.0.0" # 屏蔽了主Redis的ip 3) (integer) 6379 4) "connected" 5) (integer) 14
-
monitor
127.0.0.1:6379> monitor OK 1574188369.697972 [0 127.0.0.1:33234] "set" "a" "b" 1574188372.146464 [0 127.0.0.1:33234] "get" "a" # 隐藏了auth信息
127.0.0.1:6379> set a b # set操作被监听 OK 127.0.0.1:6379> auth admin # auth认证不会被监听 OK 127.0.0.1:6379> get a # get操作被监听 "b"
-
slowlog get
slowlog信息 屏蔽说明 AUTH 会显示管理员密码 REPLCONF ACK 主机会频繁请求从机,会产生大量数据 PING 从机会频繁请求主机,会产生大量数据 CONFIG 含敏感信息
-
六、添加禁用标识(disable)
6.1 二次开发说明
- 实例到期时,将Redis进行禁用,此时实例不关闭,但限制用户操作
6.2 操作步骤
-
redis.conf
disable yes
-
redis-cli
127.0.0.1:6379> set a b (error) ERR DISABLE You can't write or read against a disable instance 127.0.0.1:6379> flushall (error) ERR DISABLE You can't write or read against a disable instance
七、添加审计日志(auditlog)
7.1 二次开发说明
- 实时记录Redis的操作信息
- 同慢日志对一些请求进行了屏蔽,不记录replconf、ping、auth、config相关操作
- 需要在redis.conf文件中配置auditlog、auditlogfile字段
7.2 注意事项
- 通过性能测试,开启审计日志会降低QPS,100万数据量由6秒响应变为30秒响应
- 若需要开启审计日志,建议在从Redis中开启,100万数据量主Redis响应12秒,从Redis响应30秒
7.3 操作步骤
-
redis.conf
auditlog yes # 开启审计日志 auditlogfile "/data/logs/redis/audit.log" # 审计日志存放路径
7.4 日志信息
-
日志格式
+数据库id 操作ip:端口号 操作时间 响应时间 操作语句
-
audit.log
+0 172.12.36.142:6379 1574849439 3 "SELECT" "0" +0 172.12.36.142:6379 1574849439 11 "set" "a" "b"