原文地址: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. Django forms组件与钩子函数

    目录 一.多对多的三种创建方式 1. 全自动 2. 纯手撸(了解) 3. 半自动(强烈推荐) 二.forms组件 1. 如何使用forms组件 2. 使用forms组件校验数据 3. 使用forms组 ...

  2. svn下载多模块及依赖框架的项目

    安装TortoiseSVN之后,在新建的文件里右键svn checkout 输入公司配给的svn地址.用户名.密码 需要分模块下载的项目在地址后面的三个...中选择需要下载的项目,点击OK等待下载完成

  3. 字符串的扩展(ES6)

    文章目录 字符串的扩展 1. 字符的Unicode表示法 2. codePointAt() 3. String.fromCodePoint() 4. 字符串的遍历器接口 5. at()(提案) 6. ...

  4. webpack构建原理和实现简单webpack

    webpack打包原理分析 基础配置,webpack会读取配置 (找到入口模块) 如:读取webpack.config.js配置文件: const path = require("path& ...

  5. Python基础-day01-5

    注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...

  6. C# 生成全球唯一标识符GUID

    string strguid = Guid.NewGuid().ToString();//57d99d89-caab-482a-a0e9-a0a803eed3ba 生成标准的标志符 (36位标准)st ...

  7. JS Math对象、日期对象、函数、定时器

    Math对象 开平方:sqrt 绝对值:abs π:PI x的y次方:pow 四舍五入取整:round 向下取整:floor 向上取整:ceil 最大值:max 最小值: min 随机数:random ...

  8. 'OracleInternal.MTS.DTCPSPEManager' 类型初始值设定项引发异常

    环境:VS2010,.NET Framework 4.0,Oracle.ManagedDataAccess    在最近做一个项目中,用到了Oracle数据库,使用Oracle.ManagedData ...

  9. LAMP环境搭建与配置(1)

    安装和配置MySQL.Apache.PHP 概念 LAMP是Linux Apache MySQL PHP 的简写,把Apache.MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的 ...

  10. 关于使用DB2数据库的项目后台报-420错误码的问题

    ###  Error querying database.  Cause: com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-4 ...