开启etcd基于角色的权限控制- Basic Auth身份认证

概述

身份认证是在 etcd 2.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子命令处理与用户帐户有关的所有事情。

用户列表

$ etcdctl user list

创建用户

$ etcdctl user add 用户名

创建用户时需要提供一个密码,如果使用 --interactive=false选项,支持从标准输入提供,也可以使用 --new-user-password 选项提供

# --new-user-password
$ etcdctl --user root:123456 user add xinwei --new-user-password 123456
# --interactive=false
$ etcdctl --interactive=false --user root:123456 user passwd xinwei < /etc/etcd/passwd/xinwei 

添加和删除用户角色

$ etcdctl user grant-role 用户名 角色名
$ etcdctl user revoke-role 用户名 角色名

角色管理

列出角色

$ etcdctl role list

创建新角色

$ 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/

删除一个角色的权限

$ etcdctl role revoke-permission 角色名 /foo/bar

删除角色

$ etcdctl role delete 角色名

完整添加普通用户权限的步骤:

  1. 添加角色 role
  2. 给角色授权 role grant-permission
  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 xinwei xinweiblog

列出已存在用户:

$  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)

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	删除用户的角色

官方文档: https://etcd.io/docs/v3.4.0/op-guide/authentication/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值