一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - Redis權限管理體系:終于等來了Redis權限控制體系ACL

Redis權限管理體系:終于等來了Redis權限控制體系ACL

2024-01-05 05:00未知服務器之家 Redis

一、用戶管理 Redis用戶的創建、查看、修改、刪除等主要操作可以按照如下實例進行 1、創建用戶 只創建用戶,暫時不添加其他權限 127.0.0.1:6479 ACL SETUSER user1 on pwd_u1OK 另外,上例中,設置的是明文密碼,也可以 設置加密的hash密碼

Redis權限管理體系:終于等來了Redis權限控制體系ACL

一、用戶管理

Redis用戶的創建、查看、修改、刪除等主要操作可以按照如下實例進行

1、創建用戶

只創建用戶,暫時不添加其他權限

127.0.0.1:6479> ACL SETUSER  user1 on >pwd_u1
OK

另外,上例中,設置的是明文密碼,也可以設置加密的hash密碼,例如:

#先獲取對于密碼的hash值
[redis@VM-4-14-centos ~]$ echo -n "pwd_u1" | shasum -a 256
21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544  -
#以密文的方式創建密碼
127.0.0.1:6479> ACL SETUSER u2 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544
OK

2、查看用戶

Redis中查看用戶時可以看到對應的用戶信息及權限;另外也可以選擇查看全部用戶信息、指定用戶信息及當前登錄的用戶是誰。具體示例如下:

列出所有用戶:

127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user testuser1 on #b6d18faf7ebcfdce9f8782a0aad13c14e2662fcc08072e2738bcb27d04b96188 &* -@all"
3) "user user1 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 &* -@all"
127.0.0.1:6479>

Redis權限管理體系:終于等來了Redis權限控制體系ACL

查看指定用戶:

查看單個用戶可以用 "ACL GETUSER 用戶名"的方式查看,例如:

127.0.0.1:6479> ACL GETUSER user1
 1) "flags"
 2) 1) "on"
    2) "allchannels"
 3) "passwords"
 4) 1) "21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544"
 5) "commands"
 6) "-@all"
 7) "keys"
 8) (empty array)
 9) "channels"
10) 1) "*"

Redis權限管理體系:終于等來了Redis權限控制體系ACL

查看當前登錄用戶:

127.0.0.1:6479> ACL WHOAMI
"default"

3、創建多密碼

Redis中一個用戶可以有多個密碼,這是與其他數據庫有所不同的地方。示例如下:

127.0.0.1:6479> ACL SETUSER u3 on >pwd_u3
OK
127.0.0.1:6479> ACL SETUSER u3 on >pwd_u33
OK
127.0.0.1:6479> ACL GETUSER u3
 1) "flags"
 2) 1) "on"
    2) "allchannels"
 3) "passwords"
 4) 1) "8064ac564c2512d07af567e7de8714bc194abe6afefef26370f44e33593d6179"
    2) "d190fe553fa81919050af3f9c482bb70ea19619e64e5c26c9b95e3f61de557c1"
 5) "commands"
 6) "-@all"
 7) "keys"
 8) (empty array)
 9) "channels"
10) 1) "*"

Redis權限管理體系:終于等來了Redis權限控制體系ACL

嘗試用2個不同的密碼登錄一下:

# 使用第一個密碼登錄
127.0.0.1:6479> AUTH u3 pwd_u3
OK
# 使用第二個密碼登錄
127.0.0.1:6479> AUTH u3 pwd_u33
OK
# 使用錯誤密碼登錄
127.0.0.1:6479> AUTH u3 pwd_u4444
(error) WRONGPASS invalid username-password pair or user is disabled.
127.0.0.1:6479>

可見,2個正確的密碼都可以登錄這個有個優點在于如果忘記之前的密碼,可以在新增一個密碼,而不影響原密碼的使用。

4、刪除用戶

如需刪除指定的用戶,可以使用ACL DELUSER命令操作,例如

127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user testuser1 on #b6d18faf7ebcfdce9f8782a0aad13c14e2662fcc08072e2738bcb27d04b96188 &* -@all"
3) "user u2 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 #47843fd456370690f6c7897a73c1e2f0d563981aa3cad13e475bc3e72ca14656 &* -@all"
4) "user u3 on #8064ac564c2512d07af567e7de8714bc194abe6afefef26370f44e33593d6179 #d190fe553fa81919050af3f9c482bb70ea19619e64e5c26c9b95e3f61de557c1 &* -@all"
5) "user user1 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 &* -@all"
127.0.0.1:6479> ACL DELUSER user1
(integer) 1
127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user testuser1 on #b6d18faf7ebcfdce9f8782a0aad13c14e2662fcc08072e2738bcb27d04b96188 &* -@all"
3) "user u2 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 #47843fd456370690f6c7897a73c1e2f0d563981aa3cad13e475bc3e72ca14656 &* -@all"
4) "user u3 on #8064ac564c2512d07af567e7de8714bc194abe6afefef26370f44e33593d6179 #d190fe553fa81919050af3f9c482bb70ea19619e64e5c26c9b95e3f61de557c1 &* -@all"
127.0.0.1:6479>

Redis權限管理體系:終于等來了Redis權限控制體系ACL

5、重置用戶

可以將用戶重置,重置后的用戶無法登錄,例如

127.0.0.1:6479> ACL SETUSER testuser1 reset
OK
127.0.0.1:6479> ACL GETUSER testuser1
 1) "flags"
 2) 1) "off"
    2) "allchannels"
    3) "sanitize-payload"
 3) "passwords"
 4) (empty array)
 5) "commands"
 6) "-@all"
 7) "keys"
 8) (empty array)
 9) "channels"
10) 1) "*"
127.0.0.1:6479>

Redis權限管理體系:終于等來了Redis權限控制體系ACL

二、權限控制

通過ACL方式添加權限,可以按需添加讀寫等操作權限,也可以針對對應的規則(如指定類型的key,指定開頭的key等)添加權限。

1、查看權限

ACL中的操作權限可以通過ACL CAT命令查看。

127.0.0.1:6479> ACL CAT
 1) "keyspace"
 2) "read"
 3) "write"
 4) "set"
 5) "sortedset"
 6) "list"
 7) "hash"
 8) "string"
 9) "bitmap"
10) "hyperloglog"
11) "geo"
12) "stream"
13) "pubsub"
14) "admin"
15) "fast"
16) "slow"
17) "blocking"
18) "dangerous"
19) "connection"
20) "transaction"
21) "scripting"

其中每個類型的具體內容可以繼續查看,例如查看dangerous操作的具體內容:

127.0.0.1:6479> ACL CAT dangerous
 1) "debug"
 2) "config"
 3) "restore"
 4) "swapdb"
 5) "failover"
 6) "slaveof"
 7) "client"
 8) "migrate"
 9) "latency"
10) "sync"
11) "psync"
12) "lastsave"
13) "acl"
14) "role"
15) "flushdb"
16) "replconf"
17) "info"
18) "keys"
19) "bgsave"
20) "replicaof"
21) "sort"
22) "cluster"
23) "save"
24) "restore-asking"
25) "module"
26) "monitor"
27) "bgrewriteaof"
28) "pfselftest"
29) "pfdebug"
30) "slowlog"
31) "shutdown"
32) "flushall"
127.0.0.1:6479>

Redis權限管理體系:終于等來了Redis權限控制體系ACL

2、添加權限

之前創建用戶u2,僅有登錄權限,現在對其添加權限。

127.0.0.1:6479>  ACL SETUSER u2 allkeys +@read +@write
OK

Redis權限管理體系:終于等來了Redis權限控制體系ACL

以上是對所有key(allkeys,是 ~*的同義詞)添加讀寫權限。加權限就是使用+@對應權限。
下面驗證一下結果:

127.0.0.1:6479> AUTH u2 pwd_u2
OK
127.0.0.1:6479> set k1  1
OK
127.0.0.1:6479> get k1
"1"
127.0.0.1:6479> info
NOPERM this user has no permissions to run the 'info' command or its subcommand

Redis權限管理體系:終于等來了Redis權限控制體系ACL

3、回收權限

再對u2用戶回收寫權限,回收權限使用-@權限即可。
 ACL SETUSER u2 allkeys -@write

Redis權限管理體系:終于等來了Redis權限控制體系ACL

回收后再使用u2用戶登錄,則可以發現可以查看,但不能寫入了。

Redis權限管理體系:終于等來了Redis權限控制體系ACL

4、對指定類型的key進行權限管理

創建u1用戶,然后對其添加string及hash類型的key的操作權限。

127.0.0.1:6479> ACL SETUSER u1 on >pwd_u1
OK
127.0.0.1:6479> ACL GETUSER u1
 1) "flags"
 2) 1) "on"
    2) "allchannels"
 3) "passwords"
 4) 1) "21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544"
 5) "commands"
 6) "-@all"
 7) "keys"
 8) (empty array)
 9) "channels"
10) 1) "*"
127.0.0.1:6479> ACL SETUSER u1 allkeys +@string +@hash
OK
127.0.0.1:6479> ACL GETUSER u1
 1) "flags"
 2) 1) "on"
    2) "allkeys"
    3) "allchannels"
 3) "passwords"
 4) 1) "21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544"
 5) "commands"
 6) "-@all +@string +@hash"
 7) "keys"
 8) 1) "*"
 9) "channels"
10) 1) "*"
127.0.0.1:6479>

Redis權限管理體系:終于等來了Redis權限控制體系ACL

驗證權限

127.0.0.1:6479> ACL GETUSER u1
 1) "flags"
 2) 1) "on"
    2) "allkeys"
    3) "allchannels"
 3) "passwords"
 4) 1) "21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544"
 5) "commands"
 6) "-@all +@string +@hash"
 7) "keys"
 8) 1) "*"
 9) "channels"
10) 1) "*"
127.0.0.1:6479> AUTH u1 pwd_u1
OK
127.0.0.1:6479> set s1 1
OK
127.0.0.1:6479> get s1
"1"
127.0.0.1:6479> hset h1 f1 'a'
(integer) 1
127.0.0.1:6479> hgetall h1
1) "f1"
2) "a"
127.0.0.1:6479> info
NOPERM this user has no permissions to run the 'info' command or its subcommand
127.0.0.1:6479> SMEMBERS set1
(error) NOPERM this user has no permissions to run the 'smembers' command or its subcommand

Redis權限管理體系:終于等來了Redis權限控制體系ACL

5、對指定key進行授權

對指定開頭的key添加所有操作權限,例如:

127.0.0.1:6479> ACL GETUSER u3
 1) "flags"
 2) 1) "on"
    2) "allchannels"
 3) "passwords"
 4) 1) "8064ac564c2512d07af567e7de8714bc194abe6afefef26370f44e33593d6179"
 5) "commands"
 6) "-@all"
 7) "keys"
 8) (empty array)
 9) "channels"
10) 1) "*"
127.0.0.1:6479> ACL SETUSER u3 ~a* +@all 
OK
127.0.0.1:6479> ACL GETUSER u3
 1) "flags"
 2) 1) "on"
    2) "allchannels"
    3) "allcommands"
 3) "passwords"
 4) 1) "8064ac564c2512d07af567e7de8714bc194abe6afefef26370f44e33593d6179"
 5) "commands"
 6) "+@all"
 7) "keys"
 8) 1) "a*"
 9) "channels"
10) 1) "*"
127.0.0.1:6479>

Redis權限管理體系:終于等來了Redis權限控制體系ACL

驗證結果:

127.0.0.1:6479> set s2 222
(error) NOPERM this user has no permissions to access one of the keys used as arguments
127.0.0.1:6479> set a2 222
OK
127.0.0.1:6479> hset set2 f2 222
(error) NOPERM this user has no permissions to access one of the keys used as arguments
127.0.0.1:6479> hset aset2 f2 222
(integer) 1
127.0.0.1:6479> 5

Redis權限管理體系:終于等來了Redis權限控制體系ACL

三、結語

通過創建用戶及配置相應的權限,可以起到隔離用戶操作,避免風險操作等,從而降低Redis被誤操作或風險操作的概率,提升安全性及穩定性。大家也可以多多組合測試,配置適合自己使用的權限組合。

延伸 · 閱讀

精彩推薦
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
主站蜘蛛池模板: 福利视频免费 | 午夜亚洲一区二区福利 | 成年人在线视频免费观看 | 国产最强大片免费视频 | 91精品国产91热久久p | 67id人成观看免费 | 欧美xxx000喷水| 精品无码久久久久久久动漫 | 国产1区精品 | 四虎国产成人免费观看 | 69成人影院| 久久精品国产视频澳门 | 国产清纯女高中生在线观看 | chinaese中国女人厕所小便 | 无限资源在线观看播放 | china外卖员gay帮口 | 99视频精品免费99在线 | 暖暖 免费 高清 日本 中文 | 久久成人国产精品一区二区 | 久久久GOGO无码啪啪艺术 | 海绵宝宝第二季全集免费观看 | 四虎网址| 猥琐对着美女飞机喷到脸上 | poverty中国老妇人 | 3d蒂法精品啪啪一区二区免费 | 强插美女 | 日本不卡1卡2卡三卡网站二百 | 91国在线观看 | 欧美一区二区不卡视频 | 91精品国产综合久久福利 | 无人区乱码区1卡2卡三卡在线 | 男女男精品视频 | 天天操天天射天天爽 | 人与动人物性行为zozo共患病 | 国产成人精品一区二三区 | 亚洲天堂视频在线播放 | 日本精品一卡二卡≡卡四卡 | 婚前试爱全集免费观看 | 欧美同性gayvidoes| 日本人做受全过程视频 | 国模大胆一区二区三区 |