与Pyspark中数据源的安全连接

时间:2019-01-26 11:26:39

标签: apache-spark authentication pyspark

通常,当从Oracle等数据源连接和读取数据时,我们会提供用户密码(包括密码)。

但是,我认为这不是最佳做法,因为在这种情况下,密码会向用户公开并容易受到攻击。 因此,在这种情况下,如何通过使用任何加密方法或连接属性文件来保护敏感信息,例如密码。

如果共享任何标准做法,那就太好了。

公开密码的当前方法:

jdbcDF = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:postgresql:dbserver") \
    .option("dbtable", "schema.tablename") \
    .option("user", "username") \
    .option("password", "password") \
    .load()

1 个答案:

答案 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加密和解密密码是很有意义的。