通常,当从Oracle等数据源连接和读取数据时,我们会提供用户密码(包括密码)。
但是,我认为这不是最佳做法,因为在这种情况下,密码会向用户公开并容易受到攻击。 因此,在这种情况下,如何通过使用任何加密方法或连接属性文件来保护敏感信息,例如密码。
如果共享任何标准做法,那就太好了。
公开密码的当前方法:
jdbcDF = spark.read \
.format("jdbc") \
.option("url", "jdbc:postgresql:dbserver") \
.option("dbtable", "schema.tablename") \
.option("user", "username") \
.option("password", "password") \
.load()
答案 0 :(得分:0)
此问题非常普遍,我们应该保护敏感信息,也不应对其进行硬编码。
通常的想法是加密密码,我们将传递加密的字符串作为spark作业参数。在spark作业中,我们将对其解密以获取具体密码
示例
encrypted_password = sys.args[1]
jdbcDF = spark.read \
.format("jdbc") \
.option("url", "jdbc:postgresql:dbserver") \
.option("dbtable", "schema.tablename") \
.option("user", "username") \
.option("password", decrypt_password(encrypted_password)) \
.load()
最后有关如何加密它,这取决于您的实现。在我公司中,我们使用EMR运行Spark作业,因此使用KMS加密和解密密码是很有意义的。