You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GitHub CI/CD的YML中通过Liquibase用私钥连接Snowflake

使用Snowflake私钥通过Liquibase+JDBC连接(GitHub CI/CD场景)

核心参数说明

Snowflake通过RSA私钥认证时,Liquibase需用以下参数,不要用--ssh_key(该参数用于SSH隧道,和Snowflake的RSA私钥认证无关):

  • --username: 从Azure Key Vault获取的Snowflake用户名
  • --private-key-path: 指向RSA私钥文件的路径(即你查到的rsa_key.p8)
  • (可选)若私钥设置了密码,需额外添加--private-key-password参数

GitHub CI中动态创建私钥文件的步骤

CI环境为临时环境,无法提前预存私钥文件,需将从Azure Key Vault拿到的私钥内容动态写入临时文件,步骤如下:

  1. 在GitHub Actions中配置Azure Key Vault访问权限,将私钥、用户名作为秘密变量拉取到CI环境(比如命名为SNOWFLAKE_USER和SNOWFLAKE_PRIVATE_KEY)
  2. 运行Liquibase命令前,执行以下命令创建私钥文件并设置正确权限:
    # 将私钥内容写入临时文件
    echo "${{ secrets.SNOWFLAKE_PRIVATE_KEY }}" > /tmp/rsa_key.p8
    # 设置文件权限为600(Snowflake要求私钥文件不能被其他用户读取)
    chmod 600 /tmp/rsa_key.p8
    

完整的GitHub Actions YML示例

jobs:
  liquibase-migrate:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Login to Azure
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Get secrets from Azure Key Vault
        uses: azure/get-keyvault-secrets@v1
        with:
          keyvault: "your-keyvault-name"
          secrets: "snowflake-username, snowflake-private-key"
        id: get-secrets

      - name: Create Snowflake private key file
        run: |
          echo "${{ steps.get-secrets.outputs.snowflake-private-key }}" > /tmp/rsa_key.p8
          chmod 600 /tmp/rsa_key.p8

      - name: Run Liquibase migration
        run: |
          liquibase update \
            --url=jdbc:snowflake://${{ secrets.SNOWFLAKE_ACCOUNT }}.snowflakecomputing.com:443/?warehouse=${{ secrets.SNOWFLAKE_WAREHOUSE }}&db=${{ secrets.SNOWFLAKE_DB }}&schema=${{ secrets.SNOWFLAKE_SCHEMA }} \
            --username=${{ steps.get-secrets.outputs.snowflake-username }} \
            --private-key-path=/tmp/rsa_key.p8

注意事项

  • JDBC URL中的端口一般为443(Snowflake默认HTTPS端口),若你的配置是XXX,请确认是否正确
  • 确保Azure Key Vault导出的私钥为PEM格式的PKCS#8文件(后缀.p8),若为其他格式需先转换(比如从PKCS#1转成PKCS#8)
  • 私钥文件权限必须严格设为600,否则Snowflake会拒绝读取,导致认证失败

内容的提问来源于stack exchange,提问作者sbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:06:23