当前位置: 首页 > article >正文

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.kler.cn/a/465960.html

相关文章:

  • 小程序学习06——uniapp组件常规引入和easycom引入语法
  • 【工具类】RedisUtil 操作相关
  • C#设计模式(行为型模式):状态模式
  • C++基础概念复习
  • 【QED】kouki与阶乘之间的那些事?
  • 应用架构模式
  • 奇异值分解SVD
  • vue字符串的数字比较大小有问题
  • typescript安装后仍然不能使用tsc,如何解决
  • mask-R-cnn模型详解
  • overleaf写学术论文常用语法+注意事项+审阅修订
  • 重庆大学软件工程复试怎么准备?
  • 使用免费内网穿透(p2p)网络环境搭建小型文件管理服务器(简单操作)
  • ESP32-S3遇见OpenAI:OpenAI官方发布ESP32嵌入式实时RTC SDK
  • 中药和西药的区别
  • 《解密奖励函数:引导智能体走向最优策略》
  • 【数据结构】栈与队列(FIFO)
  • 基于TI AM62X/AM64X+FPGA+AD7606/ADS8568多通道AD采集的电力应用
  • sklearn基础教程
  • PAI灵骏智算服务
  • 【什么是中间件】
  • 【人工智能机器学习基础篇】——深入详解无监督学习之降维:PCA与t-SNE的关键概念与核心原理
  • SCAU软件体系结构期末复习-名词解释题
  • leetcode题目(3)
  • <Uniswap v3 数学洞察>笔记(part 3)
  • MySQL 05 章——排序与分页