
# 配置Spark Web UI ACL
#### 操作场景
访问控制列表（ACLs）是一种安全机制，用于控制用户或用户组对资源的访问权限。启用ACLs可以限制用户对应用程序历史记录的访问，确保敏感数据的安全性。
当Spark Web UI中有一些不允许其他用户看到的数据时，用户可能想对UI进行安全防护。用户一旦登录，Spark可以比较与这个用户相对应的视图ACLs来确认是否授权用户访问 UI。
Spark存在两种类型的Web UI，一种为运行中任务的Web UI，可以通过Yarn原生页面的应用链接或者REST接口访问。一种为已结束任务的Web UI，可以通过Spark JobHistory服务或者REST接口访问。
- 运行中任务Web UI ACL配置。 运行中的任务，可通过服务端对如下参数进行配置。
  - "spark.admin.acls"：指定Web UI的管理员列表。
  
  - "spark.admin.acls.groups"：指定管理员组列表。
  
  - "spark.ui.view.acls"：指定Web UI界面的访问者列表。
  
  - "spark.modify.acls.groups"：指定Web UI界面的修改者组列表。
  
  - "spark.modify.acls"：指定Web UI的修改者列表。
  
  - "spark.ui.view.acls.groups"：指定Web UI的访问者组列表。
   

- 运行结束后Web UI ACL配置。 运行结束的任务通过客户端的参数"spark.history.ui.acls.enable"控制是否开启ACL访问权限。
  如果开启了ACL控制，由客户端的"spark.admin.acls"和"spark.admin.acls.groups"配置指定Web UI的管理员列表和管理员组列表，由客户端的"spark.ui.view.acls"和"spark.modify.acls.groups"配置指定查看Web UI任务明细的访问者列表和组列表，由客户端的"spark.modify.acls"和"spark.ui.view.acls.groups"配置指定修改Web UI任务明细的访问者列表和组列表。
  
 
#### 约束与限制
本章节仅支持安全模式（开启了Kerberos认证）集群。
#### 配置描述
1. 登录FusionInsight Manager系统。 
   详细操作请参考[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   
2. 选择"集群 \> 服务 \> Spark2x/Spark \> 配置"，单击"全部配置"，搜索并调整以下参数。 
   表1参数说明 
   | **参数**                       | **参数说明**                                                                                                                                                                                                                                                                                                                                   | 配置示例          |
   |:---|:---|:---|
   | spark.history.ui.acls.enable | 配置JobHistory是否支持单一任务的权限校验。 - true：启用ACLs，只有授权用户才能查看Spark应用程序。  - false：不启用ACLs，所有用户都可以查看Spark应用程序，可能存在安全隐患。因此，在执行此操作时，请谨慎操作    | true          |
   | spark.acls.enable            | 配置是否开启Spark权限管理。如果开启，将会检查用户是否有权限访问和修改任务信息。 - true：开启Spark任务权限管理，只有授权用户才能查看和操作应用程序。  - false：关闭Spark任务权限管理，任意用户都有权限访问和修改应用程序，请谨慎修改。   | true          |
   | spark.admin.acls             | 配置Spark管理员列表，列表中成员有权限管理所有Spark任务，此处可以配置多个管理员用户，使用","分隔。                                                                                                                                                                                                                                                                                    | admin         |
   | spark.admin.acls.groups      | 配置Spark管理组列表，列表中的组有权限管理所有Spark任务，此处可以配置多个管理组，使用","分隔。                                                                                                                                                                                                                                                                                      | -             |
   | spark.modify.acls            | 配置有权限修改Spark任务的成员列表。启动任务的用户默认有此权限，此处可以配置多个用户，使用","分隔。                                                                                                                                                                                                                                                                                      | -             |
   | spark.modify.acls.groups     | 配置有权限修改Spark任务的组列表，此处可以配置多个组，使用","分隔。                                                                                                                                                                                                                                                                                                      | -             |
   | spark.ui.view.acls           | 配置有权限访问Spark任务的成员列表。启动任务的用户默认有此权限，此处可以配置多个用户，使用","分隔。                                                                                                                                                                                                                                                                                      | -             |
   | spark.ui.view.acls.groups    | 配置有权限访问Spark任务的组列表，此处可以配置多个组，使用","分隔。                                                                                                                                                                                                                                                                                                      | yarnviewgroup |
      
   
   

3. 修改参数配置后，单击"保存"，根据界面提示操作后，等待配置保存成功。
4. Spark服务端配置更新后，如果"配置状态"为"配置过期"，则需重启组件以使配置生效。 
   图1修改Spark配置   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002305143318.png "点击放大")
   在Spark服务概览页面，选择"更多 \> 重启服务/滚动重启服务"，验证管理员密码后，等待服务重启成功。
   如果使用Spark客户端提交任务，修改了集群的参数"spark.admin.acls"、"spark.admin.acls.groups"、"spark.modify.acls"、"spark.modify.acls.groups"、"spark.ui.view.acls"和"spark.ui.view.acls.groups"后，需要重新下载客户端才能使配置生效，请参考[使用MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2126.html)。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/warning_3.0-zh-cn.png)
   组件重启期间将无法对外提供服务，可能会影响集群的上层业务正常运行，请在业务空闲期或确认操作无影响后再执行本操作。
   
   
 
