本文共 1357 字,大约阅读时间需要 4 分钟。
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见
SecurityManager 主要对账号、权限及身份认证进行设置和管理。
如果 Spark 的部署模式为 YARN ,则需要生成 secret key (密钥)并存入 Hadoop UGI 。
而在其他模式下,则需要设置环境变量 _SPARK_AUTH_SECRET (优先级更高)或 spark.authenticate.secret 属性指定 secret key (密钥)。
SecurityManager 还会给当前系统设置默认的口令认证实例。
/** * spark 中负责安全的类。 * * 一般来说,这个类应该由SparkEnv实例化,大多数组件应该从SparkEnv访问它。 * * 有些情况下SparkEnv还没有初始化,必须直接实例化这个类。 * * 此类实现了与“Security”文档中描述的安全特性相关的所有配置。 * * 请参阅该文档以了解此处实现的特定功能。 * * @param sparkConf Spark 的配置对象 * @param ioEncryptionKey IO 加密密钥字节数组 * @param authSecretFileConf 来自配置项:spark.authenticate.secret.driver.file(Driver)或者 spark.authenticate.secret.executor.file(Executor) */private[spark] class SecurityManager( sparkConf: SparkConf, val ioEncryptionKey: Option[Array[Byte]] = None, authSecretFileConf: ConfigEntry[Option[String]] = AUTH_SECRET_FILE) extends Logging with SecretKeyHolder
package org.apache.spark.network.sasl;/** * 用于获取与某个应用程序相关联的密钥的接口。 */public interface SecretKeyHolder { /** * 获取给定appId的合适的SASL用户。 * @throws IllegalArgumentException 如果给定的appId未与SASL用户关联 */ String getSaslUser(String appId); /** * 获取给定appId的适当SASL密钥。 * @throws IllegalArgumentException 如果给定的appId未与SASL密钥关联。 */ String getSecretKey(String appId);}
转载地址:http://gkgji.baihongyu.com/