通过启用LDAP认证,可以增强Livy的安全性,确保只有提供正确的用户名和密码后,客户端才能成功连接到Livy Gateway执行相应的操作,有效防止未授权访问敏感数据和功能的风险。
前提条件
已创建Livy Gateway和Token,具体请参见管理Livy Gateway。
可选:如果您需要使用阿里云EMR on ECS集群的OpenLDAP服务,则需创建选择了OpenLDAP服务的集群并添加了用户,详情请参见创建集群和OpenLDAP用户管理。
操作流程
步骤一:网络准备
在开始配置之前,必须先设置好网络,确保Serverless Spark可以与您的虚拟私有云(VPC)之间网络互通,使得Livy Gateway能够顺利连接到LDAP服务进行认证。具体操作,请参见EMR Serverless Spark与其他VPC间网络互通。
步骤二:配置Livy Gateway
对于希望开启LDAP认证功能的Livy Gateway,需先停止该会话。然后编辑Livy Gateway,在网络连接下拉列表中选择已创建的连接名称,在livy.conf中添加以下配置项。编辑完成后,请务必重新启动Livy Gateway,以确保所做更改生效。
livy.server.auth.type ldap
livy.server.auth.ldap.url ldap://<ldap_url>:<ldap_port>
livy.server.auth.ldap.base-dn <ldap_base_dn>
参数说明如下,其中部分参数请根据您的实际情况替换。
参数 | 说明 |
| 固定为 |
| LDAP服务的连接地址,填写格式为 如果您连接的是阿里云EMR on ECS集群的OpenLDAP服务,则 |
| 用于LDAP服务认证的基础DN。 如果您连接的是阿里云EMR on ECS集群的OpenLDAP服务,通常为 |
更多关于Livy配置文件及其参数的详情信息,请参见Livy配置文件示例。
步骤三:连接开启LDAP认证的Livy Gateway
本文提供了以下两种方式来连接启用了LDAP认证的Livy Gateway:
Jupyter Notebook的方式适合需要动态调整参数或通过代码自动化操作的场景。该方式使用复杂度略高,需要熟悉Sparkmagic插件的使用。
Zeppelin的方式更适合数据分析和可视化场景。该方式使用简单,只需修改配置文件即可。
方式一:使用Jupyter Notebook
基本使用方法请参见通过Jupyter Notebook与Serverless Spark进行交互。
本文以方式二为例,演示如何连接开启LDAP认证的Livy Gateway。
导入
sparkmagic
插件。%load_ext sparkmagic.magics
设置默认超时时间。 调整Livy Session的启动超时时间(单位:秒),避免因网络或资源问题导致的连接失败。
import sparkmagic.utils.configuration as conf conf.override("livy_session_startup_timeout_seconds", 1000)
配置Livy Gateway的Token。 开启LDAP认证后,请求中的
Authorization
字段将被LDAP用户名和密码填充。为确保正常通信,需手动设置Livy Gateway的自定义Token。conf.override("custom_headers", {"x-acs-spark-livy-token": "<token>"})
说明:将
<token>
替换为实际的Livy Token。(可选)设置Spark参数。
根据实际需求配置Spark相关参数(如资源配置、环境变量等)。
启动Livy Session。 使用以下命令创建并启动一个Livy Session,同时通过LDAP用户名和密码进行身份验证。
%spark add -s test -l python -u https://<endpoint> -a <ldapusername> -p <ldappassword>
涉及参数如下:
<ldapusername>
:替换为您的LDAP用户名。<ldappassword>
:替换为您的LDAP密码。<endpoint>
:替换为实际的Livy Gateway的Endpoint,可以在Livy Gateway页签获取。例如,emr-spark-livy-gateway-cn-hangzhou.data.aliyun.com/api/v1/workspace/w-xxxxxx/livycompute/lc-xxxxxx
。
方式二:使用Zeppelin
基本使用方法请参见通过Zeppelin Livy Interpreter连接EMR Serverless Spark。
Zeppelin的开源Livy Interpreter本身不支持直接配置LDAP的用户名和密码。但可以通过添加自定义的HTTP Header实现LDAP认证。
生成Base64编码的认证信息。 将LDAP用户名和密码按以下格式拼接为
<username>:<password>
字符串,然后对该字符串进行Base64编码,生成编码后的字符串(例如:dXNlcm5hbWU6cGFzc3dvc*****
)。将该编码结果记为<token>
。配置Livy Interpreter的HTTP Headers。 在Zeppelin的Livy Interpreter配置中,添加以下自定义Header。
zeppelin.livy.http.headers = x-acs-spark-livy-token:<token>;Authorization:Basic <token>
涉及以下参数:
<token>
:替换为上一步生成的Base64编码字符串。x-acs-spark-livy-token
:是用于Livy Gateway的Token,确保其值与实际配置一致。Authorization:Basic <token>
:用于传递LDAP的认证信息。
保存并重启Interpreter。 完成配置后,保存更改并重启Zeppelin的Livy Interpreter,使配置生效。