ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

etcd基于角色的权限控制

2022-01-06 11:31:26  阅读:212  来源: 互联网

标签:角色 -- etcdctl role user etcd 权限 root


官方文档: 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    删除用户的角色

 

 

 

 

标签:角色,--,etcdctl,role,user,etcd,权限,root
来源: https://www.cnblogs.com/Alayman/p/15770343.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有