etcd基於角色的許可權控制
阿新 • • 發佈:2022-01-06
官方文件: 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 刪除使用者的角色