我正在尝试学习如何在Hadoop中实现Kerberos 我已经阅读了这份文件https://issues.apache.org/jira/browse/HADOOP-4487 我也经历过Basic Kerberos的东西(https://www.youtube.com/watch?v=KD2Q-2ToloE)
1)Apache doc使用" Token" 这个词,而互联网上的一般文档使用术语" Ticket"
Token和Ticket是否相同?
2)Apache doc" DataNodes不对访问其数据块强制执行任何访问控制。
这使得未经授权的客户端可以读取数据块 只要她能提供其块ID。任何人都可以写作 任意数据块到DataNodes。"
我对此的看法: -
我可以使用以下命令从文件路径中获取块ID: -
hadoop@Studio-1555:/opt/hadoop/hadoop-1.0.2/bin$ ./hadoop fsck /hadoop/mapred/system/jobtracker.info -files -blocks
FSCK由hadoop从/127.0.0.1开始为路径/hadoop/mapred/system/jobtracker.info于2012年7月9日星期一06:57:14 /hadoop/mapred/system/jobtracker.info 4个字节,1个块:好的 0. blk_-9148080207111019586_1001 len = 4 repl = 1
当我被授权访问此文件jobtracker.info时,我能够使用上述命令找到它的blockID。
我想如果我为这个块ID添加一些偏移并写入该datanode。
如何在向HDFS写入文件时明确提及blockID。(命令是什么?)
将任意数据块写入DataNodes的其他任何方式?
请告诉我,我的做法是否错误?
答案 0 :(得分:3)
Token和Ticket是否相同?
没有。票证由Kerberos发布,然后Hadoop(NameNode或JobTracker)中的服务器发出令牌以在Hadoop集群内提供身份验证。例如,Hadoop不依赖Kerberos来验证正在运行的任务,而是使用自己基于Kerberos票证发布的令牌。
Apache doc也“DataNodes对访问其数据块不强制执行任何访问控制。
我猜你是通过BlockAccessTokens从提供访问控制的JIRA(https://issues.apache.org/jira/browse/HADOOP-4359)中获取的。假设它已打开 - 它应该在一个安全的集群中 - 在没有这样的令牌的情况下无法访问datanode上的块,这是由NameNode在通过Kerberos和HDFS自己的文件系统权限进行身份验证和授权后发出的。
答案 1 :(得分:0)
如何访问Datanode并随意写入数据?
我不确定你的意思。你是说用户没有权限吗?正如雅各布所说 除非用户具有基于文件系统权限访问数据的权限,否则您将无法获得有效的BlockAccessToken,前提是您拥有安全的Hadoop集群。