etcd套路(四)auth許可權控制

huxiaobai_001發表於2020-08-23

跟redis一樣 etcd預設是滅有開啟許可權驗證的 放到網際網路上還是很不安全的 所以這一篇就謝謝auth許可權驗證;

許可權命令

可以為etcd建立多個使用者並設定密碼,子命令有:

  • add 新增使用者
  • delete 刪除使用者
  • get 取得使用者詳情
  • list 列出所有使用者
  • passwd 修改使用者密碼
  • grant-role 給使用者分配角色
  • revoke-role 給使用者移除角色

role

可以為etcd建立多個角色並設定許可權,子命令有:

  • add 新增角色
  • delete 刪除角色
  • get 取得角色資訊
  • list 列出所有角色
  • grant-permission 為角色設定某個key的許可權
  • revoke-permission 為角色移除某個key的許可權

auth

開啟/關閉許可權控制

示例

下面以示例來學習這三個命令

root使用者存在時才能開啟許可權控制
$ etcdctl auth enable
Error:  etcdserver: root user does not exist

$ etcdctl user add root
Password of root: 
Type password of root again for confirmation: 
User root created

$ etcdctl auth enable
Authentication Enabled

開啟許可權控制後需要用--user指定使用者
$ etcdctl user list
Error:  etcdserver: user name not found

$ etcdctl user list --user=root
Password: 
root

$ etcdctl user get root --user=root
Password: 
User: root
Roles: root

新增使用者,前兩個密碼是新使用者的,後一個密碼是root的
$ etcdctl user add mengyuan --user=root
Password of mengyuan: 
Type password of mengyuan again for confirmation: 
Password: 
User mengyuan created

使用新使用者執行put命令,提示沒有許可權
$ etcdctl put key1 v1 --user=mengyuan
Password: 
Error:  etcdserver: permission denied

建立名為rw_key_的role,新增對字串"key"做為字首的key的讀寫許可權,為mengyuan新增角色
$ etcdctl role add rw_key_ --user=root
Password: 
Role rw_key_ created

$ etcdctl --user=root role grant-permission rw_key_ readwrite key --prefix=true
Password: 
Role rw_key_ updated

$ etcdctl --user=root user grant-role mengyuan rw_key_
Password: 
Role rw_key_ is granted to user mengyuan

新增許可權成功後執行put key1成功,執行put k1失敗(因為上面只給字首為"key"的key新增了許可權)
$ etcdctl put key1 v1 --user=mengyuan
Password: 
OK

$ etcdctl put k1 v1 --user=mengyuan
Password: 
Error:  etcdserver: permission denied

執行user list命令失敗,沒有許可權
$ etcdctl user list --user=mengyuan
Password: 
Error:  etcdserver: permission denied
為新使用者新增root的角色後就能執行user list命令了,注意命令中第一個root是角色,第二個root是使用者

$ etcdctl user grant-role mengyuan root --user=root
Password: 
Role root is granted to user mengyuan

$ etcdctl user list --user=mengyuan
Password: 
mengyuan
root

英文手冊上寫的也已經非常詳細明白了,上邊的總結也是比較全面的
etcd.io/docs/v3.4.0/demo/#auth
etcd套路(四)auth許可權控制

本作品採用《CC 協議》,轉載必須註明作者和本文連結
胡軍

相關文章