etcd
etcd集群部署
Etcd安全配置之Basic Auth认证
etcd 客户端
本文档使用 MrDoc 发布
-
+
首页
Etcd安全配置之Basic Auth认证
## 认证说明 1. Etcd v2以上的版本才支持权限认证,且仅支持Basic Auth 2. Etcd通过用户(user)-角色(role)-权限的方式来控制访问,用户关联角色,角色拥有权限,从而用户也就拥有了相应的权限 3. Etcd默认没有启用认证机制,只要能连接etcd服务就拥有所有的权限,还是非常危险的,另一种安全的访问方式是开启ssl,只有使用受信任的证书才能访问数据 4. Etcd开启Basic Auth之后,默认会启用两个角色root和guest,root角色拥有所有权限,guest拥有只读权限,这两个角色都不要删除,否则你可能会遇到意想不到的Bug 5. Etcd的权限分为只读、只写、可读写,可以对etcd的详细key进行授权,例如:/conf/project/dev/nginx.conf,也可以授权key前缀(目录),例如:/conf/project/,授权规则应以最小满足需求为准则 ## 详细步骤 1.添加root用户 ``` # etcdctl user add root New password: 12345 User root created ``` 2.创建root账号后,root默认有root角色,对所有KV有读写权限 ``` nestedtext复制代码# etcdctl user get root User: root Roles: root # etcdctl role get root Role: root KV Read: /* KV Write: /* ``` 3.开启auth认证 ``` nginx复制代码# etcdctl auth enable Authentication Enabled 开启权限认证后默认会多一个guest的角色 # etcdctl --username root:12345 role list guest root ``` 4.添加非root账号,一个authz的账号,一个readx的账号 ``` crmsh复制代码# etcdctl --username root:12345 user add authz New password: User authz created # etcdctl --username root:12345 user add readx New password: User readx created ``` 5.添加角色,一个rootConf的角色,一个readConf的角色 ``` crmsh复制代码# etcdctl --username root:12345 role add rootConf Role rootConf created # etcdctl --username root:12345 role add readConf Role readConf created ``` 6.为角色授权,readConf角色对/conf有只读权限,rootConf角色对/conf有读写权限 ``` crmsh复制代码# etcdctl --username root:12345 role grant --read --path /conf/* readConf Role readConf updated # etcdctl --username root:12345 role grant --readwrite --path /conf/* rootConf Role rootConf updated ``` 7.给用户分配角色,authz账号分配rootConf角色,readx账号分配readConf角色 ``` crmsh复制代码# etcdctl --username root:12345 user grant --roles rootConf authz User authz updated # etcdctl --username root:12345 user grant --roles readConf readx User readx updated ``` 8.查看用户所拥有的角色 ``` avrasm复制代码# etcdctl --username root:12345 user get authz User: authz Roles: rootConf # etcdctl --username root:12345 user get readx User: readx Roles: readConf ``` 这样readx账号就对/conf下的所有文件有了只读权限,authz对/conf下的所有文件有了读写权限 ## 常用命令 有一些命令上边没有介绍到,会用得到的如下: 1.关闭认证 ``` shell复制代码# etcdctl --username root:12345 auth disable ``` 2.删除用户 ``` vim复制代码# etcdctl --username root:12345 user remove userx ``` 3.用户撤销角色 ``` 1c复制代码# etcdctl --username root:12345 user revoke rolex ``` 4.修改用户密码 ``` 1c复制代码# etcdctl --username root:12345 user passwd ``` 同时还有删除角色、撤销角色权限可参看上边用户相关操作 # 踩坑记录 在开启认证后发现系统默认给添加了guest角色,觉得guest角色没用就给删除了,于是再连接etcd集群时就报如下错误: 报错:The request requires user authentication (Insufficient credentials) 解决:重新添加guest角色
admin
2023年6月28日 17:36
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码