【ETCD】ETCD用户密码认证

目录

概述

特殊用户和角色

root用户

root角色

用户操作

角色操作

启用身份验证

使用etcdctl进行身份验证

使用TLS通用名称


概述


etcd 2.1中增加了身份验证功能。etcd v3 API对身份验证功能的API和用户界面进行了轻微修改,以更好地适应新的数据模型。本指南旨在帮助用户在etcd v3中设置基本身份验证和基于角色的访问控制。

特殊用户和角色

有一个特殊用户root和一个特殊角色root。

root用户

root用户拥有对etcd的完全访问权限,必须在启用身份验证之前创建。root用户的理念是用于管理角色和普通用户。root用户必须具有root角色,并允许更改etcd内的任何内容。

root角色

除了root用户外,还可以将root角色授予任何用户。具有root角色的用户具有全局读写访问权限以及更新集群身份验证配置的权限。此外,root角色还授予一般集群维护的特权,包括修改集群成员、对存储进行碎片整理以及拍摄快照。

用户操作


etcdctl的用户子命令处理与用户帐户有关的所有事项。

可以使用以下命令列出用户:

$ etcdctl user list
root


创建用户非常简单,只需运行:

# 创建用户 yanhaihang
$ etcdctl user add yanhaihang
Password of yanhaihang:
Type password of yanhaihang again for confirmation:
User yanhaihang created


创建新用户时会提示输入新密码。当给出--interactive=false选项时,可以从标准输入提供密码。也可以使用--new-user-password选项提供密码。

可以使用以下命令为用户授予和撤销角色:

# 授予
$ etcdctl user grant-role  yanhaihang role_yhh
Role role_yhh is granted to user yanhaihang# 撤销etcdctl user revoke-role   yanhaihang role_yhh
Role role_yhh is revoked from user yanhaihang

可以使用以下命令检查用户的设置:

$ etcdctl user get yanhaihang
User: yanhaihang
Roles: role_yhh$ etcdctl user get root
User: root
Roles:

并且可以使用以下命令更改用户的密码:

$ etcdctl user passwd yanhaihang
Password of yanhaihang:
Type password of yanhaihang again for confirmation:
Password updated

更改密码会再次提示输入新密码。当给出--interactive=false选项时,可以从标准输入提供密码。

使用以下命令删除帐户:

$ etcdctl user delete yanhaihang
User yanhaihang deleted

角色操作


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

可以使用以下命令列出角色:

$  etcdctl role list
role_yhh
root

可以使用以下命令创建新角色:

# 创建root 角色$ etcdctl role add root
Role root created

角色没有密码;它只是定义了一组新的访问权限。

角色被授予对单个键或一系列键的访问权限。

范围可以指定为区间[start-key, end-key),其中start-key在字母顺序上应小于end-key。

可以像以下示例中那样授予读取、写入或两者的访问权限:

# 授予对键/foo的读取访问权限$ etcdctl role grant-permission role_yhh read /foo
Role role_yhh updated# 授予对以/foo/为前缀的键的读取访问权限。前缀等于范围[/foo/, /foo0)$ etcdctl role grant-permission role_yhh  --prefix=true read /foo/
Role role_yhh updated# 授予对/foo/bar处的键的仅写入访问权限$ etcdctl role grant-permission role_yhh  write /foo/bar
Role role_yhh updated# 授予对[key1, key5)范围内的键的完全访问权限$ etcdctl role grant-permission role_yhh readwrite key1 key5
Role role_yhh updated# 授予对以/pub/为前缀的键的完全访问权限etcdctl role grant-permission role_yhh --prefix=true readwrite /pub/# 要查看授予的内容,我们可以随时查看角色:
$ etcdctl role get  role_yhh
Role role_yhh
KV Read:/foo[/foo/, /foo0) (prefix /foo/)[key1, key5)
KV Write:/foo/bar[key1, key5)# 撤销权限的逻辑方式与授予权限相同:
$ etcdctl role revoke-permission role_yhh  /foo/bar
Permission of key /foo/bar is revoked from role role_yhh# 就像完全删除角色一样:$ etcdctl role remove myrolename

启用身份验证


启用身份验证的最小步骤如下。管理员可以根据喜好在启用身份验证之前或之后设置用户和角色。

本次操作为3.3版本

设置环境变量 设置为v3 版本

 export ETCDCTL_API=3

确保已创建root用户:

$ etcdctl user add root

启用身份验证:

$ etcdctl auth enable

开启身份认证后 如果不提供密码 再执行命令就会报以下错误 :Error: etcdserver: user name is empty

$  etcdctl get /service/patroni_test_cluster/leader
Error: etcdserver: user name is empty

之后,etcd将以启用身份验证的方式运行。

如果出于某些原因要禁用它,请使用相反的命令:

# 关闭用户密码认证 
$ etcdctl --user root:root auth disable
Authentication Disabled

这样v3 版本的访问就需要用户密码了

v2版本???

$ etcdctl --version
etcdctl version: 3.3.11
API version: 2

为什么开启认证后不加用户密码还能查数据 新增数据??

$ etcdctl ls
/mykey
$ etcdctl --username root:123456 ls
/mykey

但是查询用户却报权限问题 ,说明有认证

$ etcdctl user get yanhaihang
Insufficient credentials$ etcdctl --username root:123456 user get yanhaihang
User: yanhaihang
Roles:

使用etcdctl进行身份验证


etcdctl支持与curl类似的身份验证标志。

 etcdctl  --user root:root  get /service/patroni_test_cluster/leader

密码可以从提示中获取:
 

 etcdctl  --user root  get /service/patroni_test_cluster/leader
Password:

密码也可以从命令行标志--password中获取:

V3.3 版本提示没有这个参数 Error: unknown flag: --password

 etcdctl  --user="root"  --password="root"  get   /service/patroni_test_cluster/leader
Error: unknown flag: --password


否则,所有etcdctl命令都保持不变。仍然可以创建和修改用户和角色,但需要具有root角色的用户进行身份验证。

使用TLS通用名称


从v3.2版本开始,如果etcd服务器使用选项--client-cert-auth=true启动,则客户端TLS证书中的通用名称(CN)字段将用作etcd用户。在这种情况下,通用名称会验证用户,并且客户端不需要密码。请注意,如果同时满足以下条件,则基于用户名和密码的身份验证将被优先:1. 传递了--client-cert-auth=true,并且客户端提供了CN;2. 客户端提供了用户名和密码。请注意,此功能不能与gRPC-proxy和gRPC-gateway一起使用。这是因为gRPC-proxy会终止来自其客户端的TLS,因此所有客户端都共享代理的证书。gRPC-gateway在将HTTP请求转换为gRPC请求时使用内部TLS连接,因此它也具有相同的限制。因此,客户端无法正确地向服务器提供其CN。如果给定的证书具有非空的CN,gRPC-proxy将引发错误并停止。gRPC-proxy返回一个错误,指示客户端的证书中具有非空的CN。

从v3.3版本开始,如果etcd服务器使用选项--peer-cert-allowed-cn启动,则会启用CN对等连接筛选。只有当它们的CN与允许的CN匹配时,节点才能加入etcd集群。有关更多详细信息,请参阅etcd安全页面。

版本 3.3

参考 

https://etcd.io/docs/v3.3/op-guide/authentication/

官方文章 Demo 中的 Auth章节

Demo | etcd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/484479.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝牙定位的MATLAB程序,四个锚点、三维空间

这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念,并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4:生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步:构建网络拓…

VMware官网下载

访问官网 https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion 跳转到broadcom 注册 -> 登录 拉到下面 选择版本 然后填写地址信息, 随便写写, 再回去点下载按钮, 就可以下载了

智慧地图聚合(LockMap)标注系统开发说明文档

智慧地图聚合(LockMap)标注系统开发说明文档 1. 系统概述 智慧地图聚合(LockMap)标注系统是一个专为处理大规模地理信息数据而设计的综合解决方案。通过后端高效的数据管理和前端直观的地图展示,该系统能够实现对海量地理位置点的有效可视化。本项目旨在提供一个用…

【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数

1. UDF函数(用户自定义函数) 一般指的是用户自己定义的单行函数。一进一出,函数接受的是一行中的一个或者多个字段值,返回一个值。比如MySQL中的,日期相关的dateDiff函数,字符串相关的substring函数。 先…

linux 服务器 一次性查看 CPU、内存和磁盘使用情况

创建 vi check_usage.sh #!/bin/bashecho " CPU 使用率 " mpstat -P ALL 1 1echo -e "\n 内存使用情况 " free -hecho -e "\n 磁盘使用率 " df -h执行授权 chmod x check_usage.sh执行查看 ./check_usage.sh这样可以快速获取系统资源的概览。…

一文理解多模态大语言模型——下

作者:Sebastian Raschka 博士, 翻译:张晶,Linux Fundation APAC Open Source Evangelist 编者按:本文并不是逐字逐句翻译,而是以更有利于中文读者理解的目标,做了删减、重构和意译&#xff0c…

数据结构---链表(2)---双向链表

链表(1)中讲过了在OJ题中出现很多并且能作为一些复杂数据结构子结构的不带头单向不循环链表,下面讲解应用很广很实用的带头双向循环链表。 三、双向链表---DoublyLinkedList 演示带头双向循环链表(实用)。 带头--->不需要对空链表继续单独判断;循环…

PH热榜 | 2024-12-04

1. Stackfix 标语:几秒钟内就能对比软件。 介绍:立刻就能对比不同软件的价格和功能。不用再费力看各种评测或接推销电话了。我们提供实时价格、并排对比,还有专家的推荐建议。 产品网站: 立即访问 Product Hunt: V…

分布式光伏电站如何实现监控及集中运维管理?

安科瑞戴婷 Acrel-Fanny 前言 今年以来,在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速,装机容量均大幅度增长,新能源发电已经成为新型电力系统重要的组成部分,同时这也导致新型电力系统比传统的电…

AD学习笔记·空白工程的创建

编写不易,禁止搬运,仅供学习,感谢理解 序言 本文参考B站,凡亿教育,连接放在最后。 创建工程文件 在使用AD这个软件的电路板设计中,有很多的地方跟嘉立创eda还是有不一样的地方,其中一个地方就…

基于Java Springboot生鲜食品订购微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…

【阅读笔记】Android广播的处理流程

关于Android的解析,有很多优质内容,看了后记录一下阅读笔记,也是一种有意义的事情, 今天就看看“那个写代码的”这位大佬关于广播的梳理, https://blog.csdn.net/a572423926/category_11509429.html https://blog.c…

第十三章 Linux计划任务

注意:进公司和有公司成员离职,一定要问计划任务,防止别人搞破坏背锅 13.1 一次性计划任务(atd服务) 1 安装 atd 服务 yum install -y at systemctl enable atd systemctl start atd ## 启动atd服务 systemctl status atd ## 查看atd服务…

Kali Linux使用Netdiscover工具的详细教程

Kali Linux使用Netdiscover工具的详细教程 引言 在网络安全和渗透测试的过程中,网络发现是一个至关重要的步骤。Netdiscover是Kali Linux中一个非常实用的网络发现工具,它可以帮助用户快速识别局域网中的活动设备。本文将详细介绍如何使用Netdiscover工…

EasyNVR中HTTP-FLV协议无法播放怎么解决?

在科技日新月异的今天,摄像头作为公共安全领域的重要一环,其技术的不断提升正显著地改变着社会的安全格局。从最初的简单监控到如今的高清智能分析,我们可以对特定区域进行实时监控和记录,为社会的安全稳定提供了强有力的保障。 问…

VINS_MONO视觉导航算法【一】基础知识介绍

文章目录 VINS-Mono其他文章说明简介单目相机存在的尺度不确定问题缺乏深度信息尺度等价性对极几何和三角化平移和深度的关系解决尺度不确定问题的方法视觉惯性里程计(VIO)初始尺度估计持续尺度校正 摄像头数据处理直接法(Direct Method&…

「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用

本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。 关键词 UI互动应用数字键盘按钮组件状态管理用户交互 一、功能说明 数字键盘应用将实现以下功能&…

AI PC处理器ARM架构-引入NPU和大模型

AI PC处理器架构变化:ARM低功耗、引入NPU和大模型 AI进化加速端侧落地,新一轮浪潮蓄势待发(2024)”。ARM(Advanced RISC Machine)架构和x86架构是两种主要的处理器架构,它们在设计理念、应用场景和性能特点等方面有显著的差异。 ARM架构是一…

华为的USG6000为什么不能ping通

前言: 防火墙usg6000v的镜像 链接: https://pan.baidu.com/s/1uLRk0-hnHRTLYLx1Pnplow?pwdtymp 提取码: tymp 看了好多毒文章,感觉写作业更有意思,可以了解新的知识 内容: 首先看毒文章是这样说的,华为的防火墙是…