Redis进阶(一):权限控制

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 信息详细字段屏蔽说明
      Serverconfig_file会显示配置文件路径信息,较为敏感
      Serverexecutable会显示路径信息,较为敏感
      Serveros阿里云进行了屏蔽
      Servergcc_version阿里云进行了屏蔽
      Memorytotal_system_memory阿里云进行了屏蔽
      Memorytotal_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"
    
附:Github地址
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值