跟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
本作品採用《CC 協議》,轉載必須註明作者和本文連結