在Serverless Spark的工作空间中,您可以配置并启用Kerberos身份认证。启用后,在该工作空间中提交Spark任务时,客户端需要进行Kerberos认证,以提升任务执行的安全性。
前提条件
已创建Principal和导出keytab文件,且将其上传至阿里云OSS。
如果您使用的是EMR on ECS集群,详情请参见Kerberos基础使用。
已创建Serverless Spark工作空间,详情请参见管理工作空间。
使用限制
当前工作空间只能绑定一个Kerberos集群。
目前仅支持在Spark批任务中启用Kerberos身份认证功能。
数据目录功能暂不支持连接开启Kerberos认证的Hive Metastore服务。
操作流程
步骤一:网络准备
在配置Kerberos身份认证之前,必须先设置好网络,确保Serverless Spark与您的虚拟私有云(VPC)之间网络互通。具体操作,请参见EMR Serverless Spark与其他VPC间网络互通。
在添加安全组规则时,建议开放Kerberos服务使用的UDP协议端口(通常为88)。
步骤二:配置Kerberos身份认证
进入Kerberos身份认证页面。
在左侧导航栏,选择
。在Spark页面,单击目标工作空间名称。
在EMR Serverless Spark页面,单击左侧导航栏中的
。
单击绑定 Kerberos。
在绑定 Kerberos页面,配置以下信息,单击确定。
参数
说明
Kerberos 集群名称
您可以自定义。
网络连接
选择您已创建的网络连接。
Kerberos krb5.conf
填写正确的
krb5.conf
文件的内容。krb5.conf
文件通常位于服务器的/etc/krb5.conf
路径。根据您的环境,可以通过以下方式获取文件内容:如果您使用的是EMR Datalake集群的Kerberos服务,可以通过以下步骤获取内容。
先登录到EMR集群的Master节点,详情请参见登录集群。
执行以下命令,查看并手动复制
/etc/krb5.conf
中的内容。cat /etc/krb5.conf
将内容拷贝到Kerberos krb5.conf中。
对于其他EMR集群或自建的Kerberos服务,请将文件中的
hostname
替换为VPC内网IP地址。
(可选)根据网络协议类型确定是否要在
krb5.conf
文件中添加额外的配置。
单击操作列的启用认证。
在弹出的对话框中,单击确定。
步骤三:提交Spark批任务
启用Kerberos身份认证后,提交Spark批任务时需要进行客户端身份验证。如果您在工作空间启用Kerberos身份认证后,直接提交Spark批任务而没有进行额外配置,将会出现错误提示spark.kerberos.keytab and spark.kerberos.principal not configured
。
创建Spark批任务,具体操作请参见PySpark开发快速入门。
在新建的开发页签中,需要额外配置以下信息,然后单击运行。
参数
说明
网络连接
选择您在步骤一中新增的网络连接的名称。
Spark配置
需要配置以下参数信息。
spark.files oss://<bucketname>/path/test.keytab spark.kerberos.keytab test.keytab spark.kerberos.principal <username>@<REALM>
其中,涉及参数说明如下:
spark.files
:上传至OSS的keytab文件的完整路径。spark.kerberos.keytab
:keytab文件名。spark.kerberos.principal
:keytab文件中包含的Principal的名称,用于与Kerberos服务进行身份验证。您可以使用klist -kt <keytab文件>
命令查看目标keytab文件中Principal的名称。
如果您需要连接开启Kerberos的Hive Metastore来获取元数据信息,需要在Spark配置中增加以下信息。
spark.hive.metastore.sasl.enabled true spark.hive.metastore.kerberos.principal hive/<hostname>@<REALM>
spark.hive.metastore.kerberos.principal
参数需要填写 Hive Metastore 使用的 keytab 文件中存储的 Principal 的实际内容。您可以通过klist -kt <Hive Metastore 使用的 keytab 文件路径>
命令获取参数值。Hive Metastore 使用的 keytab 文件路径,可以在EMR on ECS控制台Hive服务配置页面的hive-site.xml中,通过查看hive.metastore.kerberos.keytab.file参数获取。spark.hive.metastore.kerberos.principal
参数值的格式如下:通常格式为
hive/<hostname>@<REALM>
,其中<hostname>
为 Hive Metastore 所在节点的完整域名,您可以通过hostname -f
命令获取;<REALM>
为 KDC 的 Realm。如果 Hive Metastore 的连接地址使用了主机名,您可以将格式简化为
hive/_HOST@<REALM>
。在连接时,Spark 会自动将_HOST
替换为 Hive Metastore 连接地址中的主机名。如果需要配置多个Hive Metastore,则只能采取_HOST的方式。
运行任务后,在下方的运行记录区域,单击任务操作列的详情。
在任务历史中的开发任务页面,您可以查看相关的日志信息。