CDP集群安全指南-静态数据加密

[一]静态数据加密的架构

CDP 支持两种加密组件,这些组件可以组合成独特的解决方案。在选择密钥管理系统(KMS)时,您需要决定哪些组件能够满足企业的密钥管理和加密需求。

CDP 加密组件

以下是 Cloudera 用于静态数据加密的组件描述:

  1. Ranger Key Management System (KMS)
    Ranger 扩展了 Hadoop 原生 KMS 的功能,允许将密钥存储在安全的数据库中。它是一个支持 HDFS TDE(透明数据加密)的密码密钥管理服务,但并非通用密钥管理系统。与 Hadoop KMS 不同,Hadoop KMS 将密钥存储在基于文件的 Java Keystore 中,仅能通过 KeyProvider API 访问。

  2. Navigator Encrypt
    提供透明的静态数据加密和保护,无需对应用程序进行更改。


CDP​​​​​​​ 加密解决方案

您可以通过以下任意解决方案部署加密组件来实现静态数据加密:

  1. 仅使用 Ranger KMS(本文演示使用这种方式)

    • 仅由 Ranger KMS 和提供密钥存储的后端数据库组成。
    • Ranger KMS 提供企业级密钥管理。
  2. Ranger KMS + HSM(硬件安全模块)

    • 包含 Ranger KMS(带数据库)和与后端硬件安全模块(HSM)的集成。
    • Ranger KMS 提供企业级密钥管理。
    • HSM 提供加密区密钥保护,仅存储加密主密钥。

[二]静态数据加密的要求

熵要求

加密操作依赖熵来确保随机性,而随机性是防止攻击者预测或破解加密过程的关键。如果随机数缺乏足够的熵,整个加密系统的安全性就会受到威胁。因此,熵在加密中起着至关重要的作用。您可以通过运行以下命令来检查 Linux 系统上的可用熵:

cat /proc/sys/kernel/random/entropy_avail

该命令的输出会显示当前可用的熵值。建议多次检查熵值,以确定系统熵池的状态。如果熵值持续较低(500 或更少),则需要通过安装 rng-tools 并启动 rngd 服务来增加熵值。

【提醒】由于最近的 Linux 内核更改,内核报告的 entropy_avail 值将始终为 256。如果您更改了“主机熵阈值”(Host Entropy Thresholds)的默认设置,这可能会导致错误警报的触发。因此,您需要将这些阈值更改为反映 entropy_avail 为 256 的实际情况。

Ranger KMS 安全需求

最低推荐硬件配置如下:

  • 处理器:1 GHz 64 位四核处理器
  • 内存:8 GB RAM
  • 存储:20 GB 存储空间,建议使用中等至高性能的磁盘驱动器

有关支持的 Linux 发行版的信息,请参阅《Cloudera Navigator Encryption 产品兼容性矩阵》。

Ranger KMS 的工作负载对 CPU 要求较高。Cloudera 建议使用与您的 NameNode 主机相当性能的机器,特别是配备支持 AES-NI 的 Intel 处理器,以实现最佳性能。此外,Cloudera 强烈建议为 HDFS 和 Ranger 服务启用 TLS,以防止在 KMS 和 HDFS 数据节点之间传输明文密钥数据。

[三]安装配置Ranger KMS

1-添加服务

2-选择依赖

3-分配角色

4-数据库设置

CREATE DATABASE rangerkms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'rangerkms'@'%' IDENTIFIED WITH mysql_native_password BY '!edc4rfVrangerkms'; 
GRANT ALL PRIVILEGES ON rangerkms.* TO 'rangerkms'@'%';

5-审核更改

6-命令详细信息

7-汇总

8-重启集群并部署客户端配置

【重要提醒】Ranger 为 Ranger 和 Ranger KMS 使用了独立的管理员用户。

  • Ranger 管理员用户负责管理 Ranger 的访问策略。
  • Ranger KMS 管理员用户(默认是 keyadmin)负责管理 Ranger KMS 的访问策略和加密密钥,并可以访问与 Ranger 管理员用户不同的一组用户界面功能。

为 Ranger 和 Ranger KMS 使用独立的管理员账户,可以将加密工作(如加密密钥和策略)与集群管理和访问策略管理分离开来。

[四]-管理一个加密区

1-测试加密优化是否有效

[root@cdp73-1 lib]# hadoop checknative
24/12/31 01:47:56 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
24/12/31 01:47:56 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
24/12/31 01:47:56 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable
Native library checking:
hadoop:  true /home/opt/cloudera/parcels/CDH-7.3.1-1.cdh7.3.1.p0.60371244/lib/hadoop/lib/native/libhadoop.so.1.0.0
zlib:    true /lib64/libz.so.1
zstd  :  true /home/opt/cloudera/parcels/CDH-7.3.1-1.cdh7.3.1.p0.60371244/lib/hadoop/lib/native/libzstd.so.1
bzip2:   true /lib64/libbz2.so.1
openssl: true /lib64/libcrypto.so
ISA-L:   false libhadoop was built without ISA-L support
[root@cdp73-1 lib]#

如果您在 openssl 行中看到 true,说明 Hadoop 已检测到正确版本的 libcrypto.so,加密优化将正常工作。如果您在该行中看到 false,说明您没有安装正确的版本。

2-创建加密用的key

[root@cdp73-1 lib]# kinit keyadmin
Password for keyadmin@BIGDATACDP.COM:
Warning: Your password will expire in less than one hour on Mon 13 Sep 2100 10:48:05 PM EDT
[root@cdp73-1 lib]# hadoop key create keytrustee_test
keytrustee_test has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=128, description='null', attributes=null}.
org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider@3d5c822d has been updated.
[root@cdp73-1 lib]# hadoop key list
Listing keys for KeyProvider: org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider@2f8dad04
keytrustee_test
[root@cdp73-1 lib]#

3-创建加密区

[root@cdp73-1 lib]# kinit hdfs
Password for hdfs@BIGDATACDP.COM:
Warning: Your password will expire in less than one hour on Mon 13 Sep 2100 10:48:05 PM EDT
[root@cdp73-1 lib]# hadoop fs -mkdir /encryption_zone
[root@cdp73-1 lib]# hdfs crypto -createZone -keyName keytrustee_test  -path /encryption_zone
Added encryption zone /encryption_zone
[root@cdp73-1 lib]# hdfs crypto -listZones
/encryption_zone  keytrustee_test
[root@cdp73-1 lib]#

这样任何上传到hdfs/encryption_zone目录下的文件都是被加密的状态

【重要提醒】默认情况下,distcp 使用文件系统提供的校验和(checksum)来验证数据是否成功复制到目标位置。然而,当从加密位置复制时,文件系统的校验和将不匹配,因为底层块数据不同。这无论目标位置是否加密,情况都相同。在这种情况下,您可以指定 -skipcrccheck 和 -update 标志以跳过校验和验证。使用 -skipcrccheck 时,distcp会在每个文件复制完成后,通过文件大小比较来检查文件完整性。

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

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

相关文章

ACM算法模板

ACM算法模板 起手式基础算法前缀和与差分二分查找三分查找求极值分治法:归并排序 动态规划基本线性 d p dp dp最长上升子序列I O ( n 2 ) O(n ^ 2) O(n2)最长上升子序列II O ( n l o g n ) O(nlogn) O(nlogn) 贪心二分最长公共子序列 背包背包求组合种类背包求排列…

AcWing练习题:差

读取四个整数 A,B,C,D,并计算 (AB−CD)的值。 输入格式 输入共四行,第一行包含整数 A,第二行包含整数 B,第三行包含整数 C,第四行包含整数 D。 输出格式 输出格式为 DIFERENCA X,其中 X 为 (AB−CD) 的…

前端路由 Hash 和 History 模式原理对比区别

前端路由 Hash 和 History 模式原理对比区别 1. 基本概念 1.1 什么是前端路由 前端路由是指在单页应用(SPA)中,通过 JavaScript 来实现页面的切换和状态管理,而无需向服务器请求新的页面。主要有两种实现方式:Hash …

头歌实训数据结构与算法 - 字符串匹配(第2关:实现KMP字符串匹配)

任务描述 本关任务:编写一个程序,利用kmp算法求子串在主串中不重叠出现的次数。 实验目的:深入掌握KMP算法的应用。实验内容:编写一个程序,利用KMP算法求子串t在主串s中出现的次数,例如:s“aa…

enzymejest TDD与BDD开发实战

一、前端自动化测试需要测什么 1. 函数的执行逻辑,对于给定的输入,输出是否符合预期。 2. 用户行为的响应逻辑。 - 对于单元测试而言,测试粒度较细,需要测试内部状态的变更与相应函数是否成功被调用。 - 对于集成测试而言&a…

UE5通过蓝图节点控制材质参数

通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中,控制材质的参数值和向量值

MySQL秘籍之索引与查询优化实战指南

MySQL秘籍之索引与查询优化实战指南 目录 MySQL秘籍之索引与查询优化实战指南相关阅读索引相关EXPLAIN 版本 1. 初级篇1.1 【练体术】基础1.1.1 库操作1.1.1 表操作创建一个表增加表字段 1.1.2 增删改插入一条数据删除一条数据更新一条数据库 1.1.3 查询查询所有数据条件查询&a…

沁恒CH32V208GBU6蓝牙MTU二:减小连接间隔提升速度;修改GAP里面的连接参数提高兼容性

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

探索 Vue.js 的动态样式与交互:一个有趣的样式调整应用

修改日期备注2025.1.3初版 一、前言 今天和大家分享在 Vue.js 学习过程中开发的超酷的小应用。这个应用可以让我们通过一些简单的交互元素,如复选框、下拉菜单和输入框,来动态地改变页面上元素的样式哦 让我们一起深入了解一下这个项目的实现过程&…

Python应用指南:高德交通态势数据

在现代城市的脉络中,交通流量如同流动的血液,交通流量的动态变化对出行规划和城市管理提出了更高的要求。为了应对这一挑战,高德地图推出了交通态势查询API,旨在为开发者提供一个强大的工具,用于实时获取指定区域或道路…

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog(1)修改MySql配置文件(2)重启MySql服务,查看配置是否生效(3)配置起效果后,创建canal用户,并赋予权限安装canal-admin(1)解压 canal.admin-1…

物联网控制期末复习

第3章 物联网控制系统的过程通道设计 3.1 模拟量输出通道 3.1.1单模拟量输出通道的构成 计算机控制系统的模拟量输出通道将计算机产生的数字控制信号转换为模拟信号(电压或电流)作用于执行机构,以实现对被控对象的控制。 多D/A结构&#…

python生成、操作svg图片

生成svg图片 通过python生成svg图片的方法有许多,比如OpenCV的源码中有svgfig.py这个脚本可以用于生成svg图片(OpenCV的棋盘格图片可以通过这个方法生成),也可以使用svg.py的库,安装方法如下 pip install svg.py 下面是通过这个库生成一个简…

2024年大型语言模型(LLMs)的发展回顾

2024年对大型语言模型(LLMs)来说是充满变革的一年。以下是对过去一年中LLMs领域的关键进展和主题的总结。 GPT-4的壁垒被打破 去年,我们还在讨论如何构建超越GPT-4的模型。如今,已有18个组织拥有在Chatbot Arena排行榜上超越原…

Servlet解析

概念 Servlet是运行在服务端的小程序(Server Applet),可以处理客户端的请求并返回响应,主要用于构建动态的Web应用,是SpringMVC的基础。 生命周期 加载和初始化 默认在客户端第一次请求加载到容器中,通过反射实例化…

图片验证码如何显示在 Apifox 的响应控制台中

当接口返回的响应数据结构非常复杂,充斥着嵌套的对象和数组,其中还可能包含着图片的 URL 时,如果要查找特定信息,你需要不断上下滚动 JSON 响应,试图找到所需的字段。这不仅让人恼火,还浪费了宝贵的时间。 …

设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析

单例模式(Singleton Pattern)是一种创建型设计模式,旨在确保某个类在应用程序的生命周期内只有一个实例,并提供一个全局访问点来获取该实例。这种设计模式在需要控制资源访问、避免频繁创建和销毁对象的场景中尤为有用。 一、核心…

《Xsens动捕与人形机器人训练》讲座将于1月9日下午2:30在线上召开

《Xsens动捕与人形机器人训练》讲座将于1月9日下午2:30在线上召开,本次讲座中来自Xsens的人形机器人与动捕技术专家Jeffrey Muller与Dennis Kloppenburg不仅将就Xsens动作捕捉系统与人形机器人行为训练中的实际应用进行详细讲解,同时还会对目前大家所关注…

Flutter踩坑记-第三方SDK不兼容Gradle 8.0,需适配namespace

最近需要集成Flutter作为Module,Flutter依赖了第三方库,Gradle是8.0版本。 编译报错: 解决办法是在.android根目录下的build.gradle下新增一行代码: buildscript {ext.kotlin_version "1.8.22"repositories {google()…

Linux驱动开发学习准备(Linux内核源码添加到工程-Workspace)

Linux内核源码添加到VsCode工程 下载Linux-4.9.88源码: 没有处理同名文件的压缩包: https://pan.baidu.com/s/1yjIBXmxG9pwP0aOhW8VAVQ?pwde9cv 已把同名文件中以大写命名的文件加上_2后缀的压缩包: https://pan.baidu.com/s/1RIRRUllYFn2…