跟 redis 一样 etcd 默认是灭有开启权限验证的 放到互联网上还是很不安全的 所以这一篇就谢谢 auth 权限验证;

权限命令

可以为 etcd 创建多个用户并设置密码,子命令有:

  • add 添加用户
  • delete 删除用户
  • get 取得用户详情
  • list 列出所有用户
  • passwd 修改用户密码
  • grant-role 给用户分配角色
  • revoke-role 给用户移除角色

role

可以为 etcd 创建多个角色并设置权限,子命令有:

  • add 添加角色
  • delete 删除角色
  • get 取得角色信息
  • list 列出所有角色
  • grant-permission 为角色设置某个 key 的权限
  • revoke-permission 为角色移除某个 key 的权限

auth

开启 / 关闭权限控制

示例

下面以示例来学习这三个命令

root用户存在时才能开启权限控制
$ etcdctl auth enable
Error:  etcdserver: root user does not exist

$ etcdctl user add root
Password of root: 
Type password of root again for confirmation: 
User root created

$ etcdctl auth enable
Authentication Enabled

开启权限控制后需要用--user指定用户
$ etcdctl user list
Error:  etcdserver: user name not found

$ etcdctl user list --user=root
Password: 
root

$ etcdctl user get root --user=root
Password: 
User: root
Roles: root

添加用户,前两个密码是新用户的,后一个密码是root的
$ etcdctl user add mengyuan --user=root
Password of mengyuan: 
Type password of mengyuan again for confirmation: 
Password: 
User mengyuan created

使用新用户执行put命令,提示没有权限
$ etcdctl put key1 v1 --user=mengyuan
Password: 
Error:  etcdserver: permission denied

创建名为rw_key_的role,添加对字符串"key"做为前缀的key的读写权限,为mengyuan添加角色
$ etcdctl role add rw_key_ --user=root
Password: 
Role rw_key_ created

$ etcdctl --user=root role grant-permission rw_key_ readwrite key --prefix=true
Password: 
Role rw_key_ updated

$ etcdctl --user=root user grant-role mengyuan rw_key_
Password: 
Role rw_key_ is granted to user mengyuan

添加权限成功后执行put key1成功,执行put k1失败(因为上面只给前缀为"key"的key添加了权限)
$ etcdctl put key1 v1 --user=mengyuan
Password: 
OK

$ etcdctl put k1 v1 --user=mengyuan
Password: 
Error:  etcdserver: permission denied

执行user list命令失败,没有权限
$ etcdctl user list --user=mengyuan
Password: 
Error:  etcdserver: permission denied
为新用户添加root的角色后就能执行user list命令了,注意命令中第一个root是角色,第二个root是用户

$ etcdctl user grant-role mengyuan root --user=root
Password: 
Role root is granted to user mengyuan

$ etcdctl user list --user=mengyuan
Password: 
mengyuan
root

英文手册上写的也已经非常详细明白了,上边的总结也是比较全面的
etcd.io/docs/v3.4.0/demo/#auth

转自:https://learnku.com/articles/48770