ETCD 安全
访问安全
ETCD包含的三种类型资源,具体如下:
- 权限资源:表示用户和角色信息
- 键值资源:表示键值对数据信息
- 配置资源:安全配置信息,权限配置信息和etcd集群动态配置信息
权限资源
User(用户)是一个别授予权限的的身份,每个用户都可以拥有多个角色。用户操作资源的权限是根据该用户所具有的角色来确定的,分为root用户和非root用户。
root用户是ETCD提供是一个特殊用户,在安全功能被激活之前必须创建root用户,否则会无法启用身份认证功能。
Role(角色)来关联权限。etcd的每个角色都具有相对应的权限列表,这个权限列表定义了角色对键值资源的访问权限。在etcd中,角色主要分为三类:root角色,guest角色和普通角色。etcd默认会创建其中两种特殊角色root和guest。
root角色,默认创建root用户即创建了root角色,并为其绑定了该角色,该角色拥有所有权限;
guest角色,默认自动创建,主要用于非认证使用。
普通角色,由root用户创建,并由root用户分配指定权限。
root角色具有对所有键值资源的完整权限,而且只有root角色具有管理用户资源和配置资源的权限,root角色是内置的,不需要被创建而且不能被篡改,但是可以授予任务用户相同的权限。
guest角色是自动创建的。guest角色针对为经身份认证的请求提供访问etcd的权限,即如果没有指定任何验证方式和用户访问etcd数据库,那么请求方默认会被设定为guest角色。默认情况下,guest角色具有对etcd所有键值资源的全局访问权限。如果不希望未授权就获取或修改etcd的数据,那么guest角色可以被持有root角色的用户在任何时间进行修改,撤销甚至删除该角色,以减少未经授权的用户的能力
// 撤销guest权限
etcdctl role revoke guest
Permiession(权限):读和写,对全限定所有管理和设置都需要通过root角色来实现,权限列表是一个许可的特定权限的列表
键值资源
etcd支持key值的前缀和精确匹配,其中前缀字符串以"*"结尾
配置资源
配置资源存放着整个集群的特定配置信息,包括添加,删除集群成员,启动禁用认证,替换证书和其他由管理员维护的动态配置信息等
etcd访问控制常用命令
User相关命令
获取users账号列表
etcdctl user list
创建user
etcdct user add demouser
授予用户对应的角色
etcdctl user grant demouser -roles role1,role2,role3
撤销用户角色
etcdctl user revoke demouser -roles role1,role2
获取用户的详细信息
etcdctl user get demouser
修改密码
etcdctl user passwd demouser
删除用户
etcdctl user remove demouser
Role相关命令
列出系统所有的角色
etcdctl role list
创建角色
etcdctl role add demorole
授予对key /foo的只读权限
etcdctl role grant-permission demorole read /foo
授予以/foo为前缀的所有key的只读权限
etcdctl role grant-permission demorole --prefix=true read /foo
授予对key /foo/demo的只写权限
etcdctl role grant-permission demorole write /foo/demo
授予对key [key1,key10) 的读写权限
etcdctl role grant-permission demorole readwrite key1 key10
授予以/demo/ 为前缀的key的读写权限
etcdctl role grant-permission demorole -path '/demo/*' -readwrite
查看角色权限
etcdctl role get demorole
收回role权限
etcdctl role revoke-permission demorole /foo/demo
完全移除一个角色(包括role的所有权限)
etcdctl role remove demorole
启用用户权限功能
确认root用户已经创建
etcdctl user add root
启用权限功能
etcdctl auth enable
关闭认证功能
etcdctl -u root:rootpw auth disable
案例
etcdctl user add root
etcdctl auth enable
etcdct user add demouser
etcdctl -u root:rootpw role add demorole
etcdctl -u root:rootpw role grant-permission demorole read /a
etcdctl -u root:rootpw user grant demouser -roles demorole
版权归原作者 to-and-fro 所有, 如有侵权,请联系我们删除。