微服务实战系列之玩转Docker(十八)

ops/2024/11/8 17:05:16/

导览

  • 前言
  • Q:如何保障容器云环境下etcd集群的数据安全
  • 一、安全机制
    • 身份认证必学必看
      • 1. 启动参数
      • 2. 授权命令
      • 3. 开启认证
  • 二、应用实践
    • 1. 访问容器
    • 2. 查看认证是否开启
    • 3. 查看是否已创建用户
    • 4. 创建用户
    • 5. 开启认证
    • 6. 验证是否开启
    • 7. 验证数据
  • 结语
  • 系列回顾

前言

etcd与zooKeeper一样,作为分布式场景下的数据共享工具,变得“人见人爱”。当然它俩之间的异同,博主在这里暂且不表。那么该谈点啥呢?博主认为但凡提到“数据”一词,甚至“共享”,必须优先考虑数据安全问题。

在这里插入图片描述

殊不知,“当你为自己开启了方便之门,与此同时,也会为他人带来捷径。一正一反,皆是因果”。因此,如何保障数据的访问和共享安全,在etcd的发展过程中,逐步得到了提升和完善。

话不多说,关于容器云场景下etcd集群的第三篇,博主开始大话它的安全机制,并提供相关实践。愿为你的数据之身披上一件无法突破的如意“金盾”

etcd_9">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_NAMEetcd节点名称
ETCD_DATA_DIRetcd容器的数据存储目录
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(一)
微服务实战系列之云原生

在这里插入图片描述


http://www.ppmy.cn/ops/131983.html

相关文章

WebSocket 及时通信 - 2024最新版前端秋招面试短期突击面试题【100道】

WebSocket 及时通信 - 2024最新版前端秋招面试短期突击面试题【100道】 🌐 1. 你对 WebSocket 的理解是什么? WebSocket 是一种通讯协议,提供了在单个 TCP 连接上进行全双工(双向)通信的能力。与传统的 HTTP 请求-响…

杨辉三角,洗牌算法

杨辉三角 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它的左上方和右上方的数的和。 public List<List<Integer>> generate(int numRows){List<List<Integer>> ret new ArrayList<>();…

符号回归概念

一、符号回归概念 符号回归是一种有监督的机器学习方法&#xff0c;用于发现某种隐藏的数学表达式或函数&#xff0c;以最佳地拟合给定数据集。与传统的回归方法不同&#xff0c;符号回归不仅仅是找到一个数学模型的参数&#xff0c;而是通过搜索和组合基本数学运算符和函数&a…

Scala的访问权限

Scala 中的属性成员、方法和构造器这三种变量可以通过访问控制符控制访问权限。不同的访问控制符可以决定是否可以被外部类访问。 Scala的属性访问权限 有四种访问控制权限&#xff0c;分别为&#xff1a; &#xff08;1&#xff09;默认访问权限。Scala 中的默认访问权限相…

python下载pdf

要下载 PDF 文件并将其保存到本地文件夹中&#xff0c;你可以使用 Python 的 requests 库来发送 HTTP 请求&#xff0c;并使用 os 和 io 库来处理文件操作。以下是一个示例代码&#xff0c;展示了如何从给定的 URL 下载 PDF 文件并将其保存到本地 data 文件夹中&#xff1a; i…

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说&#xff0c;两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

企业级-实现Redis封装层

作者&#xff1a;fyupeng 技术专栏&#xff1a;☞ https://github.com/fyupeng 项目地址&#xff1a;☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 封装 Redis 客户端Dao层、分布式锁等。 一、介绍 二、代码 DataInitialLoadRunner.java /*** Clas…

masm汇编字符输入换行输出演示

从键盘读取一个字符并换行输出 assume cs:codecode segmentstart:mov ah, 1int 21hmov bl, almov dl, 10 mov ah, 2int 21h mov dl, blmov ah, 2int 21hmov ah, 4chint 21hcode ends end start 效果演示&#xff1a;