更新时间:2022-12-14 GMT+08:00
配置是否显示包含敏感词的Spark SQL语句
配置场景
用户执行的SQL语句中可能会包含敏感信息(如用户密码等),若泄漏出去会存在一定的安全风险。此时,用户可以通过设置“spark.sql.redaction.string.regex”参数,在日志和Web UI上屏蔽包含敏感词的SQL关键词。
显示Spark SQL语句包含两部分:
- 在日志中显示SQL语句:
- Driver日志:在JDBCServer服务中,每通过Beeline执行一句SQL语句就会在Driver日志中打印对应的SQL语句。如“Running query 'show tables' with 0f8fee16-4291-4854-a7b4-b87a162f7cbb”。
- eventLog日志:每个Spark应用只要开启了写eventLog功能(设置spark.eventLog.enabled=true),就会写eventLog事件,而使用JDBCServer和Spark SQL执行的SQL语句信息也都会打印在eventLog文件中。
- 在Web UI上显示SQL语句:
- SparkUI:当执行SQL语句时,能在SparkUI页面的Jobs、Stages等标签页看到执行的SQL语句信息。
- HistoryServer:HistoryServer通过读取eventLog文件的内容,将app信息展示在页面上。所以当eventLog文件中有SQL语句记录时,用户也就能在HistoryServer页面上看见对应的SQL语句。
配置描述
参数 |
描述 |
默认值 |
---|---|---|
spark.sql.redaction.string.regex |
决定Spark生成的字符串的哪些部分是敏感词的正则表达式。当正则表达式匹配到字符串的敏感词部分时,该部分字符串将会使用字符串*********(redacted)替换。
说明:
此处需要配置为正则表达式格式。 |
pwd|password |
- 当使用Spark Beeline时,需要重启JDBCServer,配置才会生效。当使用spark-sql时,需要重启spark-sql,配置才会生效。
- 以上参数,仅对配置后执行的SQL语句生效,对配置前执行的SQL语句不生效。
父主题: 场景化参数