Apache Ranger提供了集中式的权限管理框架。通过与Spark结合使用的Ranger Plugin,可以对Spark SQL访问数据库、表和列等进行细粒度的权限控制,从而增强数据访问的安全性。Livy Gateway支持配置Ranger Plugin来启用数据访问的权限控制。
前提条件
已创建Livy Gateway,具体请参见Gateway管理。
推荐使用以下引擎版本:
esr-4.x:esr-4.3.0及之后版本。
esr-3.x:esr-3.3.0及之后版本。
esr-2.x:esr-2.7.0及之后版本。
注意事项
Ranger主要负责鉴权服务,而用户身份验证则需借助如LDAP等认证服务来完成,详情请参见为Livy Gateway配置并启用LDAP认证。
操作流程
步骤一:网络准备
在开始配置之前,必须先设置好网络,确保Serverless Spark可以与您的虚拟私有云(VPC)之间网络互通,使得Ranger Plugin能够顺利连接到您的Ranger Admin服务并获取权限信息。具体操作,请参见EMR Serverless Spark与其他VPC间网络互通。
步骤二:配置Ranger Plugin
对于希望开启Ranger鉴权功能的Livy Gateway,需首先停止该Gateway,配置以下信息。
在网络连接下拉列表中选择已创建的连接名称。
在livy.conf中添加以下配置项。
livy.impersonation.enabled true
在spark-defaults.conf中添加以下配置项。
spark.ranger.plugin.enabled true spark.emr.serverless.user.defined.jars /opt/ranger/ranger-spark.jar ranger.plugin.spark.policy.rest.url http://<ranger_admin_ip>:<ranger_admin_port>
涉及参数如下所示。
参数
说明
spark.ranger.plugin.enabled
设置为
true
表示开启Ranger鉴权。spark.emr.serverless.user.defined.jars
自定义JAR包路径。
配置为
/opt/ranger/ranger-spark.jar
,表示使用Serverless Spark中内置的Ranger Plugin。ranger.plugin.spark.policy.rest.url
Ranger Admin服务的地址。格式为
http://<ranger_admin_ip>:<ranger_admin_port>
。请根据您的实际情况替换
<ranger_admin_ip>
和<ranger_admin_port>
,填写为Ranger Admin服务的内网IP地址和端口。如果您连接的是阿里云EMR on ECS集群的Ranger服务,<ranger_admin_ip>
可填写为Master节点的内网IP地址,<ranger_admin_port>
为6080。编辑完成后,请务必重新启动会话,以确保配置更改生效。
步骤三:(可选)配置Ranger Audit
Ranger支持配置Audit的存储方式,例如Solr、HDFS等。Serverless Spark默认未开启Ranger Audit功能,若您有对应需求可以自行在Spark配置中增加Ranger Audit相关参数。
例如,配置连接EMR的Solr可以在Spark配置中增加以下配置信息。
xasecure.audit.is.enabled true
xasecure.audit.destination.solr true
xasecure.audit.destination.solr.urls http://<solr_ip>:<solr_port>/solr/ranger_audits
xasecure.audit.destination.solr.user <user>
xasecure.audit.destination.solr.password <password>
参数说明如下:
xasecure.audit.is.enabled
:是否开启Ranger Audit。xasecure.audit.destination.solr
:是否将Audit存储到Solr服务当中。xasecure.audit.destination.solr.urls
:Solr服务的URL信息。其中<solr_ip>
和<solr_port>
需要配置Solr服务的IP地址和端口信息,其他URL信息应根据实际需求填写。xasecure.audit.destination.solr.user
和xasecure.audit.destination.solr.password
:若Solr服务开启了Basic认证,需要填写对应用户名和密码信息。如果您连接的是EMR on ECS中的Ranger,则可以在Ranger-plugin服务的ranger-spark-audit.xml配置文件中查找
xasecure.audit.destination.solr.urls
、xasecure.audit.destination.solr.user
和xasecure.audit.destination.solr.password
的配置。
配置成功后,若您在EMR Serverless Spark上提交了任务,则可以访问Ranger UI,并在Ranger Audit的Access标签页查看用户访问的审计信息。访问Ranger UI详情,请参见通过控制台访问开源组件Web界面。
仅当审计存储方式为Solr时,您才能在Ranger UI中查看审计信息。如果审计存储方式是HDFS或其他不支持直接通过Ranger UI查看的方式,则无法在Ranger UI中访问这些审计信息。
步骤四:连接测试
使用Jupyter Notebook进行连接测试,如果访问没有权限的数据库、表等资源,将会提示权限不足(Permission denied
)的信息。
在进行权限测试时,请特别注意Ranger默认添加的一些权限策略,例如,所有用户均可切换数据库、创建数据库,以及数据库和表的拥有者对其资源享有所有权限等。建议由用户A创建相关资源(如数据库、表),随后使用用户B进行权限验证。如果仅使用同一用户进行测试,可能会由于拥有者权限策略的影响,而错误地认为某些权限设置未生效。
如果Ranger Admin服务的配置存在错误,可能会导致SQL虽执行成功且不报权限错误,但实际上并未生效。