如何在DBT的profiles.yml中使用Base64编码的DER格式私钥
DBT连接Snowflake:Base64编码DER私钥配置指南
一、生成RSA私钥
用OpenSSL生成Snowflake兼容的RSA私钥(支持2048或4096位,推荐4096位):
openssl genrsa -out snowflake_key.pem 4096
这条命令会生成PEM格式的私钥文件snowflake_key.pem。
二、转换为Base64编码的DER格式
需要将PEM私钥先转成DER二进制格式,再做Base64编码:
- 转DER格式(无加密):
openssl pkcs8 -topk8 -inform PEM -outform DER -in snowflake_key.pem -out snowflake_key.der -nocrypt
- 转Base64编码:
- Linux/macOS:
base64 -w0 snowflake_key.der > snowflake_key_base64.txt- Windows(PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("snowflake_key.der")) | Out-File -Encoding utf8 snowflake_key_base64.txt
生成的snowflake_key_base64.txt里的字符串就是所需的Base64编码DER私钥,复制时确保无换行符。
三、配置DBT的profiles.yml
找到DBT的profiles.yml文件(通常在~/.dbt/目录下),添加或修改Snowflake连接配置:
your_dbt_profile_name: target: dev outputs: dev: type: snowflake account: "your_account_identifier" # 格式示例:xy12345.us-west-2.aws user: "your_snowflake_username" private_key: "paste_base64_encoded_der_key_here" role: "your_snowflake_role" database: "target_database" warehouse: "target_warehouse" schema: "target_schema" client_session_keep_alive: true
关键注意事项
- 先将对应公钥上传到Snowflake用户:执行
ALTER USER your_snowflake_username SET RSA_PUBLIC_KEY='公钥内容';(公钥可通过openssl rsa -in snowflake_key.pem -pubout -out snowflake_key.pub生成) private_key字段直接粘贴Base64字符串即可,无需添加任何前缀或后缀- 账号格式需与Snowflake控制台的账号标识一致
内容的提问来源于stack exchange,提问作者Adrien Arcuri
相关产品推荐
相关产品推荐

