HDFS 加密类型

加密类型:

  • 卷加密。加密整个卷。
  • 应用加密。应用程序完成加密。
  • Rest 加密。加密文件或目录。这是一种端到端加密,传输的是密文数据。HDFS 系统不能访问加密后的明文数据。 详细内容参考 ​HDFS Encryption Overview

操作过程

1.创建加密区密钥

在 ranger 界面中以用户 keyadmin:keyadmin 登录。密钥管理的管理员与一般的管理员分离。

通过菜单路径 Encrypting -> Add New Key 来添加加密区密钥。密钥名称是 zonekey1

2.设置密钥策略

通过菜单路径 Access Manager -> Resource Based Policies 进入策略定义界面,点击 HDP2610_kms,这是安装kms后默认创建的策略。显示了一条初始的策略 all - keyname。编辑这个策略,将用户 jj 添加到这个策略中。如下图:

HDFS 加密类型

如果不添加这个策略,将来向加密目录上传文件时会报错:

put: User:jj not allowed to do 'DECRYPT_EEK' on 'zonekey1'

经测试,在 KMS 中,向策略中添加用户管用,但添加用户组不管用。在本文的最后,有社区的解决方案,向 kms-acls.xml 中添加 property,但测试也不管用。

3.创建加密区

$ kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-hdp2610

$ hdfs dfs -mkdir /tmp/webb (创建目录)

$ hdfs dfs -chmod 777 /tmp/webb (设置权限,其它用户有写权限)

$ hdfs crypto -createZone -keyName zonekey1 -path /tmp/webb (创建加密区)

4.上传加密文件

不能直接用 hdfs 用户(HDFS的管理用户)访问加密目录(hadoop基于安全的考虑),所以要使用 jj 用户来测试。

$ kadmin.local -q "addprinc jj”

$ kinit jj@AMBARI.APACHE.ORG (换用户jj登录)

$ hdfs dfs -put ca.key /tmp/webb

权限控制相关

在 KMS 的配置 Advanced dbks-site (文件路径是 /etc/ranger-kms/2.6.1.0-129/0/dbks-site.xml)中有个属性 hadoop.kms.blacklist.DECRYPT_EEK,是个用户黑名单,名单上的用户不能访问 Ranger 的解密功能。黑名单的默认值是 hdfs。所以在默认情况下:

$ kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-hdp2610

$ hdfs dfs -copyFromLocal ca.crt /tmp/webb

copyFromLocal: User:hdfs not allowed to do 'DECRYPT_EEK' on 'zonekey1'

如果把这个默认值改掉,如随便输入个不存在的用户,保存并服务重启后就可以执行上面的向加密区上传文件的命令了。

其它

查看加密区列表:

$ kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-hdp2610

$ hdfs crypto -listZones

/tmp/webb zonekey1

删除加密区:

$ hdfs dfs -rm -R /tmp/webb

以上是 HDFS 加密类型 的全部内容, 来源链接: utcz.com/p/233364.html

回到顶部