微服务实战系列之玩转Docker(十八)
导览
- 前言
- Q:如何保障容器云环境下etcd集群的数据安全
- 一、安全机制
- 身份认证必学必看
- 1. 启动参数
- 2. 授权命令
- 3. 开启认证
- 二、应用实践
- 1. 访问容器
- 2. 查看认证是否开启
- 3. 查看是否已创建用户
- 4. 创建用户
- 5. 开启认证
- 6. 验证是否开启
- 7. 验证数据
- 结语
- 系列回顾
前言
etcd与zooKeeper一样,作为分布式场景下的数据共享工具,变得“人见人爱”。当然它俩之间的异同,博主在这里暂且不表。那么该谈点啥呢?博主认为但凡提到“数据”一词,甚至“共享”,必须优先考虑数据安全问题。

殊不知,“当你为自己开启了方便之门,与此同时,也会为他人带来捷径。一正一反,皆是因果”。因此,如何保障数据的访问和共享安全,在etcd的发展过程中,逐步得到了提升和完善。
话不多说,关于容器云场景下etcd集群的第三篇,博主开始大话它的安全机制,并提供相关实践。愿为你的数据之身披上一件无法突破的如意“金盾”。
Q:如何保障容器云环境下etcd集群的数据安全
一、安全机制
etcd的安全机制是建立在RBAC模型的基础上。如果你还不懂RBAC,可查阅相关资料,这里不再赘述。简单一句话,RBAC是基于角色的访问控制(Role-Based Access Control )。在 RBAC 中,用户(Who)、角色(How)、资源(What)通过不同的关联实现不同类型的权限控制。可以通过下图加深理解:

有了这个思想认知后,咱们一块来看,ectd是如何做到这些的。
身份认证必学必看
本文博主采用etcd最新版本(V3)对身份认证相关功能进行说明,并通过docker完成。如果你需要确认自己的etcd版本,可以通过下面的方法完成。
即打开浏览器输入http://[你的etcd ip]:2379/version,回车可得到如下结果:

1. 启动参数
既然使用docker完成,那么有必要对etcd常用的启动参数加以介绍,以观全局。
| 参数名称 | 参数说明 |
|---|---|
| TZ | 即timezone,代表时区,国内选Asia/Shanghai |
| ETCD_NAME | etcd节点名称 |
| ETCD_DATA_DIR | etcd容器的数据存储目录 |
| ETCD_ADVERTISE_CLIENT_URLS | 描述当前etcd节点的地址,即让集群知道“我是谁” |
| ETCD_INITIAL_ADVERTISE_PEER_URLS | 描述当前etcd节点的通信地址,即让集群知道“我上线”了 |
| ETCD_LISTEN_PEER_URLS | 描述当前节点与其他节点通信的监听地址 |
| ETCD_INITIAL_CLUSTER_TOKEN | 初始化集群token(集群的唯一性) |
| ETCD_INITIAL_CLUSTER | 初始化集群,定义有哪些成员 |
| ETCD_INITIAL_CLUSTER_STATE | 初始化集群状态,首次为new(新建),否则为existing(已存在) |
| ALLOW_NONE_AUTHENTICATION | 允许免密登录,设置为yes |
2. 授权命令
启动完成后,我们可以借助etcdctl实现用户、角色、资源的创建和授权等操作。
# 查看etcd用户列表
etcdctl user list
# 添加一个用户
etcdctl user add [USER_NAME]
# 查看etcd角色列表
etcdctl role list
# 添加一个角色
etcdctl role add [ROLE_NAME]
# 为角色[ROLE_NAME]赋予[DATA_DIR]的读写权限
etcdctl role grant-permission [ROLE_NAME] --prefix=true readwrite [DATA_DIR]
# 查看用户[USER_NAME]的角色
etcdctl user get [USER_NAME]
# 为用户[USER_NAME]添加角色[ROLE_NAME]
etcdctl user grant-role [USER_NAME] [ROLE_NAME]
3. 开启认证
开启认证比较简单了,可通过以下命令完成:
# 查看是否已开启身份认证
etcdctl auth status
# 开启认证,并指定用户和密码
etcdctl auth enable --user="" --password=""
二、应用实践
通过第一节的介绍,我们可以顺利完成实操。本次博主以一个单节点为例,进行相关演示,请紧随博主的步伐,不可三心二意哦~
1. 访问容器
输入docker exec -it etcd-node1 /bin/bash,可观察执行结果:

如上图,已成功进入容器内部。
2. 查看认证是否开启
输入etcdctl auth status,可观察执行结果:

如上图状态为false,代表未开启。
3. 查看是否已创建用户
输入etcdctl user list,可观察是否已创建用户(用户是认证的前提):

如上图,一片空白,代表此时未创建任何用户。
4. 创建用户
无用户,那么就创建一个呗,比如root,可观察结果:

如上图,创建root并设置一个密码。
5. 开启认证
输入etcdctl --user --password --endpoints etcd或集群 auth enable,可观察结果:

如上图,成功开启了认证。
6. 验证是否开启
我们可以通过以下命令进行验证(带用户),可观察结果:

如上图状态为true,代表已开启。
7. 验证数据
开启身份认证后,我们可检验一下它是否生效,输入etcdctl put [KEY] [VALUE],可观察结果:

如上图,添加失败,因为未指定操作用户。所以接下来应该怎么办?指定用户呗。

查看添加结果:

完美!
结语
容器云场景下,etcd的安全机制建立在用户身份认证的基础上。各位盆友可通过本文进行相关设置,保障数据的安全访问。当然etcd也支持使用证书保障数据的安全传输(集群内部、客户端),未来博主有时间再补充说明。
走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~
系列回顾
微服务实战系列之玩转Docker(十七)
微服务实战系列之玩转Docker(十六)
微服务实战系列之玩转Docker(十五)
微服务实战系列之玩转Docker(十四)
微服务实战系列之玩转Docker(十三)
微服务实战系列之玩转Docker(十二)
微服务实战系列之玩转Docker(十一)
微服务实战系列之玩转Docker(十)
微服务实战系列之玩转Docker(九)
微服务实战系列之玩转Docker(八)
微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生

相关文章:
微服务实战系列之玩转Docker(十八)
导览 前言Q:如何保障容器云环境下etcd集群的数据安全一、安全机制身份认证必学必看1. 启动参数2. 授权命令3. 开启认证 二、应用实践1. 访问容器2. 查看认证是否开启3. 查看是否已创建用户4. 创建用户5. 开启认证6. 验证是否开启7. 验证数据 结语系列回顾 前言 etc…...
Javascript 获取设备信息 工具
JS获取设备信息(操作系统信息、地理位置、UUID、横竖屏状态、设备类型、网络状态、浏览器信息、生成浏览器指纹、日期、生肖、周几等) Get Device Info Online GitHub - skillnull/DeviceJs: JS获取设备信息(操作系统信息、地理位置、UUID、横竖屏状态、设备类型、网络状态、浏…...
基于开源 AI 智能名片、S2B2C 商城小程序的用户获取成本优化分析
摘要:本文围绕用户获取成本(CAC)这一关键指标展开深入剖析,详细阐述其计算方式,并紧密结合开源 AI 智能名片与 S2B2C 商城小程序的独特性质,从多个维度探讨如何通过挖掘新的获客渠道、巧妙运用私域流量池等…...
仿真APP助力汽车零部件厂商打造核心竞争力
汽车零部件是汽车工业的基石,是构成车辆的基础元素。一辆汽车通常由上万件零部件组成,包括发动机系统、传动系统、制动系统、电子控制系统等,它们共同确保了汽车的安全、可靠性及高效运行。 在汽车产业快速发展的今天,汽车零部件…...
vue实现websocket实时短消息通知
1、原理 websocket就是通过服务器向客户端推送消息,客户端也可以主动向服务器发送消息,是真正的双向平等对话,是一种长连接,只需要通过一次请求进行初始化。 2、事件 onopen: 客户端和服务器建立连接后触发,被称为客…...
tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸
tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸 一、需求描述二、行高、段落间距、格式刷插件三、实现视频上传的进度条、对复制的图片设置尺寸 一、需求描述 使用技术: vue2 tinymce5.…...
计算机毕业设计Python+图神经网络手机推荐系统 手机价格预测 手机可视化 手机数据分析 手机爬虫 Django Flask Spark 知识图谱
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
WPF的<ContentControl>控件
在WPF(Windows Presentation Foundation)中,<ContentControl>是一个非常有用的控件,它允许你将内容放入一个控件中,这个内容可以是任何对象。ContentControl的主要特点是它有一个Content属性,你可以将…...
Python并发编程——multiprocessing
目录 1. 引言1.1 并发与并行的区别 2. 多进程开发2.1 Process 类的常用方法2.2 进程的生命周期与同步 3. 进程之间的数据共享3.1 使用 Value 和 Array3.2 使用 Manager 实现高级数据共享 4. 进程锁4.1 更复杂的锁应用4.2 锁的死锁与避免4.3 信号量与条件变量 5. 进程池5.1 imap…...
智能家居的未来:AI让生活更智能还是更复杂?
内容概要 智能家居的概念源于将各种家居设备连接到互联网,并通过智能技术进行控制和管理。随着人工智能的迅速发展,这一领域也迎来了前所未有的机遇。从早期简单的遥控器到如今可以通过手机应用、语音助手甚至是环境感应进行操作的设备,智能…...
【物联网技术】ESP8266 WIFI模块在AP模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——TCP数据透传
前言:完成ESP8266 WIFI模块在AP模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——实现TCP数据透传 AP模式,通俗来说模块可以发出一个WIFI热点提供给电脑/手机连接。 TCP服务端,通俗来说就是模块/单片机作为服务器,可以接收多个客户通道的连接。 本…...
十五:java web(7)-- Spring Boot
目录 1. Spring Boot 简介 1.1 简介 1.2 Spring Boot 的特点 1.3 Spring Boot 和 Spring 的关系 2. Spring Boot 快速入门 2.1 创建第一个 Spring Boot 项目 3. Spring Boot 配置管理 3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐…...
洛谷每日一题——P1036 [NOIP2002 普及组] 选数、P1045 [NOIP2003 普及组] 麦森数(高精度快速幂)
P1036 [NOIP2002 普及组] 选数 题目描述 [NOIP2002 普及组] 选数 - 洛谷 运行代码 #include <stdio.h> int n, k, a[25], t; int ss(int b) {int i;if (b < 2)return 0;for (i 2; i * i < b; i)if (b % i 0)return 0;return 1; } void dfs(int num, int sum, …...
OpenHarmony开源鸿蒙
OpenHarmony_百度百科 2024年4 月 1 日,开源鸿蒙 OpenHarmony 4.1 Release 版本于昨日发布,开发套件同步升级到 API 11 Release...
2024.11.4 STM32点灯和简单的数据收发
1.发送函数 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 参数1: UART 处理结构体的指针,该结构体包含了 UART 的所有配置参数。 参数2:要发送的数据指针 参数3&…...
Android Studio jcenter 停止服务,改用mavenCentral
随着jcenter在2021年2月28日停止服务,Android和Java开发者需寻找替代方案。推荐使用MavenCentral,可借助国内镜像加速。此外,jitpack.io也是一个选项,但对于大型项目,自建Nexus或MavenCentral更合适。迁移步骤包括更新…...
EasyPOI使用详解
EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档:http://easypoi.mydoc.io/#categor…...
【云原生开发】K8S多集群资源管理平台架构设计
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
基于SpringBoot的城镇住房保障系统开发
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
一文解秘Rust如何与Java互操作
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情,而 Java 也可以享受 Rust 语言特性的内存安全,所有权机制,无畏并发。…...
Zstats高级版教程(3):如何进行数据整理(下),分类变量如何设置对照组?设置值标签?
本篇是风暴统计平台教程系列的第三章,将详细说明如何使用数据整理模块,节省后续分析的时间。因为涉及内容比较多,分为上中下三篇,此为下篇。前两篇数据整理教程分别向大家详细介绍了数据整理模块的定量数据转分类、计算新变量、变…...
Anaconda环境管理:为Phi-4-mini-reasoning 3.8B创建独立的Python开发环境
Anaconda环境管理:为Phi-4-mini-reasoning 3.8B创建独立的Python开发环境 1. 为什么需要独立环境? 在数据科学和机器学习项目中,环境隔离是个经常被忽视但极其重要的问题。想象一下这样的场景:你花了两周时间调试一个模型&#…...
终极指南:gin-vue-admin前端错误监控告警配置详解 - 邮件与钉钉实时通知方案
终极指南:gin-vue-admin前端错误监控告警配置详解 - 邮件与钉钉实时通知方案 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理&#…...
百考通:AI精准赋能实践报告,让实习总结高效又专业
对于每一位在校学生和职场新人而言,实践报告都是记录成长、沉淀经验的关键载体,却也常常成为令人头疼的难题:要么不知如何梳理工作脉络,要么难以精准提炼收获与反思,要么在格式规范和字数要求上反复纠结。百考通&#…...
工业冷水机控制程序西门子1200plc含压缩机,电子膨胀阀控制策略,饱和温度计算公式
工业冷水机控制程序西门子1200plc含压缩机,电子膨胀阀控制策略,饱和温度计算公式凌晨三点钟的冷水机组房,设备轰鸣声中闪烁着PLC运行指示灯。手指划过TP1200触摸屏的瞬间,压缩机启动电流曲线在屏幕上划出漂亮的爬坡轨迹——这就是…...
森利威尔SL3073替代RT2862 4-65V超宽压3A降压芯片
在电源管理领域,寻找高效、可靠且功能丰富的DC-DC转换器是设计工程师们不懈追求的目标。当面临将36V电压转换为更低电压并保持3A持续输出电流的应用场景时,传统上可能会选择如RT2862这样的同步降压转换器。然而,随着技术的不断进步࿰…...
第 1 章 Python 基础 知识点精讲
1.1 在交互式环境中输入表达式核心知识点Python 提供两种运行代码的方式:交互式环境(IDLE / 终端) 和 脚本文件(.py)。交互式环境:输入一行代码立即执行,适合快速测试、调试、学习语法启动方式&…...
实时操作系统(RTOS)核心特性与工业实践解析
1. 实时操作系统核心特性解析实时操作系统(RTOS)的核心设计理念在于"确定性响应",这与我们日常使用的通用操作系统有着本质区别。我曾参与过工业控制系统的开发,深刻体会到RTOS在关键任务场景下的不可替代性。以数控机床…...
Serverless测试噩梦:冷启动延迟搞垮电商大促
一场被“隐形杀手”击溃的战役凌晨两点,某头部电商平台的“双十一”大促作战指挥中心。流量曲线在预热阶段平稳爬升,技术团队信心满满——所有核心交易链路都已迁移至先进的Serverless架构,理论上具备无限弹性。然而,零点的钟声敲…...
Android Studio中利用fat-aar实现多级依赖aar的合并打包实战
1. 为什么需要fat-aar合并打包 在Android开发中,我们经常会遇到这样的场景:你开发了一个功能模块(比如天气组件Weather.aar),这个模块又依赖了第三方aar(比如图表库Chart.aar)。当你把Weather.a…...
