CDP集群安全指南-静态数据加密
[一]静态数据加密的架构https://i-blog.csdnimg.cn/direct/1801b4d249804997a324635241425e65.png
CDP 支持两种加密组件,这些组件可以组合成独特的解决方案。在选择密钥管理体系(KMS)时,您需要决定哪些组件可以或许满足企业的密钥管理和加密需求。
CDP 加密组件
以下是 Cloudera 用于静态数据加密的组件描述:
[*] Ranger Key Management System (KMS)
Ranger 扩展了 Hadoop 原生 KMS 的功能,允许将密钥存储在安全的数据库中。它是一个支持 HDFS TDE(透明数据加密)的密码密钥管理服务,但并非通用密钥管理体系。与 Hadoop KMS 不同,Hadoop KMS 将密钥存储在基于文件的 Java Keystore 中,仅能通过 KeyProvider API 访问。
[*] Navigator Encrypt
提供透明的静态数据加密和掩护,无需对应用程序进行更改。
CDP 加密解决方案
您可以通过以下任意解决方案部署加密组件来实现静态数据加密:
[*] 仅使用 Ranger KMS(本文演示使用这种方式)
[*]仅由 Ranger KMS 和提供密钥存储的后端数据库构成。
[*]Ranger KMS 提供企业级密钥管理。
[*] Ranger KMS + HSM(硬件安全模块)
[*]包罗 Ranger KMS(带数据库)和与后端硬件安全模块(HSM)的集成。
[*]Ranger KMS 提供企业级密钥管理。
[*]HSM 提供加密区密钥掩护,仅存储加密主密钥。
[二]静态数据加密的要求
熵要求
加密操作依赖熵来确保随机性,而随机性是防止攻击者猜测或破解加密过程的关键。如果随机数缺乏富足的熵,整个加密体系的安全性就会受到威胁。因此,熵在加密中起着至关紧张的作用。您可以通过运行以下命令来检查 Linux 体系上的可用熵:
cat /proc/sys/kernel/random/entropy_avail 该命令的输出会显示当前可用的熵值。建议多次检查熵值,以确定体系熵池的状态。如果熵值持续较低(500 或更少),则需要通过安装 rng-tools 并启动 rngd 服务来增加熵值。
https://i-blog.csdnimg.cn/direct/e647b786a11e4a049377f19443881e6e.png
【提醒】由于迩来的 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-添加服务
https://i-blog.csdnimg.cn/direct/3fb937d1d1934f8b9bb414f92fff38d9.png
2-选择依赖
https://i-blog.csdnimg.cn/direct/362c453c924443a4bf715665f60c0b52.png
3-分配脚色
https://i-blog.csdnimg.cn/direct/f835501e2f6248b7ba3106015f3a8fee.png
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'@'%'; https://i-blog.csdnimg.cn/direct/a608fd68b56d40d9900c9cbebd2c8164.png
5-审核更改
https://i-blog.csdnimg.cn/direct/681a6d830c704d59a4a40565e158f252.png
6-命令详细信息
https://i-blog.csdnimg.cn/direct/edfdb2a474714b3aa405603deea5d3e0.png
7-汇总
https://i-blog.csdnimg.cn/direct/dc27e4431a374e40b14f7b1d01f65a00.png
8-重启集群并部署客户端设置
https://i-blog.csdnimg.cn/direct/82fa4d8940a344289583bb3d60c19548.png
【紧张提醒】Ranger 为 Ranger 和 Ranger KMS 使用了独立的管理员用户。
[*]Ranger 管理员用户负责管理 Ranger 的访问策略。
[*]Ranger KMS 管理员用户(默认是 keyadmin)负责管理 Ranger KMS 的访问策略和加密密钥,并可以访问与 Ranger 管理员用户不同的一组用户界面功能。
为 Ranger 和 Ranger KMS 使用独立的管理员账户,可以将加密工作(如加密密钥和策略)与集群管理和访问策略管理分离开来。
[四]-管理一个加密区
1-测试加密优化是否有效
# 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
# 如果您在 openssl 行中看到 true,阐明 Hadoop 已检测到准确版本的 libcrypto.so,加密优化将正常工作。如果您在该行中看到 false,阐明您没有安装准确的版本。
2-创建加密用的key
# 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
# 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.
# hadoop key list
Listing keys for KeyProvider: org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider@2f8dad04
keytrustee_test
# 3-创建加密区
# 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
# hadoop fs -mkdir /encryption_zone
# hdfs crypto -createZone -keyName keytrustee_test-path /encryption_zone
Added encryption zone /encryption_zone
# hdfs crypto -listZones
/encryption_zonekeytrustee_test
# 这样任何上传到hdfs/encryption_zone目录下的文件都是被加密的状态
【紧张提醒】默认情况下,distcp 使用文件体系提供的校验和(checksum)来验证数据是否乐成复制到目标位置。然而,当从加密位置复制时,文件体系的校验和将不匹配,因为底层块数据不同。这无论目标位置是否加密,情况都相同。在这种情况下,您可以指定 -skipcrccheck 和 -update 标志以跳过校验和验证。使用 -skipcrccheck 时,distcp会在每个文件复制完成后,通过文件大小比力来检查文件完备性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]