权限系统概念
https://github.com/coreos/etcd/blob/master/Documentation/v2/authentication.md etcd权限-官方文档
etcd 2.X以前是不带权限的,2.X以上的版本才支持权限
etcd通过设置用户-角色关联,角色和权限关联,通过设置这些信息,使得指定的用户对某些目录拥有指定的权限。
etcd默认不启用权限机制,需要手动启用。
拥有一个个特殊的用户 root,拥有两个特殊的角色root和guest,root用户必须在启用权限系统前创建
角色 role
对于root角色的权限是不能被修改的,root角色拥有所有系统权限,是系统管理员。
guest角色则被认为是所有'''不带账号的请求'''的默认角色,其权限可以在任何时候被修改,一旦权限策略上线,默认其拥有只读权限(否则你上权限就没意义了)。
其他角色可以通过root 用户去申请,并绑定到相应的用户下,则可以保护系统的安全,防止误删除和越权删除key的发生
用户 user
默认的root用户拥有所有权限
其他用户可以通过root用户去创建
用户拥有哪些权限需要通过赋予指定的角色去获取权限,一个用户可以有多个角色
权限
角色可以设置权限,权限分为读、写、读写,权限的基础是etcd的key,一般普通用户只对某些key的目录拥有写权限,读权限不做限制。
权限接入需要的API改造
数据接口的调用一切如故,只是需要输入用户和密码的
在申请到用户并拿到密码后,根据不同的文档调用
etcd仅支持 '''Basic Auth''' 的认证方式
请求增加header Authorization ; 内容为 "Basic "+base64encode("user:password")
有提供SDK的语言,一般支持在配置里指定用户密码类似go sdk,没有实现的,参考python实现改造一下。
shell
curl 中使用 -u user:password
python
import base64 def basic_auth(name,passwd): return "Basic %s"%(base64.encodestring('%s:%s'%(name,passwd)))
value={} value['laji']='laji' value['value']="u value" data = urllib.urlencode(value) length = len(data)+2 req = urllib2.Request(url,data) auth = basic_auth('u user','u password') req.add_header('Authorization',auth) req.add_header('Content-Length',length) resp = urllib2.urlopen(req) |
urllib库会把 Authorization 头放在最后一个,这个头又有一个换行符号,打乱了整个数据的截取。可能导致value传了但变成空,才有了以上如此怪异的纠正方法。。
requests库会有类似的问题,根据具体的抓包分析来解决。。
go api
使用 官方的go sdk
cfg := client.Config{ Endpoints: []string{"http://XXX.XX.XXX.XX:2379"},
Transport: client.DefaultTransport,
// set timeout per request to fail fast when the target endpoint is unavailable
HeaderTimeoutPerRequest: time.Second,
Username: "XXX",
Password: "XXX",
} |
config中增加用户名和密码
相关实现参考
https://segmentfault.com/a/1190000004362731 HTTP Basic Auth 小实验
http://smalltalllong.iteye.com/blog/912046 java实现basic auth
权限系统上线步骤 #号表示你用来调用etcdctl的相关内容
#user add root 创建root账号
#auth enable 启动权限
#user add userName 创建账户
#role add roleName 创建角色
#role grant roleName -path 'XXX' -{write|read|readwrite} 为角色设置权限
#user grant userName -roles roleName,roleName2,... 为账户赋予指定的角色
#完成写权限需求的项目的改造工作
#role revoke guest -path '*' -write 修改guest角色的权限为只读
申请账号流程
#提供 账号名和密码
#提供 需要访问的目录路径或者具体的key的路径
#申请成功后,在项目中加入账号密码访问
操作使用/usr/bin/etcdctl -u root:密码 * * *
管理员执行命令步骤,以test用户申请权限为例(权限路径 /test/*):
#role add rTest
#role grant rTest-path '*' -read
#role grant rTest-path '/test/*' -write
#role get rTest(查看该赋予的权限是否都正确,通常保留*的读权限,仅保留指定目录的写权限)
#user add test(给句提供的账号密码创建用户)
#user grant test -roles rTest用户和角色绑定
#user get test查看绑定的结果
如果用户已经有了,只是要新增某些目录的权限(比如为test增加test2目录的权限):
#role add rTest2
#role grant rTest2-path '*' -read
#role grant rTest2-path '/test2/*' -write
#role get rTest2
#user grant test -roles rTest2
#user get test 查看绑定的结果
其他操作流程
#修改密码 user passwd myusername
#删除用户 user remove myusername
#删除角色 role remove myrolename
相关推荐
etcdjs, 在具有故障转移支持的Javascript中,编写了低级别 etcd v2客户端 etcdjs低级别 etcd v2 &客户端,用Javascript编写,支持故障转移npm install etcdjs用法传递连接字符串var etcdjs = require('etcdjs'
管理系统系列--基于etcd的配置管理系统 (etcd v2)
基于Spring RestTemplate的etcd客户端 要使用此功能, me.itzg.etcd.EtcdService配置为Spring Bean。
同时支持etcd v3 v2 版本,全网唯一支持后悔药的etcd ui
RedGlovePermission V2 权限管理系统源码 在编写管理信统软件中,您是否对于繁琐的多用户权限管理而头痛?需要对不同的用户设置不同的权限,需要添加/删除用户,并进行相应的管理.您是否对这些功能感到厌烦? 现在,RGP...
容器每次运行时都会覆盖相同的S3对象,建议您打开版本控制以保留对先前副本的访问权限。 公共注册表中的现有映像位于 。 备份etcd 要备份etcd,您只需运行: $ docker run -e AWS_ACCESS_KEY_ID="key" -e AWS_...
基于超图划分的车联网V2I_V2V资源共享机制研究.pdf
基于Android V2签名机制的应用签名系统的设计与实现.pdf
本书还介绍HTIP 编程基础和etcd-ra 的即模块的工作原理及具体实现,以及etcd中如何处理WAL 日志文件及快照数据文件,并且详细分析etcd 的底层存储,对v2 版本和v3 版本的存储都做了详细的介绍。最后重点介绍etc d ...
ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点,引入Northwind作为主要的数据演示模块。权限方面,在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。
等版本支持该项目支持任何支持etcd v2 api的etcd客户端。 这是从 etcd 0.3 到 2.x 的任何 etcd 版本下载玛文< dependency> < groupId>org.mousio</ groupId> < artifactId>etcd4j</ artifactId> < version>2.15.0...
ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2 驱动程序ST-LINK V2...
一种无线通信V2X仿真场景建模与动态机制,孟祥芬,王智立,针对无一种无线通信V2X仿真场景建模与动态机制一种无线通信V2X仿真场景建模与动态机制线通信仿真中的复杂场景V2X,考虑车辆内、车辆
etcd v2已移动 etcd是用于共享配置和服务发现的分布式一致键值存储,重点是: 简单:定义明确,面向用户的API(gRPC) 安全:具有可选客户端证书身份验证的自动TLS 快速:基准10,000次写入/秒可靠:使用Raft正确...
使用方法请关注blog: https://blog.csdn.net/wenwst 导入命令: #docker load < etcd.3.2.24.tar # ocker tag 3cab8e1b9802 k8s.gcr.io/etcd:3.2.24
请注意,当前不支持ETCD V2 API! 目前,我们仅支持V3 。 特征 现在可用(v1.2) 当前,实现了以下功能: 密钥管理: 管理(浏览,创建,编辑,删除)密钥。 使用TTL创建密钥关键浏览器具有多个视图:树或带分页的...
该模块支持 etcd API v2。 依赖关系 光环: : 工具: : 路径: : httpcli: lua-cjson: ://www.kyne.com.au/~mark/software/lua-cjson.php 安装 luarocks install etcd --from=...
TP WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR7400 v2原厂编程器固件WDR...
mp4v2库 libmp4v2.dll win32 win64及头文件 mp4v2库 libmp4v2.dll win32 win64及头文件