原文地址: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角色授予常规集群维护的特权,包括修改集群成员资格,对存储进行碎片整理以及拍摄快照。

用户的工作方式


etcdctluser子命令处理与用户帐户有关的所有事情。

可以通过以下方式找到用户列表:

$ 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

角色的工作方式:


etcdctlrole子命令处理与授予特定用户的特定角色的访问控制有关的所有事情。

列出角色:

$ 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-proxygRPC-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-hostnameetcd服务器启动,则对等节点连接筛选。如果节点的TLS证书身份与允许的节点匹配,则节点只能加入etcd集群。有关更多详细信息,请参见etcd安全性页面

ETCD:基于角色的访问控制的更多相关文章

  1. RBAC基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  2. RBAC(Role-Based Access Control,基于角色的访问控制)

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  3. YIi 权限管理和基于角色的访问控制

    验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...

  4. RBAC(Role-Based Access Control)基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  5. 移动服务和 Azure Active Directory 中基于角色的访问控制

    编辑人员注释:本文章由 Matthew Henderson撰写 去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序.此举旨在为企业开 ...

  6. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role

    <Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...

  7. 基于角色的访问控制 (RBAC)权限管理

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  8. 普通程序员看k8s基于角色的访问控制(RBAC)

    一.知识准备 ● 上一节描述了k8s的账户管理,本文描述基于角色的访问控制 ● 网上RBAC的文章非常多,具体概念大神们也解释得很详细,本文没有站在高屋建瓴的角度去描述RBAC,而是站在一个普通程序员 ...

  9. [PHP]基于角色的访问控制RBAC

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. liunx新装tomcat之后,tomcat不能识别新发布的项目

    遇到的问题 在liunx新装tomcat之后,发布之前的项目,发现在tomcat不能识别新发布的项目,打成war包,还是直接把项目拷贝过去都不行. 环境:虚拟机:VMware 主机系统:win10 虚 ...

  2. python学习-dict

    a = ["秦时明月","长沙","女"]bafenshu = ["八分熟","上海"," ...

  3. sql语句对int类型进行模糊查询

    重点:select * from course where cast(courseId as char) like '%118%'; 首先可以将int类型转换为string类型的值再进行模糊查询,用方 ...

  4. 《Java基础知识》Java技术总结

    1. Java 知识点总结 Java标示符.保留字和数制:https://www.cnblogs.com/jssj/p/11114041.html Java数据类型以及变量的定义:https://ww ...

  5. linux环境下zookeeper下载安装

    步骤一:安装配置jdk环境 1.下载解压jdk-8u221-linux-x64.tar.gz 2.打开 配置文件,vim /etc/profile,添加如下配置,添加完成记得source /etc/p ...

  6. JavaScript实现动态轮播图效果

    功能描述: 1.鼠标经过 左右侧箭头显示,鼠标离开 箭头隐藏 2.动态添加底部小圆圈并绑定单击事件,并且让小圆圈的点击事件和左右箭头点击事件同步 3.拷贝第一张图片添加到ul最后可以实现动态添加图片 ...

  7. git 常用操作汇总

    1. 如何查看当前分支是从哪个分支创建来的?  git reflog --date=local 当前分支名称 2. 查看当前分支 git branch 当前分支前面会显示 * 号  3.切换到某个分支 ...

  8. Linux下修改MySQL数据库数据文件路径

    使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysq ...

  9. 面试连环炮系列(六):Dubbo应用为什么要部署Zookeeper

    Dubbo应用为什么要部署Zookeeper? Zookeeper用来注册和发现服务,简单说就是提供端注册接口信息到Zookeeper,调用端在Zookeeper上查找接口对应的服务IP和端口.由于Z ...

  10. Graylog 笔记

    安装 基本上有3种方式,1 yum安装2 rpm安装3 docker安装 yum安装 yum安装,参照官方文档是最好的:http://docs.graylog.org/en/3.0/pages/ins ...