官方文檔: https://etcd.io/docs/v3.4.0/op-guide/authentication/
簡單介紹
身份認證是在etcd2.1版本以后添加的,etcd v3 API稍微修改了身份驗證特性的API和用戶接口,以便更好地適應新的數據類型
特殊用戶和角色
一個特殊用戶: root
一個特殊角色: root
1.root用戶
root用戶擁有etcd的所有權限,且必須在激活身份認證之前就創建好. root用戶的設計主要是出於管理的目的: 管理角色和普通用戶. root用戶必須具有root角色, 並且可以在etcd中進行任何修改.
2.root角色
root角色除了可以賦予root用戶外, 也可以賦予任何其他用戶. 具有root角色的用戶具有全局讀寫訪問權限, 並且還具有更新集群的權限. 另外, root角色授予常規集群維護的特權, 包括修改及群成員的資格, 對存儲進行碎片整理以及拍攝快照.
激活身份認證
#1. 添加root角色 etcdctl role add root #2. 添加root用戶 etcdctl user add root (設置root密碼) #3. 給root用戶授予root角色 etcdctl user grant-role root root #4.激活auth etcdctl auth enable
用戶管理
etcdctl 的 user 子命令處理與用戶賬戶有關的所有事情.
1.用戶列表
etcdctl user list
2.創建用戶
[root@etcd1-101~]# etcdctl user add 用戶名
Password of 用戶名:
Type password of 用戶名 again for confirmation:
User root created
創建用戶時需要提供一個密碼,如果使用 --interactive=false選項,支持從標准輸入提供,也可以使用 --new-user-password 選項提供
# --new-user-password etcdctl --user root:123 user add Alayman --new-user-password 123 # --interactive=false etcdctl --interactive=false --user root:123 user passwd xinwei < /etc/etcd/passwd/xinwei
3.添加和刪除用戶角色
為用戶添加角色 etcdctl user grant-role 用戶名 角色名 為用戶刪除角色 etcdctl user revoke-role 用戶名 角色名
角色管理
1.列出角色
etcdctl role list
2.創建新角色
etcdctl role add 角色名
角色沒有密碼,它只是定義了一組新的訪問權限。
角色可以授予到一個單一的key上,或則一個范圍的keys。
范圍可以指定為[開始key,結束key) 區間,其中開始key應該按字母順序小於詞結束key。
角色的訪問權限可以被賦予read(讀),write(寫),readwrite(讀和寫)權限
# 給 /foo 讀權限 etcdctl role grant-permission 角色名 read /foo # 給以/foo/開頭的所有key賦予讀權限. The prefix is equal to the range [/foo/, /foo0) etcdctl role grant-permission 角色名 --prefix=true read /foo/ # 只給 /foo/bar 賦予寫權限 etcdctl role grant-permission 角色名 write /foo/bar # 給[key1, key5) 范圍內的所有key賦予所有權限 etcdctl role grant-permission 角色名 readwrite key1 key5 # 賦予以/pub/可有的key所有權限 etcdctl role grant-permission 角色名 --prefix=true readwrite /pub/
3.刪除一個角色的權限
etcdctl role revoke-permission 角色名 /foo/bar
4.刪除角色
etcdctl role delete 角色名
5.添加普通用戶權限的步驟
1. 添加角色role
2. 給角色授權 role grant-permissoion
3. 添加用戶 user
4. 給用戶授予角色權限 user grant-role
#1. 添加角色 role etcdctl --user root role add xinweiblog
#或者 etcdctl --user root --password (root密碼) role add xinweiblog
#或者 etcdctl --user root:(root密碼) role add xinweiblog #2. 給角色授權 role grant-permission etcdctl --user root role grant-permission xinweiblog --prefix=true readwrite/xinweiblog
#3. 添加用戶 user etcdctl --user root user add xinwei (設置密碼) #4. 給用戶授予角色權限 user grant-role etcdctl --user root user grant-role xinweiblog
etcdctl --user root user grant-role xinwei xinweiblog
6.列出已存在的用戶
etcdctl --user root:(root密碼) user list xinwei root etcdctl --user root:(root密碼) role get xinweiblog Role xinweiblog KV Read: [/xinweiblog, /xinweibloh) (prefix /xinweiblog) KV Write: [/xinweiblog, /xinweibloh) (prefix /xinweiblog)
7.etcdctl --help 中相關命令
role add 添加角色 role delete 刪除角色 role get 獲取一個角色的詳細信息 role grant-permission 給角色賦予一個key的管理權限 role list 列出所有的角色 role revoke-permission 收回角色對一個key的管理權限 user add 添加用戶 user delete 刪除用戶 user get 獲取一個用戶的詳細信息 user grant-role 給用戶賦予一個角色 user list 列出所有的用戶 user passwd 修改用戶密碼 user revoke-role 刪除用戶的角色