
# 配置Guardian服务启用Ranger OBS路径鉴权
#### 操作场景
该章节指导用户开启Guardian组件存算分离操作，且对接OBS后，支持通过Ranger配置组件关于OBS相关路径的权限策略（需确保OBS服务已开启AccessLabel功能，若未开启，需手动开启，详细操作请联系OBS服务运维人员）。配置后Guardian可以在存算分离场景下为HDFS、Hive、Spark、Loader、HetuEngine等服务提供访问OBS的临时认证凭据。
配置Guardian服务对接OBS主要操作如下：
1. [创建OBS并行文件系统]
2. [创建普通账号委托]
3. [创建云服务委托并绑定集群]
4. [为Guardian组件配置访问OBS权限]
5. [开启Hive表的级联授权功能]
6. [配置回收站清理策略]
7. [配置OBS碎片生命周期规则]
 
#### 前提条件
- 集群已安装Guardian、Ranger、Hadoop等组件。
- 如果安装Hadoop、HetuEngine、Hive、Spark等组件后，再安装Guardian，则需要重新下载客户端，并对管理面作业提交的默认客户端进行刷新。
- 如果集群未启用Kerberos认证（普通模式），需在Manager界面，选择"集群 \> 服务 \> *服务名称*"，在概览页面右上角选择"更多 \> 启用Ranger鉴权"启用相关服务的Ranger鉴权功能。
 
#### 约束与限制
仅OBS并行文件系统路径支持配置Guardian服务启用Ranger OBS路径鉴权功能，需确保MRS集群对接的OBS为OBS并行文件系统，否则可能导致访问OBS报错。
#### 对系统的影响
- 配置完该章节操作后，原始的客户端需要重新刷新配置，或重新安装客户端。
- 如果需要在管理控制台执行作业提交操作，需要使用**omm** 用户登录主OMS节点并执行以下命令刷新集群内置客户端：
  ```
  sh /opt/executor/bin/refresh-client-config.sh
  ```
  
 
 #### 创建OBS并行文件系统
1. 登录[OBS管理控制台](https://console.huaweicloud.com/obs/)。
2. 选择"并行文件系统 \> 创建并行文件系统"。
3. 填写文件系统名称，例如"guardian-obs"。 企业项目需要与MRS集群保持一致，其他参数请根据需要填写。
   
4. 单击"立即创建"。
 
 #### 创建普通账号委托
1. 登录[IAM管理控制台](https://console.huaweicloud.com/iam)。
2. 选择"委托 \> 创建委托"。
3. 在创建委托页面配置以下参数，并单击"完成"：
   - 委托名称：设置委托名称，例如：agency-MRS-to-OBS。
   
   - 委托类型：选择"普通账号"。
   
   - 委托的账号：填写本用户的云账号，即使用手机号开通的账号，不能是联邦用户或者IAM用户。
   
   - 持续时间：选择"永久"。
    
4. 在授权的确认弹窗中，单击"立即授权"，在弹出的授权页面，单击"新建策略"。
   在新建策略界面配置以下参数并单击"下一步"：
   - 策略名称：自定义策略名称，例如"guardian-policy"。
   
   - 策略配置方式：选择"JSON视图"。
   
   - 策略内容配置如下：
     ```
     {
         "Version": "1.1",
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
     "obs:bucket:GetBucketLocation",
     "obs:bucket:ListBucketMultipartUploads",
     "obs:object:GetObject",
     "obs:object:ModifyObjectMetaData",
     "obs:object:DeleteObject",
     "obs:object:ListMultipartUploadParts",
     "obs:bucket:HeadBucket",
     "obs:object:AbortMultipartUpload",
     "obs:bucket:ListBucket",
     "obs:object:PutObject",
     "obs:object:GetAccessLabel",
     "obs:object:DeleteAccessLabel",
     "obs:object:PutAccessLabel",
             "obs:bucket:ListAllMyBuckets"
                 ],
                 "Resource": [
                     "OBS:*:*:bucket:guardian-obs",
                     "OBS:*:*:object:*"
                 ]
             }
         ]
     }
     ```
     上述的"Resource"配置表示可访问配置的并行文件系统的所有资源，*guardian-obs* 为[创建OBS并行文件系统]创建的OBS并行文件系统名称。
     
     
5. 单击"下一步"，在"选择策略"页面勾选[4]创建的策略名称。
6. 单击"下一步"，在"选择授权范围"中勾选"全局服务资源"，单击"确定"。
7. 创建完成后，将鼠标放在新建的委托上，记录下委托ID，如下图所示。
   图1查看委托ID   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879581364.png "点击放大") 
 
 #### 创建云服务委托并绑定集群
1. 登录[IAM管理控制台](https://console.huaweicloud.com/iam)。
2. 选择"委托 \> 创建委托"。
3. 设置"委托名称"。例如：mrs_ecs_obs。
4. "委托类型"选择"云服务"，在"云服务"中选择"弹性云服务器ECS 裸金属服务器 BMS"，授权ECS或BMS调用OBS服务。
   图2创建委托   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002057580685.png) 
5. "持续时间"选择"永久"并单击"完成"。
6. 在授权的确认弹窗中，单击"立即授权"，在弹出的授权页面，单击"新建策略"。
   在新建策略界面配置以下参数并单击"下一步"：
   - 策略名称：自定义策略名称，例如"guardian-assume-policy"。
   
   - 策略配置方式：选择"JSON视图"。
   
   - 策略内容配置如下（**其中"{委托id}"为[7]记录的ID** ）：
     ```
     {
         "Version": "1.1",
         "Statement": [
             {
                 "Action": [
                     "iam:agencies:assume"
                 ],
                 "Resource": {
                     "uri": [
                         "/iam/agencies/{委托id}"
                     ]
                 },
                 "Effect": "Allow"
             }
         ]
     }
     ```
     
     
7. 单击"下一步"，在"选择策略"页面勾选[6]创建的策略名称。
8. 单击"下一步"，在"选择权限范围方案"中选择"全局服务资源"，单击"确定"。
9. 在弹出的提示框中单击"知道了"，开始授权。界面提示"授权成功。"，单击"完成"，委托成功创建。
10. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
11. 在导航栏选择"现有集群"。
12. 单击集群名称，进入集群详情页面。
13. 在集群详情页的"概览"页签，单击"IAM用户同步"右侧的"同步"进行IAM用户同步。
14. 在集群详情页的"概览"页签，单击委托右侧的"管理委托"选择创建的委托名称，例如"mrs_ecs_obs"，单击"确定"进行绑定。
    图3绑定委托   
    ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879581368.png) 
 
 #### 为Guardian组件配置访问OBS权限
1. 登录MRS集群Manager界面，具体请参见[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)，选择"集群 \> 服务 \> Guardian \> 配置 \> 全部配置"搜索并修改以下参数。
   
   | 参数                                    | 含义                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 取值示例                                                                              |
   |:---|:---|:---|
   | fs.obs.guardian.accesslabel.enabled   | 是否开启使用Guardian对接OBS的access label。 - true：对接OBS后，可通过Ranger配置组件关于OBS相关路径的权限策略，需确保OBS服务已开启AccessLabel功能，若未开启，需手动开启，详细操作请联系OBS服务运维人员。  - false：对接OBS后，不能通过Ranger配置组件关于OBS相关路径的权限策略，无需关注OBS服务是否开启AccessLabel功能。   该参数值需设置为"true"。 | true                                                                              |
   | fs.obs.guardian.enabled               | 是否开启使用Guardian。 - true：开启使用Guardian。  - false：默认值，不使用Guardian。                                                                                                                                                              | true                                                                              |
   | fs.obs.delegation.token.providers     | delegation token生成器，当"fs.obs.guardian.enabled"参数值为"true"时，需要同时配置com.huawei.mrs.dt.MRSDelegationTokenProvider和com.huawei.mrs.dt.GuardianDTProvider。                                                                                                                                                                                                                                                                                                          | com.huawei.mrs.dt.MRSDelegationTokenProvider和com.huawei.mrs.dt.GuardianDTProvider |
   | token.server.access.label.agency.name | 指定IAM委托的名字，即[创建普通账号委托]创建的IAM委托名称。                                                                                                                                                                                                                                                                                                                                                                                    | agency-MRS-to-OBS                                                                 |
      
   
2. 保存服务配置，然后在FusionInsight Manager主页中选择"更多 \> 重启配置过期的实例"，根据界面提示重启所有配置过期的服务实例。
3. 如果需要通过MRS管理控制台提交作业，使用**omm** 用户登录主OMS节点，执行以下命令刷新内置客户端配置：
   ```
   sh /opt/executor/bin/refresh-client-config.sh
   ```
   
4. （可选）如果安装了集群其他组件的客户端，则需更新相关客户端配置，具体操作请参见[更新客户端配置](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0090.html#mrs_01_0090__section17728154711371)。
 
 #### 开启Hive表的级联授权功能
MRS 3.5.0之前版本，仅开启Kerberos认证的集群支持OBS级联授权功能。
1. 登录Manager界面（具体操作请参见[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)），选择"集群 \> 服务 \> Ranger \> 配置"。
2. 在搜索框中搜索参数"ranger.ext.authorization.cascade.enable"，修改该参数值为"true"，开启级联授权功能。
3. 单击"保存"，保存配置。
4. 配置保存成功后，单击"实例"，勾选所有RangerAdmin实例，选择"更多 \> 重启实例"，在弹出对话框输入密码，单击"确定"，重启所有RangerAdmin实例。
 
 #### 配置回收站清理策略
1. 登录[OBS管理控制台](https://console.huaweicloud.com/obs/)。
2. 选择"并行文件系统"，单击[创建OBS并行文件系统]的文件系统名称。
3. 选择"数据管理\> 生命周期规则"，单击"创建"，创建"/user/.Trash"目录的生命周期规则。
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/caution_3.0-zh-cn.png)
   **配置集群使用存算分离方案后，必须配置相关目录的生命周期策略，否则会有存储空间被占满以及增加存储资源费用的风险，关于OBS更多计费说明请参考[OBS计费概述](https://support.huaweicloud.com/price-obs/obs_42_0001.html)。**
   表1生命周期规则创建参数 
   | 参数名称        | 描述                                                                                                            | 示例          |
   |:---|:---|:---|
   | 状态          | 是否启用本条生命周期规则。                                                                                                 | 启用          |
   | 规则名称        | 规则名称，可自定义，用于识别不同的生命周期配置。                                                                                      | rule-test   |
   | 前缀          | 生命周期规则适用的对象前缀，MRS集群组件数据回收站目录为"/user/.Trash"。                                                                  | user/.Trash |
   | 转换为低频访问存储天数 | 指定在对象最后一次更新后多少天，受规则影响的对象将转换为低频访问存储。至少设置为30天。                                                                  | 30天         |
   | 转换为归档存储天数   | 指定在对象最后一次更新后多少天，受规则影响的对象将转换为归档存储。若同时设置转换为低频访问存储和转换为归档存储，则转换为归档存储的时间要比转换为低频访问存储的时间至少长30天。若单独设置转换为归档存储，则没有时间限制。 | 31天         |
   | 文件过期删除天数    | 指定在对象最后一次更新后多少天，受规则影响的对象将过期并自动被OBS删除。过期时间必须大于前两个转换时间的最大值。                                                     | 32天         |
   | 碎片过期规则设置    | 受规则影响的碎片将过期并自动被OBS删除。                                                                                         | 30天         |
      
   
4. 单击"确定"，完成生命周期规则配置。 若您需修改生命周期的内容，请单击该生命周期规则所在行右侧的"编辑"进行编辑；单击"禁用"，可以禁用该生命周期规则。单击"启用"，可启用该生命周期规则。
   
 
 #### 配置OBS碎片生命周期规则
1. 登录[OBS管理控制台](https://console.huaweicloud.com/obs/)。
2. 选择"并行文件系统"，单击[创建OBS并行文件系统](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300579.html#mrs_01_300579__zh-cn_topic_0000001705424181_section84751202314)的文件系统名称。
3. 选择"数据管理 \> 生命周期规则"，单击"创建"，创建OBS碎片的生命周期规则。
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/caution_3.0-zh-cn.png)
   - **由于OBS的[多段上传](https://support.huaweicloud.com/usermanual-obs/obs_41_0021.html)机制，写入数据到OBS的任务中断或失败时，会在OBS中产生OBS文件碎片，碎片会在OBS中产生存储费用，因此必须配置对应目录的生命周期策略以避免增加存储成本** 。**详细说明请参见[清理碎片](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829110.html)**。
   
   - 推荐单独为OBS碎片新增一条针对所有文件的生命周期规则，与组件回收站目录配置的生命周期规则分开。
    
   表2生命周期规则创建参数 
   | 分类       | 参数名称 | 描述                                                    | 示例         |
   |:---|:---|:---|:---|
   | 基本信息     | 状态   | 是否启用本条生命周期规则。                                         | 启用         |
   | 基本信息     | 规则名称 | 规则名称，可自定义，用于识别不同的生命周期配置。                              | rule-test1 |
   | 基本信息     | 范围   | 使用对象名称作为筛选条件，明确生命周期规则适用的对象范围，请根据实际需求进行配置，例如配置为"所有文件"。 | 所有文件       |
   | 当前版本     | 状态   | 是否启用"当前版本"配置，需关闭。                                     | 关闭         |
   | 碎片过期规则设置 | 状态   | 是否启用"碎片过期规则设置"，需开启。                                   | 开启         |
   | 碎片过期规则设置 | 设置天数 | 受规则影响的碎片将过期并自动被OBS删除，请根据实际需求进行配置，例如配置为7天。             | 7天         |
      
   
4. 勾选确认信息，单击"确定"，完成生命周期规则配置。 若您需修改生命周期的内容，请单击该生命周期规则所在行右侧的"编辑"进行编辑；单击"禁用"，可以禁用该生命周期规则。单击"启用"，可启用该生命周期规则。
   
 
