首頁 資料庫 mysql教程 基于Hadoop SLA认证机制实现权限控制

基于Hadoop SLA认证机制实现权限控制

Jun 07, 2016 pm 04:41 PM
h hadoop 基於 實現 控制 機制 權限 認證

Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特

Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特定的计算任务。当然,如果能够非常完美地解决这些问题是最好的。当前Hadoop本身提供的权限管理功能还不能满足普遍的需要,或者我们从Hadoop已有的一些简单或复杂的认证机制选择适合自己所在组织机构需要的,或者我们在外围开发一些权限管理系统与Hadoop整合作为补充。
对比Kerberos认证(Authentication)配置方式与SLA授权(Service Level Authorization)方式,Kerberos配置相当复杂,而且还要依赖于外部的密钥分发中心KDC(Key Distribution Center)服务器,如果KDC出现问题,那么就会导致依赖于KDC认证的整个Hadoop集群无法使用,鉴于此,对于一些相对小的开发团队来说还是更倾向于粗粒度的Hadoop SLA授权机制。
Hadoop SLA基于Hadoop的各种服务(基于协议来划分)与Linux系统的用户、用户组来实现。Hadoop通过制定接口协议的方式来实现节点之间服务调用的逻辑,这样每一个协议所指定的一组服务就是一个认证单元,再基于底层Linux系统的用户和用户组来限制用户(可能是节点服务)有权限执行某一种协议所包含的操作集合,下面我们看一下Hadoop中的各种协议:

协议名称 范围 说明
ClientProtocol HDFS 用户代码基于DistributedFileSystem与NameNode交互,可以操作Hadoop的Namespace,以及打开/关闭文件流操作。
ClientDatanodeProtocol HDFS 客户端与DataNode交互协议,用来实现数据库恢复(Block Recovery)。
DatanodeProtocol HDFS DataNode与NameNode通信的协议,DataNode基于此协议向NameNode发送block report,以及DataNode当前状态信息(如负载情况)。
InterDatanodeProtocol HDFS DataNode之间进行通信的协议,用来更新Block副本(replica)信息,如时间戳、长度等信息。
NamenodeProtocol HDFS SecondaryNameNode与NameNode进行通信的协议,用来获取NameNode的状态信息,如进行checkpoint的edits与fsimage。
AdminOperationsProtocol HDFS HDFS管理操作协议。
RefreshUserMappingsProtocol HDFS、MR 用来刷新缓存中用户与用户组映射关系信息,因为无论是操作HDFS,还是运行MapReduce Job,都会用到用户信息。
RefreshAuthorizationPolicyProtocol HDFS、MR 用来更新认证策略(Authorization Policy)配置,对应于配置文件/etc/hadoop/hadoop-policy.xml,控制执行hdfs dfsadmin -refreshServiceAcl和yarn rmadmin -refreshServiceAcl的权限。
HAServiceProtocol HDFS HDFS HA操作协议,用来管理Active NameNode与Stand-by NameNode状态。
ZKFailoverController HDFS ZooKeeper Failover控制器操作权限,用于HDFS HA。
QJournalProtocol HDFS QuorumJournalManager与JournalNode之间通信的协议,用于HDFS HA,用来同步edits,并协调Active NameNode与Stand-by NameNode状态。
HSClientProtocol HDFS 客户端与MR History Server之间通讯的协议,用来查看Job历史信息。
ResourceTracker YARN ResourceManager与NodeManager之间通信的协议。
ResourceManagerAdministrationProtocol YARN ResourceManager管理操作协议。
ApplicationClientProtocol YARN YARN客户端(Application)与ResourceManager通信的协议,包括Job提交、Job取消,查询Application状态信息等。
ApplicationMasterProtocol YARN ApplicationMaster与ResourceManager之间进行通信的协议,包括AM向RM发送注册或注销请求(获取或释放资源)。
ContainerManagementProtocol YARN ApplicationMaster与NodeManager之间进行通信的协议,包括启动/停止Container调用请求。
LocalizationProtocol YARN NodeManager与ResourceLocalizer之间进行通信的协议。
TaskUmbilicalProtocol MR Map/Reduce Task进程与后台父进程(向MR ApplicationMaster请求创建Map/Reduce Task)之间进行通信的协议。
MRClientProtocol MR MR JobClient与MR ApplicationMaster之间进行通信的协议,包括查询Job状态等。

上表中是基于SLA划分的不同服务级别,要想使SLA认证生效,首相需要在Hadoop配置文件/etc/hadoop/core-site.xml中增加如下配置内容:

        <property>
                <name>hadoop.security.authorization</name>
                <value>true</value>
        </property>
登入後複製

该配置属性hadoop.security.authorization默认是false,如果集群已经运行,修改了该配置需要重新启动Hadoop集群。然后需要进行SLA认证的详细配置,修改配置文件/etc/hadoop/hadoop-policy.xml,该配置文件中的配置项与对应的SLA协议之间的对应关系如下表所示:

配置项 协议名称
security.client.protocol.acl ClientProtocol
security.client.datanode.protocol.acl ClientDatanodeProtocol
security.datanode.protocol.acl DatanodeProtocol
security.inter.datanode.protocol.acl InterDatanodeProtocol
security.namenode.protocol.acl NamenodeProtocol
security.admin.operations.protocol.acl AdminOperationsProtocol
security.refresh.usertogroups.mappings.protocol.acl RefreshUserMappingsProtocol
security.refresh.policy.protocol.acl RefreshAuthorizationPolicyProtocol
security.ha.service.protocol.acl HAServiceProtocol
security.zkfc.protocol.acl ZKFailoverController
security.qjournal.service.protocol.acl QJournalProtocol
security.mrhs.client.protocol.acl HSClientProtocol
security.resourcetracker.protocol.acl ResourceTracker
security.resourcemanager-administration.protocol.acl ResourceManagerAdministrationProtocol
security.applicationclient.protocol.acl ApplicationClientProtocol
security.applicationmaster.protocol.acl ApplicationMasterProtocol
security.containermanagement.protocol.acl ContainerManagementProtocol
security.resourcelocalizer.protocol.acl LocalizationProtocol
security.job.task.protocol.acl TaskUmbilicalProtocol
security.job.client.protocol.acl MRClientProtocol

配置SLA权限,实际上是增加ACL(配置用户或用户组)基本格式要求如下:

  • 如果既有用户,又有用户组,配置内容格式:user1,user2 group1,group2
  • 如果只有用户组,配置内容前面增加一个空格: group1,group2
  • 配置内容为*,表示所有用户都具有对应的服务操作权限

下面,我们给定如下的需求:

  • hadoop用户作为Hadoop集群的管理员角色,可以执行任何操作
  • 为了防止其他用户使用hadoop用户,使hadoop用户归属于用户组g_super_adm,使属于该组的用户具有集群管理员权限
  • 只有hadoop用户具有修改SLA认证权限的配置
  • Storm集群使用storm用户运行Topology,将实时数据写入HDFS,storm用户只具有操作HDFS权限
  • 用户组g_dfs_client具有操作HDFS权限
  • 用户组g_mr_client具有在Hadoop上运行MapReduce Job的权限
  • 用户stater只具有操作HDFS和运行MapReduce Job的权限

通过进行配置实践,来满足上述要求。修改配置文件/etc/hadoop/hadoop-policy.xml中的部分配置项,具体修改的内容如下所示:

     <property>
          <name>security.client.protocol.acl</name>
          <value>stater,storm g_super_adm,g_dfs_client</value>
          <description>ACL for ClientProtocol, which is used by user code
               via the DistributedFileSystem.
               The ACL is a comma-separated list of user and group names. The user and
               group list is separated by a blank. For e.g. "alice,bob users,wheel".
               A special value of "*" means all users are allowed.
          </description>
     </property>
     <property>
          <name>security.refresh.policy.protocol.acl</name>
          <value>hadoop</value>
          <description>ACL for RefreshAuthorizationPolicyProtocol, used by the
               dfsadmin and mradmin commands to refresh the security policy in-effect.
               The ACL is a comma-separated list of user and group names. The user and
               group list is separated by a blank. For e.g. "alice,bob users,wheel".
               A special value of "*" means all users are allowed.
          </description>
     </property>
     <property>
          <name>security.job.client.protocol.acl</name>
          <value>stater g_super_adm,g_mr_client</value>
          <description>ACL for MRClientProtocol, used by job clients to
               communciate with the MR ApplicationMaster to query job status etc.
               The ACL is a comma-separated list of user and group names. The user and
               group list is separated by a blank. For e.g. "alice,bob users,wheel".
               A special value of "*" means all users are allowed.
          </description>
     </property>
登入後複製

其他的配置属性值保持默认值不变即可。为了保证整个Hadoop集群配置相同,需要将修改的配置文件同步到整个集群的所有节点上。
然后,为了使上述配置内容生效,需要执行如下命令:

hdfs dfsadmin -refreshServiceAcl
yarn rmadmin -refreshServiceAcl
登入後複製

修改SLA认证配置,不需要重启服务,根据修改内容执行上述命令就可以生效。
后面参考链接中,有些关于Hadoop SLA的文档内容貌似没有随着Hadoop版本升级而更新,与实际Hadoop发行版本中配置文件的内容有一定差别,可以参考,具体以实际版本的情况为准。

参考链接

  • http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html
  • http://hadoop.apache.org/docs/r2.2.0/hadoop-auth/Configuration.html
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
一鍵開啟root權限(快速取得root權限) 一鍵開啟root權限(快速取得root權限) Jun 02, 2024 pm 05:32 PM

可以讓使用者對系統進行更深入的操作和定制,root權限是一種管理員權限,在Android系統中。取得root權限通常需要一系列繁瑣的步驟,對於一般使用者來說可能不太友善、然而。透過一鍵開啟root權限,本文將介紹一種簡單而有效的方法,幫助使用者輕鬆取得系統權限。了解root權限的重要性及風險擁有更大的自由度,root權限可以讓使用者完全控製手機系統。加強安全控制等,客製化主題、使用者可刪除預先安裝應用程式。例如誤刪系統檔案導致系統崩潰,過度使用root權限也有風險、不慎安裝惡意軟體等,然而。在使用root權限前

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

PHP程式設計指南:實作斐波那契數列的方法 PHP程式設計指南:實作斐波那契數列的方法 Mar 20, 2024 pm 04:54 PM

程式語言PHP是一種用於Web開發的強大工具,能夠支援多種不同的程式設計邏輯和演算法。其中,實作斐波那契數列是一個常見且經典的程式設計問題。在這篇文章中,將介紹如何使用PHP程式語言來實作斐波那契數列的方法,並附上具體的程式碼範例。斐波那契數列是一個數學上的序列,其定義如下:數列的第一個和第二個元素為1,從第三個元素開始,每個元素的值等於前兩個元素的和。數列的前幾元

Discuz論壇權限管理:閱讀權限設定指南 Discuz論壇權限管理:閱讀權限設定指南 Mar 10, 2024 pm 05:33 PM

Discuz論壇權限管理:閱讀權限設定指南在Discuz論壇管理中,權限設定是至關重要的一環。其中,閱讀權限的設定尤其重要,它決定了不同使用者在論壇中能夠看到的內容範圍。本文將詳細介紹Discuz論壇的閱讀權限設置,以及如何針對不同的需求進行靈活的配置。一、閱讀權限基礎概念在Discuz論壇中,閱讀權限主要有以下幾個概念需要了解:預設閱讀權限:新使用者註冊後預設

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

掌握Golang如何實現遊戲開發的可能性 掌握Golang如何實現遊戲開發的可能性 Mar 16, 2024 pm 12:57 PM

在現今的軟體開發領域中,Golang(Go語言)作為一種高效、簡潔、並發性強的程式語言,越來越受到開發者的青睞。其豐富的標準庫和高效的並發特性使它成為遊戲開發領域的一個備受關注的選擇。本文將探討如何利用Golang來實現遊戲開發,並透過具體的程式碼範例來展示其強大的可能性。 1.Golang在遊戲開發中的優勢作為靜態類型語言,Golang正在建構大型遊戲系統

PHP遊戲需求實作指南 PHP遊戲需求實作指南 Mar 11, 2024 am 08:45 AM

PHP遊戲需求實現指南隨著網路的普及和發展,網頁遊戲的市場也越來越火爆。許多開發者希望利用PHP語言來開發自己的網頁遊戲,而實現遊戲需求是其中一個關鍵步驟。本文將介紹如何利用PHP語言來實現常見的遊戲需求,並提供具體的程式碼範例。 1.創造遊戲角色在網頁遊戲中,遊戲角色是非常重要的元素。我們需要定義遊戲角色的屬性,例如姓名、等級、經驗值等,並提供方法來操作這些

win7電腦設定everyone權限方法介紹 win7電腦設定everyone權限方法介紹 Mar 26, 2024 pm 04:11 PM

1.以e盤為例。開啟【計算機】,並點選【e盤】右擊【屬性】。如圖所示:2.在【視窗】頁面中,將介面切換到【安全性】選項,點選下方的【編輯】選項。如圖所示:3、在【權限】的選項中,並點選【新增】選項。如圖所示:4、彈出用戶和群組視窗點選【進階】選項。如圖所示:5、依序點選展開【立即尋找】—【everyone】選項,完成後,點選確定。如圖所示:6.當看到【e盤權限】頁面中的【群組或用戶中】新增了【everyone】這個用戶,選擇【everyone】並在【完全控制】前面打鉤,設定完成後,按下【確定】即可

See all articles