全部產品
Search
文件中心

E-MapReduce:YARN高安全特性使用指南

更新時間:Jul 01, 2024

本文介紹YARN高安全特性以及相關配置項。

背景資訊

建立叢集時,如果開啟Kerberos身份認證開關,則建立的叢集為高安全叢集,可以使用E-MapReduce(簡稱EMR)提供的高安全特性。在高安全叢集中YARN服務預設開啟了以下特性,對使用行為做了一定的限制,來保證叢集的資料安全:

Kerberos認證

建立高安全叢集時,EMR為YARN自動設定了Kerberos相關的配置項,無需您手動設定。Kerberos的詳細資料,請參見Kerberos概述

針對高安全叢集,使用用戶端時必須在Kerberos認證後才能訪問YARN的RPC服務和HTTP服務,樣本如下。

kinit
yarn node -list
kdestroy

kinit
curl --negotiate -u: http://master-1-1:8088/ws/v1/cluster/nodes
kdestroy

ACL授權

高安全叢集中,YARN ACL(Access Control List)功能預設開啟,並且預設只授權服務賬戶所在的hadoop組進行YARN服務管理和所有隊列管理(包括作業提交)。YARN ACL功能總開關為yarn.acl.enable=true

YARN服務系統管理權限

預設高安全配置為yarn.admin.acl= hadoop,其中hadoop前有單個空格,表示授權給hadoop組(EMR的服務啟動Linux使用者通常都是使用hadoop組)作為服務管理員。Hadoop中使用者預設的組映射來自節點作業系統的組資訊。

說明

yarn.admin.acl= hadoop配置值的通常格式為使用者 使用者組,前面是使用者,後面是使用者組,中間使用空格分割,使用者和使用者組可配置多個,均使用逗號(,)分割。例如,user1,user2 group1,group2,只有使用者組的情況下,必須在最前面加上空格;只有單個空格表示不授權給任何使用者和使用者組。

YARN隊列系統管理權限

YARN隊列許可權有提交作業SUBMIT_APPLICATIONS和管理隊列兩類。

建立EMR高安全叢集時,YARN服務的capacity-scheduler.xml中Capacity Scheduler調度器的預設配置yarn.scheduler.capacity.root.acl_submit_applications= (配置值為單個空格)和yarn.scheduler.capacity.root.acl_administer_queue= hadoophadoop前有單個空格),表示所有隊列預設將隊列系統管理權限授權給hadoop組,此時非hadoop組的使用者無法提交作業到任何隊列(您可以使用id命令查看目前使用者的組資訊)。

如果您叢集的使用者比較少,不需要進行管理ACL功能,則可以刪除上面的兩個配置項,然後在YARN服務的狀態頁面,單擊ResourceManager組件操作列的refresh queues進行隊列配置熱更新,關閉隊列ACL功能。

隊列管理使用方式情節:

  • 如果您需要使用ACL功能管理,建議配合Ranger使用,可以可視化配置和動態系統管理使用者的隊列許可權。

    說明

    Ranger目前僅支援Capacity Scheduler調度器,詳情請參見配置YARN開啟Ranger許可權控制

  • 手動編輯capacity-scheduler.xml,新增配置項yarn.scheduler.capacity.root.<queue-path>.acl_submit_applicationsyarn.scheduler.capacity.root.<queue-path>.acl_administer_queue進行隊列ACL授權,詳情請參見Queue Properties隊列ACL配置

    隊列ACL可以結合Capacity Scheduler調度器隊列映射(Queue Mapping)特性使用,在capacity-scheduelr.xml設定檔中使用yarn.scheduler.capacity.queue-mappings配置使用者或使用者組提交作業的預設隊列規則,通過yarn.scheduler.capacity.queue-mappings-override.enable=true使提交作業強制使用Queue Mappings中規定的映射。

YARN作業系統管理權限

YARN作業許可權有查看作業資訊的許可權VIEW_APP和修改作業的許可權MODIFY_APP兩類。

  • 查看作業資訊的許可權:主要指YARN各個組件中擷取作業資訊和日誌查看的許可權,不包括引擎側自身對使用者VIEW_APP行為的限制。

    MapReduce引擎在mapred-site.xml中預設配置mapreduce.job.acl-view-job=*,放開了該許可權。

  • 修改作業的許可權:在YARN中終止作業時,直接使用管理隊列的許可權ADMINISTER_QUEUE進行ACL管理。

LCE安全容器

非高安全叢集YARN服務運行容器預設使用的實作類別為DefaultContainerExecutor,如果使用者容器使用hadoop賬戶進行操作,則無法通過認證鑒權的方式進行隔離。使用者可以惡意訪問修改服務自身相關檔案和配置,不同租戶之間也存在惡意訪問他人資源的可能性。EMR高安全叢集預設配置使用Linux Container Executor(LCE)安全模式運行安全容器。LCE基於Linux setuid機制讓容器用作業提交使用者的賬戶運行,從而回收了容器高危且非必需的許可權。

使用LCE安全容器必須保證NodeManager上有作業提交使用者對應的Linux賬戶。一種方案(推薦)是使用EMR控制台上的使用者管理功能來添加帳號,這種方式會將使用者添加到EMR叢集的OpenLDAP中,並通過每個節點的Nslcd服務對應該使用者為Linux使用者(叢集必須安裝OpenLDAP服務)。另外一種方案是對Linux帳號進行手動管理,在每個節點上添加YARN對應的Linux賬戶,並且添加對應的引導指令碼,保證在擴容節點上也會自動執行賬戶添加操作。