데이터 베이스 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

한 번의 클릭으로 루트 권한 활성화(빠른 루트 권한 획득) 한 번의 클릭으로 루트 권한 활성화(빠른 루트 권한 획득) Jun 02, 2024 pm 05:32 PM

이를 통해 사용자는 시스템에 대한 보다 심층적인 작업과 사용자 정의를 수행할 수 있습니다. 루트 권한은 Android 시스템의 관리자 권한입니다. 루트 권한을 얻으려면 일반적으로 일련의 지루한 단계가 필요하지만 일반 사용자에게는 친숙하지 않을 수 있습니다. 한 번의 클릭으로 루트 권한을 활성화함으로써 이 기사에서는 사용자가 시스템 권한을 쉽게 얻을 수 있는 간단하고 효과적인 방법을 소개합니다. 루트 권한의 중요성과 위험을 이해하고 더 큰 자유를 누리십시오. 루트 권한을 통해 사용자는 휴대폰 시스템을 완전히 제어할 수 있습니다. 보안 제어를 강화하고, 테마를 사용자 정의하며, 사용자는 사전 설치된 애플리케이션을 삭제할 수 있습니다. 예를 들어 실수로 시스템 파일을 삭제하여 시스템 충돌을 일으키는 경우, 루트 권한을 과도하게 사용하는 경우, 실수로 악성 코드를 설치하는 경우도 위험합니다. 루트 권한을 사용하기 전에

Huawei 휴대폰에서 이중 WeChat 로그인을 구현하는 방법은 무엇입니까? Huawei 휴대폰에서 이중 WeChat 로그인을 구현하는 방법은 무엇입니까? Mar 24, 2024 am 11:27 AM

Huawei 휴대폰에서 이중 WeChat 로그인을 구현하는 방법은 무엇입니까? 소셜 미디어의 등장으로 WeChat은 사람들의 일상 생활에 없어서는 안될 커뮤니케이션 도구 중 하나가 되었습니다. 그러나 많은 사람들이 동일한 휴대폰에서 동시에 여러 WeChat 계정에 로그인하는 문제에 직면할 수 있습니다. Huawei 휴대폰 사용자의 경우 듀얼 WeChat 로그인을 달성하는 것은 어렵지 않습니다. 이 기사에서는 Huawei 휴대폰에서 듀얼 WeChat 로그인을 달성하는 방법을 소개합니다. 우선, 화웨이 휴대폰과 함께 제공되는 EMUI 시스템은 듀얼 애플리케이션 열기라는 매우 편리한 기능을 제공합니다. 앱 듀얼 오픈 기능을 통해 사용자는 동시에

Huawei 휴대폰에서 WeChat 복제 기능을 구현하는 방법 Huawei 휴대폰에서 WeChat 복제 기능을 구현하는 방법 Mar 24, 2024 pm 06:03 PM

Huawei 휴대폰에서 WeChat 복제 기능을 구현하는 방법 소셜 소프트웨어의 인기와 개인 정보 보호 및 보안에 대한 사람들의 강조가 높아지면서 WeChat 복제 기능이 점차 주목을 받고 있습니다. WeChat 복제 기능을 사용하면 사용자가 동일한 휴대폰에서 여러 WeChat 계정에 동시에 로그인할 수 있으므로 관리 및 사용이 더 쉬워집니다. Huawei 휴대폰에서 WeChat 복제 기능을 구현하는 것은 어렵지 않습니다. 다음 단계만 따르면 됩니다. 1단계: 휴대폰 시스템 버전과 WeChat 버전이 요구 사항을 충족하는지 확인하십시오. 먼저 Huawei 휴대폰 시스템 버전과 WeChat 앱이 최신 버전으로 업데이트되었는지 확인하세요.

PHP 프로그래밍 가이드: 피보나치 수열을 구현하는 방법 PHP 프로그래밍 가이드: 피보나치 수열을 구현하는 방법 Mar 20, 2024 pm 04:54 PM

프로그래밍 언어 PHP는 다양한 프로그래밍 논리와 알고리즘을 지원할 수 있는 강력한 웹 개발 도구입니다. 그중 피보나치 수열을 구현하는 것은 일반적이고 고전적인 프로그래밍 문제입니다. 이 기사에서는 PHP 프로그래밍 언어를 사용하여 피보나치 수열을 구현하는 방법을 소개하고 구체적인 코드 예제를 첨부합니다. 피보나치 수열은 다음과 같이 정의되는 수학적 수열입니다. 수열의 첫 번째와 두 번째 요소는 1이고 세 번째 요소부터 시작하여 각 요소의 값은 이전 두 요소의 합과 같습니다. 시퀀스의 처음 몇 가지 요소

Discuz 포럼 권한 관리: 권한 설정 가이드 읽기 Discuz 포럼 권한 관리: 권한 설정 가이드 읽기 Mar 10, 2024 pm 05:33 PM

Discuz 포럼 권한 관리: 권한 설정 가이드 읽기 Discuz 포럼 관리에서 권한 설정은 중요한 부분입니다. 그중에서도 읽기 권한 설정은 다양한 사용자가 포럼에서 볼 수 있는 콘텐츠의 범위를 결정하므로 특히 중요합니다. 이 글에서는 Discuz 포럼의 읽기 권한 설정과 다양한 요구에 맞게 유연하게 구성하는 방법을 자세히 소개합니다. 1. 읽기 권한에 대한 기본 개념 Discuz 포럼에서 읽기 권한에는 주로 이해해야 할 다음 개념이 포함됩니다. 기본 읽기 권한: 신규 사용자 등록 후 기본값

Golang이 어떻게 게임 개발 가능성을 가능하게 하는지 마스터하세요 Golang이 어떻게 게임 개발 가능성을 가능하게 하는지 마스터하세요 Mar 16, 2024 pm 12:57 PM

오늘날의 소프트웨어 개발 분야에서 효율적이고 간결하며 동시성이 뛰어난 프로그래밍 언어인 Golang(Go 언어)은 점점 더 개발자들의 선호를 받고 있습니다. 풍부한 표준 라이브러리와 효율적인 동시성 기능으로 인해 게임 개발 분야에서 주목받는 선택이 되었습니다. 이 기사에서는 게임 개발에 Golang을 사용하는 방법을 살펴보고 특정 코드 예제를 통해 Golang의 강력한 가능성을 보여줍니다. 1. 게임 개발에서 Golang의 장점 Golang은 정적인 유형의 언어로서 대규모 게임 시스템을 구축하는 데 사용됩니다.

PHP 게임 요구 사항 구현 가이드 PHP 게임 요구 사항 구현 가이드 Mar 11, 2024 am 08:45 AM

PHP 게임 요구사항 구현 가이드 인터넷의 대중화와 발전으로 인해 웹 게임 시장이 점점 더 대중화되고 있습니다. 많은 개발자는 PHP 언어를 사용하여 자신만의 웹 게임을 개발하기를 원하며 게임 요구 사항을 구현하는 것이 핵심 단계입니다. 이 문서에서는 PHP 언어를 사용하여 일반적인 게임 요구 사항을 구현하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. 게임 캐릭터 만들기 웹게임에서 게임 캐릭터는 매우 중요한 요소입니다. 이름, 레벨, 경험치 등 게임 캐릭터의 속성을 정의하고, 이를 운용할 수 있는 방법을 제공해야 합니다.

공유 폴더의 권한을 어디에서 설정합니까? Win10에서 공유 폴더의 권한을 읽기 전용으로 설정하고 수정할 수 없도록 하는 팁 공유 폴더의 권한을 어디에서 설정합니까? Win10에서 공유 폴더의 권한을 읽기 전용으로 설정하고 수정할 수 없도록 하는 팁 Feb 29, 2024 pm 03:43 PM

Win10에서 공유 폴더 읽기 전용 권한을 설정하는 방법은 무엇입니까? 호스트가 폴더를 공유한 후 일부 사용자는 다른 사람이 파일에 액세스하고 읽고 볼 수만 있기를 원하고 다른 사람이 호스트의 파일을 수정하는 것을 원하지 않습니다. 이 문서는 공유 폴더의 권한을 읽기 전용으로 설정하고 수정할 수 없도록 설정하는 방법에 대한 자습서입니다. 1. 먼저 일반 프로세스에 따라 폴더를 공유합니다. 호스트에서 공유해야 하는 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성-공유-고급 공유-확인을 선택합니다. 2. 그런 다음 폴더 공유를 클릭합니다. 아래 권한 옵션은 기본적으로 모든 사람 계정을 추가합니다. 3. 아래의 읽기 권한만 확인한 다음 확인을 클릭합니다. 4. 속성 보안을 찾아 Ever를 추가합니다.

See all articles