如何在Databricks笔记本中使用RSA密钥替代密码连接Snowflake数据库
在Databricks笔记本中使用RSA密钥连接Snowflake(替代用户名密码认证)
使用RSA密钥认证可避免明文密码暴露,大幅提升连接安全性,以下是完整实现方案:
前提准备
- 已在Snowflake中为目标用户配置对应RSA公钥(确保公钥已关联至你的Snowflake账户)
- 已将RSA私钥的
.pem文件上传至Databricks环境(可上传至DBFS或笔记本所在目录)
实现代码
# 读取PEM私钥文件 # 若文件在DBFS,路径需改为'/dbfs/指定路径/rsa_key.pem' pem_file_path = 'rsa_key.pem' with open(pem_file_path, 'r') as pem_file: pem_private_key = pem_file.read() # 配置Snowflake连接参数 sfOptions = { "sfURL": "你的Snowflake账户URL(格式:xxx.snowflakecomputing.com)", "sfUser": "你的Snowflake用户名", "sfDatabase": "目标数据库名称", "sfSchema": "目标Schema名称", "sfWarehouse": "使用的仓库名称", "sfRole": "使用的角色名称", "pem_private_key": pem_private_key # 传入读取到的未加密PEM私钥内容 } # 建立Spark连接并读取Snowflake数据 from pyspark.sql import SparkSession # 若Databricks已预设SparkSession,可直接使用spark变量,无需重新构建 spark = SparkSession.builder \ .appName("Snowflake_RSA_Connection") \ .getOrCreate() # 读取Snowflake目标表数据 df = spark.read.format("snowflake") \ .options(**sfOptions) \ .option("dbtable", "目标表名") \ .load() # 验证数据读取结果 df.show()
关键注意事项
- 若PEM私钥为加密状态(设置了解密密码),需在连接参数中添加
pem_private_key_passphrase并传入解密密码 - 确保Databricks集群已安装Snowflake Spark连接器(可通过集群库管理添加
net.snowflake:snowflake-jdbc:对应版本和net.snowflake:spark-snowflake_2.12:对应版本依赖,版本需匹配Spark版本) - 建议将敏感参数(如账户URL、用户名)通过Databricks密钥管理存储,避免硬编码在代码中
内容的提问来源于stack exchange,提问作者Prafulla
相关产品推荐
相关产品推荐

