1. 程式人生 > 其它 >etcd基於角色的許可權控制

etcd基於角色的許可權控制

官方文件: 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    刪除使用者的角色