配置MRS集群用户的OBS的细粒度访问权限
开启细粒度权限时,用户通过该指导配置访问OBS权限,实现MRS用户对OBS文件系统下的目录权限控制。
该章节内容不适用于MRS 1.9.2版本。
如需对MRS的用户访问OBS的资源进行详细控制,可通过该功能实现。例如,您只允许用户组A访问某一OBS文件系统中的日志文件,您可以执行以下操作来实现:
- 为MRS集群配置OBS访问权限的委托,实现使用ECS自动获取的临时AK/SK访问OBS。
- 在IAM中创建一个只允许访问某一OBS文件系统中的日志文件的策略,并创建一个绑定该策略权限的委托。
- 在MRS集群中,新建的委托与MRS集群中的用户组A进行绑定,即可实现用户组A只拥有访问某一OBS文件系统中的日志文件的权限。
- spark-beeline在开启Kerberos认证的集群中提交作业的内置用户名为spark,在未开启Kerberos认证的集群中提交作业的内置用户名为omm。
- hbase shell在开启Kerberos认证的集群提交作业的内置用户名为hbase,在未开启Kerberos认证的集群中提交作业的内置用户名为omm。
- Presto在开启Kerberos认证的集群提交作业的内置用户名为omm、hive,在未开启Kerberos认证的集群提交作业的内置用户名为omm。可通过在MRS管理控制台的集群详情页面,选择“组件管理 > Presto > 服务配置”,选择“全部配置”,搜索并修改参数“hive.hdfs.impersonation.enabled”的值为“true”,以实现MRS多用户访问OBS细粒度权限功能。
前提条件
- 开启细粒度权限控制的用户,权限管理请参考创建IAM用户并授权使用MRS。
- 需要对IAM的委托和OBS细粒度策略有一定了解。
给集群配置有OBS访问权限的委托
请参考配置MRS集群通过IAM委托对接OBS配置OBS访问权限的委托。
配置的委托对该集群上所有用户(包括内置用户)及用户组生效,如需对集群上的用户及用户组访问OBS的权限进行控制请继续执行后续步骤。
配置OBS路径权限时,如果配置了写权限,需要同步配置对应的回收站路径。默认回收站路径为“/user/${current.user}/.Trash/”,${current.user}表示当前使用的用户名。
在IAM服务中创建策略及委托
创建拥有不同访问权限的策略,并将策略与委托进行绑定,具体操作请参考参考:在IAM服务创建策略及委托。
配置OBS权限控制映射关系
- 在MRS控制台,选择“现有集群”并单击集群名称。
- 在“概览”页签的基本信息区域,单击“OBS权限控制”右侧的“单击管理”。
- 单击“添加映射”,并参考表1配置相关参数。
表1 添加OBS权限控制映射关系 参数
说明
IAM委托
选择2中创建的委托。
类型
- User:在用户级别进行映射
- Group:用户组级别进行映射
说明:- 用户级别的映射优先级大于用户组级别的映射。若选择Group,建议在“MRS用户(组)”一栏,填写用户的主组名称。
- 请避免同个用户名(组)出现在多个映射记录上。
MRS 用户(组)
MRS中的用户(组)的名称,以英文逗号进行分隔。
说明:- 对于没有配置在OBS权限控制的用户,且没有配置AK、SK时,将以MRS_ECS_DEFAULT_AGENCY中的OBS OperateAccess的权限访问OBS。对于组件内置用户不建议绑定在委托中。
- 如需对组件内置用户在以下场景提交作业时配置委托,要求如下:
- 如需对spark-beeline的操作进行权限控制,开启Kerberos认证的集群配置用户名“spark”,未开启Kerberos认证的集群配置用户名“omm”。
- 如需对hbase shell的操作进行权限控制,开启Kerberos认证的集群配置用户名“hbase”,未开启Kerberos认证的集群配置用户名“omm”。
- 如需对Presto的操作进行权限控制,开启Kerberos认证的集群配置用户名“omm”、“hive”和登录客户端的用户名,未开启Kerberos认证的集群配置用户名“omm”和登录客户端的用户名。
- 如需使用Hive在beeline模式下创建表时,配置内置用户“hive”。
- 单击“确定”。
- 勾选“我同意授权MRS用户(组)与IAM委托之间的信任关系。”,并单击“确定”,完成MRS用户与OBS权限的映射关系。
当集群详情页面“概览”页签的“OBS权限控制”后出现或OBS权限控制的映射表已刷新,表示映射生效(过程大约需要1分钟)。
在关系列表的“操作”列可以对已添加的关系进行编辑和删除。
- 对于没有配置在OBS权限控制的用户,且没有配置AK、SK时,将以集群配置的委托在“对象存储服务”项目下所拥有的权限访问OBS。
- 无论用户是否配置OBS权限控制,只要配置AK、SK时,将以AK、SK的权限访问OBS。
- 映射关系的修改、创建、删除需要用户有Security Administrator权限。
- 修改映射关系后,若想使之在spark-beeline中生效,需要重启Spark服务,若想使之在Hive beeline中生效,需要退出beeline重新进入,若想使之在Presto服务中生效,需要重启Presto服务。
在开启OBS权限控制功能时各组件访问OBS的说明
- 以root用户登录集群任意一个节点,密码为用户创建集群时设置的root密码。
- 配置环境变量:
cd 客户端安装目录
source 客户端安装目录/bigdata_env
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS集群用户
例如:
kinit admin
- 如果当前集群未启用Kerberos认证,执行如下命令登录执行操作的用户,该用户需要属于supergroup组,创建用户可参考创建MRS集群用户,将XXXX替换成用户名。
mkdir /home/XXXX
chown XXXX /home/XXXX
su - XXXX
- 访问OBS,无需再配置AK、SK和Endpoint。
OBS路径格式:obs://OBS并行文件系统名称/XXX
hadoop fs -ls "obs://obs-example/job/hadoop-mapreduce-examples-3.1.2.jarobs-example/job/hadoop-mapreduce-examples-3.1.2.jar"
- 如需使用hadoop fs删除OBS上文件,请使用hadoop fs -rm -skipTrash来删除文件。
- spark-sql、spark-beeline在创建表时,若不涉及数据导入,则不会访问OBS。即若在一个无权限的OBS目录下创建表,CREATE TABLE仍会成功,但插入数据会报403 AccessDeniedException。
参考:在IAM服务创建策略及委托
- 在IAM服务创建策略。
- 登录IAM服务控制台。
- 选择“权限管理 > 权限 > 创建自定义策略”。
- 参考表2填写参数。常用的OBS自定义策略样例请参考OBS自定义策略。
表2 策略参数 参数
说明
策略名称
只能包含如下字符:大小写字母、中文、数字、空格和特殊字符(-_.,)。
作用范围
选择全局级服务,OBS为全局服务。
配置策略方式
选择“可视化视图”。
策略内容
- “允许”选择“允许”。
- “云服务”选择“对象存储服务 (OBS)”。
- “操作”勾选所有“写”、“列表”和“只读”权限。
- “所有资源”选择“特定资源”,并配置以下参数:
- “object”选择“通过资源路径指定”,并单击“添加资源路径”添加路径,此处以/tmp目录为例,如需其他目录权限请参考该步骤添加对应目录及该目录下所有对象的资源路径。
例如,分别输入路径“obs_bucket_name/tmp/”和“obs_bucket_name/tmp/*”。
- “bucket”选择“通过资源路径指定”,并单击“添加资源路径”输入路径“obs_bucket_name”。
- “object”选择“通过资源路径指定”,并单击“添加资源路径”添加路径,此处以/tmp目录为例,如需其他目录权限请参考该步骤添加对应目录及该目录下所有对象的资源路径。
- (可选)请求条件:暂不添加。
策略描述
可选,对策略的描述。
各个组件的写数据操作若通过rename的方式实现时,写数据时要配置删除对象的权限。
- 单击“确定”保存策略。
- 在IAM服务创建委托。
- 登录IAM服务控制台。
- 选择“委托 > 创建委托”。
- 参考表3填写参数。
表3 委托参数 参数
说明
委托名称
只能包含如下字符:大小写字母、中文、数字、空格和特殊字符(-_.,)。
委托类型
选择普通账号。
委托的账号
填写本用户的云账号,即使用手机号开通的账号,不能是联邦用户或者IAM用户。
持续时间
请根据需要选择。
描述
可选,对委托的描述。
权限选择
- 在“项目”列对应的“对象存储服务”行,单击“操作”列的“修改”。
- 勾选1中创建的策略,使之出现在“已选择策略中”。
- 单击“确定”。
- 单击“确定”保存委托。
当使用该委托访问过OBS后,再修改该委托及其绑定的策略时,最长需要等待15分钟,修改的内容才能生效。