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
添加到这个策略中。如下图:
如果不添加这个策略,将来向加密目录上传文件时会报错:
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论