部署式文件系统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

相关文章

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente