`
ZeaLoVe
  • 浏览: 91584 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

etcd v2权限机制

    博客分类:
  • etcd
 
阅读更多

 权限系统概念

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

分享到:
评论

相关推荐

    管理系统系列--基于etcd的配置管理系统 (etcd v2).zip

    【管理系统系列--基于etcd的配置管理系统 (etcd v2)】 etcd是一个分布式的、一致性的键值存储系统,最初由CoreOS开发并维护,现已成为云原生计算基金会(CNCF)的重要项目之一。它主要用于分布式系统中的服务发现和...

    etcdjs, 在具有故障转移支持的Javascript中,编写了低级别 etcd v2客户端.zip

    etcdjs, 在具有故障转移支持的Javascript中,编写了低级别 etcd v2客户端 etcdjs低级别 etcd v2 &客户端,用Javascript编写,支持故障转移npm install etcdjs用法传递连接字符串var etcdjs = require('etcdjs'

    spring-etcd:基于Spring RestTemplate的etcd v2客户端

    本项目"spring-etcd"则是将这两者结合,提供了一个基于Spring RestTemplate的Etcd v2客户端,使得Java开发者可以更方便地与Etcd进行交互。 首先,我们来理解Spring RestTemplate。RestTemplate是Spring提供的一个...

    Go-同时支持etcdv3v2版本全网唯一支持后悔药的etcdui

    《Go语言实现:全网唯一支持etcd v3 & v2 的后悔药功能etcdui详解》 在分布式系统中,etcd作为一个高可用的键值存储系统,被广泛用于服务发现、配置共享等场景。它支持两种主要的API版本:v2和v3。随着etcd的发展,...

    etcd实战及其原理分析.pdf

    etcd支持权限控制,可以设置用户、角色和权限,确保系统安全。 【etcd核心原理分析】 3.1 etcd概念词汇表 理解etcd的核心概念,如raft、MVCC、Lease等,有助于深入掌握其工作原理。 3.2 etcd读请求执行流程 读...

    基于Android V2签名机制的应用签名系统的设计与实现.pdf

    Android V2签名机制是Android应用开发中的一个重要环节,特别是在Android 7.0及更高版本中。数字签名在保障应用安全方面起着至关重要的作用,确保应用的来源可信,并且在更新时保持一致性。未签名的应用无法在...

    RedGlovePermission V2 权限管理系统源码

    RedGlovePermission V2 权限管理系统源码 在编写管理信统软件中,您是否对于繁琐的多用户权限管理而头痛?需要对不同的用户设置不同的权限,需要添加/删除用户,并进行相应的管理.您是否对这些功能感到厌烦? 现在,RGP...

    基于超图划分的车联网V2I_V2V资源共享机制研究.pdf

    本文的研究正是针对这些问题,提出了基于超图划分的车联网V2I/V2V资源共享机制。 首先,超图作为图论的一个扩展概念,能够处理节点之间多对多的关系,而不仅仅是传统的两两关系。在车联网V2I/V2V资源共享中,超图...

    docker-etcd-backup:将etcd配置备份到S3的容器

    容器每次运行时都会覆盖相同的S3对象,建议您打开版本控制以保留对先前副本的访问权限。 公共注册表中的现有映像位于 。 备份etcd 要备份etcd,您只需运行: $ docker run -e AWS_ACCESS_KEY_ID="key" -e AWS_...

    mp4v2-Release-MP4v2-3.0.1.1.tar.gz_mp4v2_mp4v2下载

    MP4v2库提供了错误检测机制,并在可能的情况下尝试修复文件。 7. **API接口**:MP4v2库提供了丰富的编程接口,开发者可以使用C++或Python等语言与其交互,实现对MP4文件的定制化操作。 8. **跨平台性**:作为开源...

    《etcd技术内幕》_百里燊.zip

    本书还介绍HTIP 编程基础和etcd-ra 的即模块的工作原理及具体实现,以及etcd中如何处理WAL 日志文件及快照数据文件,并且详细分析etcd 的底层存储,对v2 版本和v3 版本的存储都做了详细的介绍。最后重点介绍etc d ...

    etcd-v3.0.9-windows-amd64.zip

    1. **API升级**:从v2到v3的转变引入了新的API接口,支持事务(Transactions)、watch机制的增强,以及更强大的键空间操作,如范围查询。 2. **gRPC支持**:etcd v3完全基于gRPC,这是一种高性能、通用的开源RPC...

    基于ligerui的系统应用案例ligerRM V2 权限管理系统

    ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点,引入Northwind作为主要的数据演示模块。权限方面,在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。

    etcd4j:用于 etcd 的 Java Netty 客户端,用于共享配置和服务发现的高可用键值存储

    等版本支持该项目支持任何支持etcd v2 api的etcd客户端。 这是从 etcd 0.3 到 2.x 的任何 etcd 版本下载玛文< dependency> < groupId>org.mousio</ groupId> < artifactId>etcd4j</ artifactId> < version>2.15.0...

    论文研究-一种无线通信V2X仿真场景建模与动态机制 .pdf

    孟祥芬与王智立的这篇论文,专注于V2X场景下的仿真建模和动态机制研究,旨在通过计算机仿真技术对V2X通信场景进行抽象建模,以及创建可以模拟真实交通网络状况的动态仿真场景。 1. V2X通信场景建模 在V2X通信场景的...

    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 驱动程序ST-LINK V2...

    etcd-v3.1.7-linux-amd64.tar.gz

    在OpenStack环境中,etcd常被用作关键组件,为OpenStack的各个服务提供可靠的数据存储和同步机制。 在OpenStack的部署过程中,由于其组件众多且依赖复杂,网络环境的影响尤为显著。"etcd-v3.1.7-linux-amd64.tar.gz...

    mp4v2库 libmp4v2.dll

    《深入理解mp4v2库与libmp4v2.dll:构建多媒体处理的基石》 在数字媒体领域,MP4格式已经成为广泛使用的视频和音频存储标准。为了方便开发者处理MP4文件,诞生了mp4v2库,其中的核心组件便是libmp4v2.dll动态链接库...

    视皮层v2区特性

    具体来说,V2区通过非线性依赖关系的移除机制来实现这一过程,其中包括局部邻域内的线性机制,以及生物合理性较强的除法归一化机制。 3. **角度刺激响应模拟**:研究者利用一个两层模型网络来模拟V2区神经元对角度...

Global site tag (gtag.js) - Google Analytics