ETCD:基于角色的访问控制
原文地址:Role-based access control
总览
身份验证已添加到etcd 2.1中。 etcd v3 API略微修改了身份验证功能的API和用户界面,以更好地适应新的数据模型。本指南旨在帮助用户在etcd v3中设置基本身份验证和基于角色的访问控制。
特殊用户和角色
有一个特殊用户root
,一个特殊角色root
。
用户root
在激活身份验证之前,必须创建对etcd
具有完全访问权限的root
用户。 root
用户的想法是出于管理目的:管理角色和普通用户。 root
用户必须具有root
角色,并且可以在etcd
中进行任何更改。
角色root
可以将角色root
授予除root
用户之外的任何用户。 具有root
角色的用户既具有全局读写访问权限,又具有更新集群的身份验证配置的权限。 此外,root
角色授予常规集群维护的特权,包括修改集群成员资格,对存储进行碎片整理以及拍摄快照。
用户的工作方式
etcdctl
的user
子命令处理与用户帐户有关的所有事情。
可以通过以下方式找到用户列表:
$ etcdctl user list
通过以下方式创建新用户:
$ etcdctl user add myusername
创建新用户将提示您输入新密码。 当给出选项--interactive=false
时,可以从标准输入中提供密码。 --new-user-password
也可以用于提供密码。
可以通过以下方式为用户授予和撤消角色:
$ etcdctl user grant-role myusername foo
$ etcdctl user revoke-role myusername bar
可以使用以下命令检查用户的设置:
$ etcdctl user get myusername
用户密码可以通过以下方式更改:
$ etcdctl user passwd myusername
更改密码将再次提示您输入新密码。 当给出选项--interactive=false
时,可以从标准输入中提供密码。
通过以下方式删除帐户:
$ etcdctl user delete myusername
角色的工作方式:
etcdctl
的role
子命令处理与授予特定用户的特定角色的访问控制有关的所有事情。
列出角色:
$ etcdctl role list
创建一个新角色:
$ etcdctl role add myrolename
角色没有密码; 它仅定义了一组新的访问权限。
授予角色访问单个密钥或一系列密钥的权限。
范围可以指定为间隔[开始键,结束键],其中开始键应按字母顺序在词汇上小于结束键。
可以将访问权限授予读取,写入或同时授予两者,如以下示例所示:
# Give read access to a key /foo
$ etcdctl role grant-permission myrolename read /foo
# Give read access to keys with a prefix /foo/. The prefix is equal to the range [/foo/, /foo0)
$ etcdctl role grant-permission myrolename --prefix=true read /foo/
# Give write-only access to the key at /foo/bar
$ etcdctl role grant-permission myrolename write /foo/bar
# Give full access to keys in a range of [key1, key5)
$ etcdctl role grant-permission myrolename readwrite key1 key5
# Give full access to keys with a prefix /pub/
$ etcdctl role grant-permission myrolename --prefix=true readwrite /pub/
要查看授予的权限,我们可以随时查看该角色:
$ etcdctl role get myrolename
撤消权限是按照相同的逻辑方式完成的:
$ etcdctl role revoke-permission myrolename /foo/bar
就像完全删除一个角色一样:
$ etcdctl role delete myrolename
开启身份认证
启用身份验证的最少步骤如下。 管理员可以根据喜好在启用身份验证之前或之后设置用户和角色。
确保已创建root用户:
$ etcdctl user add root
Password of root:
开启身份认证
$ etcdctl auth enable
此后,etcd在启用身份验证的情况下运行。 要出于任何原因禁用它,请使用reciprocal命令:
$ etcdctl --user root:rootpw auth disable
使用etcdctl
进行身份验证
etcdctl
支持类似curl
的标志进行身份验证。
$ etcdctl --user user:password get foo
可以从提示符处获取密码:
$ etcdctl --user user get foo
密码也可以从命令行参数--password
获取:
$ etcdctl --user user --password password get foo
否则,所有etcdctl
命令均保持不变。 用户和角色仍然可以创建和修改,但是需要具有root
角色的用户进行身份验证。
使用TLS通用名称
从v3.2版本开始,如果使用参数--client-cert-auth=true
启动etcd服务器,则客户端的TLS证书中的“通用名称(CN)”字段将用作etcd用户。在这种情况下,公用名将对用户进行身份验证,并且客户端不需要密码。请注意,如果同时传递了1. --client-cert-auth=true
且客户端提供了CN,并且客户端提供了2.用户名和密码,则将优先考虑基于用户名和密码的身份验证。请注意,此功能不能与gRPC-proxy
和gRPC-gateway
一起使用。这是因为gRPC-proxy
会从其客户端终止TLS,因此所有客户端都共享代理证书。 gRPC-gateway
内部使用TLS连接将HTTP请求转换为gRPC请求,因此它具有相同的限制。因此,客户端不能正确地将其CN提供给服务器。如果给定证书的CN不为空,则gRPC-proxy
将导致错误并停止。 gRPC-proxy
返回错误,表明客户端证书中的CN为非空。
从v3.3版本开始,如果启用了带有选项--peer-cert-allowed-cn
或--peer-cert-allowed-hostname
的etcd
服务器启动,则对等节点连接筛选。如果节点的TLS证书身份与允许的节点匹配,则节点只能加入etcd集群。有关更多详细信息,请参见etcd安全性页面。
ETCD:基于角色的访问控制的更多相关文章
- RBAC基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- RBAC(Role-Based Access Control,基于角色的访问控制)
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- YIi 权限管理和基于角色的访问控制
验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...
- RBAC(Role-Based Access Control)基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- 移动服务和 Azure Active Directory 中基于角色的访问控制
编辑人员注释:本文章由 Matthew Henderson撰写 去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序.此举旨在为企业开 ...
- Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role
<Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...
- 基于角色的访问控制 (RBAC)权限管理
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- 普通程序员看k8s基于角色的访问控制(RBAC)
一.知识准备 ● 上一节描述了k8s的账户管理,本文描述基于角色的访问控制 ● 网上RBAC的文章非常多,具体概念大神们也解释得很详细,本文没有站在高屋建瓴的角度去描述RBAC,而是站在一个普通程序员 ...
- [PHP]基于角色的访问控制RBAC
---------------------------------------------------------------------------------------------------- ...
随机推荐
- go1.13 mod 实践和常见问题
实践建议 0,go mod 要求所有依赖的 import path 的path 以域名开头,如果现有项目转1.13的go mod 模式,且不是以域名开头则需要修改. eg: code.be.mingb ...
- CSS中@support的用法
这段时间一直在调试浏览器的兼容性问题,了解到了@support的这个属性,记录下: CSS中的@support主要是用于检测浏览器是否支持CSS的某个属性,其实就是条件判断,如果支持某个属性,你可以写 ...
- NodeJS2-5环境&调试----process(进程)
argv(参数相关的) /* argv argv0 execArgv execPath */ const { argv, argv0, execArgv, execPath } = process; ...
- SpringBoot电商项目实战 — 商品的SPU/SKU实现
最近事情有点多,所以系列文章已停止好多天了.今天我们继续Springboot电商项目实战系列文章.到目前为止,整个项目的架构和基础服务已经全部实现,分布式锁也已经讲过了.那么,现在应该到数据库设计及代 ...
- minicom配置1500000波特率
背景 项目需求,得用1500000波特率进行,即1.5M的波特率进行串口通信. 最开始以为minicom不支持,因为第一眼在配置界面的选项中没看见.后来发现其实是支持的 方式一 启动时带参数 -b 1 ...
- 从《彩色圆环》一题探讨一类环上dp的解法
清橙A1202 bzoj2201 bsoj4074 试题来源 2010中国国家集训队命题答辩 问题描述 小A喜欢收集宝物.一天他得到了一个圆环,圆环上有N颗彩色宝石,闪闪发光.小A很爱惜这个圆环,天天 ...
- ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
题外话 笔者有个习惯,就是在接触新的东西时,一定要先搞清楚新事物的基本概念和背景,对之有个相对全面的了解之后再开始进入实际的编码,这样做最主要的原因是尽量避免由于对新事物的认知误区导致更大的缺陷,Bu ...
- docker安装redis 5.0.7并挂载外部配置和数据
环境 CentOS Linux release 7.7.1908 (Core) 拉取redis 5.0.7 镜像 docker pull redis:5.0.7 创建挂载目录 mkdir -p /ho ...
- ESP8266的RTOS版本ota在线升级基本流程及备忘
ESP8266的ota升级由于涉及到不同的flash空间大小,以及新旧版本的不同,所以流程相对比较复杂.笔者这个倒腾的时间还是有一些的,不过,总归把事情解决了.下面记录一下基本的流程和遇到的问题. 还 ...
- kibana的query string syntax 笔记
kibana的query string syntax 并不是 Query String Query,只能说类似.kibana的 Lucene query string syntax(es的query ...