部署式文件系统Ozone对接Ranger KMS 实现TDE

2023-10-21 17:50

本文主要是介绍部署式文件系统Ozone对接Ranger KMS 实现TDE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

公司隐私计算的项目准备使用K8S来运行计算的任务和工作调度,隐私计算的源数据放到分布式文件系统中,通过对接Ranger KMS实现透明数据加密(Transparent Data Encryption,缩写TDE). 前面一篇文章(https://blog.csdn.net/lwlfox/article/details/121068645)已经实现了未开启TDE模式,这篇文章将介绍如何从非TDE模式切换到带TDE模式并与K8S 对接。

必读

https://blog.csdn.net/lwlfox/article/details/121068645icon-default.png?t=L9C2https://blog.csdn.net/lwlfox/article/details/121068645

修改集群配置

1. 将下面的文件复制到所有Ozone的节点中,我的环境中有4个节点。路径为: /opt/hadoop/etc/hadoop/core-site.xml 。

配置中的IP+端口,为KMS服务的地址,Ranger KMS的安装文档参考: Apache Ranger KMS 部署文档_偷闲小苑-CSDN博客

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>hadoop.security.key.provider.path</name><value>kms://http@10.228.82.21:9292/kms</value></property>
</configuration>

KMS地址查看

 2. 重启管理节点上的所有服务(停止顺序: RECON->S3G->OM-SCM,启动顺序: SCM->OM->S3G->RECON)

#停止
[root@vm10-50-0-80 hadoop]# ozone --daemon stop recon
[root@vm10-50-0-80 hadoop]# ozone --daemon stop s3g
[root@vm10-50-0-80 hadoop]# ozone --daemon stop om
[root@vm10-50-0-80 hadoop]# ozone --daemon stop scm
#启动
[root@vm10-50-0-80 hadoop]# ozone --daemon start scm
[root@vm10-50-0-80 hadoop]# ozone --daemon stop om
[root@vm10-50-0-80 hadoop]# ozone --daemon stop s3g
[root@vm10-50-0-80 hadoop]# ozone --daemon stop recon

3. 重启所有3 个DATANODE节点 ,

ozone --daemon stop datanode
ozone --daemon start datanode

4. 检查所有3个DATANODE运行正常,在任意Ozone节点运行以下命令

ozone admin datanode list

5. 创建带KMS地址的ozone镜像

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd ozone-1-1-0-csi/ozone-docker
vi core-site.xml #修改配置文件中的IP 和端口
docker build -t ozone-with-kms:1.1.0 -f Dockerfile_with_KMS .
docker tag ozone-with-kms:1.1.0 registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-with-kms:1.1.0 #tag为自己的镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-with-kms:1.1.0 #将镜像推送到自己的仓库中

6. 更新CSI使用的镜像

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd ozone-1-1-0-csi/with-tde
vi csi-ozone-datanode-daemonset.yaml #将编排中的zone的镜像替换为刚刚构建的镜像
vi csi-ozone-provisioner-deployment.yaml #将编排中的zone的镜像替换为刚刚构建的镜像
kubectl apply -f . # 等待csi-daemontset和csi-provisioner更新完成

7. 创建加密区

#root登录Ozone 的SCM节点,执行以下命令
#其中test_key1为在KMS里面创建的Key
ozone sh bucket create -k test_key1 /s3v/encrypt 
[root@vm10-50-0-80 hadoop]# ozone sh bucket list /s3v
{"metadata" : { },"volumeName" : "s3v","name" : "encrypt","storageType" : "DISK","versioning" : false,"usedBytes" : 268435486,"usedNamespace" : 6,"creationTime" : "2021-10-31T07:53:09.803Z","modificationTime" : "2021-10-31T07:53:09.803Z","encryptionKeyName" : "test_key1",  #加密区使用的KMS Key"sourceVolume" : null,"sourceBucket" : null,"quotaInBytes" : -1,"quotaInNamespace" : -1
}

8. 向加密区写入数据

[root@vm10-50-0-80 hadoop]#ozone sh key put /s3v/encrypt/ENcryptedKey Readme.md

9. 制作挂载加密区的镜像

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd ozone-TDE-docker
docker build -t ozone-client:1.0.0 .
docker tag ozone-client:1.0.0 registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-client:1.0.0 #tag为自建的容器仓库
docker push registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-client:1.0.0 #推送镜像到自己的仓库

 10. 挂载加密区并创建非加密区PVC

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd pvc-test
kubectl apply -f ozone-client-pvc.yaml -f ozone-client-deployment.yaml

11. 登录到zone-client容器中进行加密区与非加密区的文件操作,客户端无感知是否为加密或未加密。/mnt为加密区  /data/为非加密区

[root@vm10-10-0-160 pvc-test]# kubectl exec -it ozone-client-6dc754db6c-cbnt7 bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.[root@ozone-client-6dc754db6c-cbnt7 /]# ls /data 
KK  Key
[root@ozone-client-6dc754db6c-cbnt7 /]# ls /mnt
KEVIN  KK
[root@ozone-client-6dc754db6c-cbnt7 /]# df -h /data
Filesystem                                Size  Used Avail Use% Mounted on
pvc-f8d7e8eb-26ea-44e1-a07f-8cf6cfee4cf1  1.0P     0  1.0P   0% /data
[root@ozone-client-6dc754db6c-cbnt7 /]# df -h  /mnt
Filesystem      Size  Used Avail Use% Mounted on
encrypt         1.0P     0  1.0P   0% /mnt

这篇关于部署式文件系统Ozone对接Ranger KMS 实现TDE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255958

相关文章

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

SpringMVC前后端传值的几种实现方式

《SpringMVC前后端传值的几种实现方式》本文主要介绍了SpringMVC前后端传值的方式实现,包括使用HttpServletRequest、HttpSession、Model和ModelAndV... 目录一、从Controller层到JSP界面1、使用HttpServletRequest的方式2、使

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运