Skip to content

Commit

Permalink
feat(snowflake-driver): Support 'key-pair' authentication (#2724)
Browse files Browse the repository at this point in the history
  • Loading branch information
sam-som committed May 18, 2021
1 parent 31ab496 commit 4dc55b4
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -16,3 +16,4 @@ yarn-error.log
**/coverage
lerna-debug.log
tsconfig.tsbuildinfo
.tool-versions
2 changes: 1 addition & 1 deletion docs/content/Configuration/Connecting-to-the-Database.md
Expand Up @@ -56,7 +56,7 @@ databases:
| AWS Athena | `CUBEJS_AWS_KEY`, `CUBEJS_AWS_SECRET`, `CUBEJS_AWS_REGION`, `CUBEJS_AWS_S3_OUTPUT_LOCATION` |
| Google BigQuery | `CUBEJS_DB_BQ_PROJECT_ID`, `CUBEJS_DB_BQ_KEY_FILE or CUBEJS_DB_BQ_CREDENTIALS`, `CUBEJS_DB_BQ_LOCATION` |
| MongoDB | `CUBEJS_DB_HOST`, `CUBEJS_DB_NAME`, `CUBEJS_DB_PORT`, `CUBEJS_DB_USER`, `CUBEJS_DB_PASS`, `CUBEJS_DB_SSL`, `CUBEJS_DB_SSL_CA`, `CUBEJS_DB_SSL_CERT`, `CUBEJS_DB_SSL_CIPHERS`, `CUBEJS_DB_SSL_PASSPHRASE` |
| Snowflake | `CUBEJS_DB_SNOWFLAKE_ACCOUNT`, `CUBEJS_DB_SNOWFLAKE_REGION`, `CUBEJS_DB_SNOWFLAKE_WAREHOUSE`, `CUBEJS_DB_SNOWFLAKE_ROLE`, `CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE`, `CUBEJS_DB_NAME`, `CUBEJS_DB_USER`, `CUBEJS_DB_PASS` |
| Snowflake | `CUBEJS_DB_SNOWFLAKE_ACCOUNT`, `CUBEJS_DB_SNOWFLAKE_REGION`, `CUBEJS_DB_SNOWFLAKE_WAREHOUSE`, `CUBEJS_DB_SNOWFLAKE_ROLE`, `CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE`, `CUBEJS_DB_NAME`, `CUBEJS_DB_USER`, `CUBEJS_DB_PASS`, `CUBEJS_DB_SNOWFLAKE_AUTHENTICATOR`, `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PATH`, `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PASS` |
| Presto | `CUBEJS_DB_HOST`, `CUBEJS_DB_PORT`, `CUBEJS_DB_CATALOG`, `CUBEJS_DB_SCHEMA`, `CUBEJS_DB_USER`, `CUBEJS_DB_PASS` |
| Druid | `CUBEJS_DB_URL`, `CUBEJS_DB_USER`, `CUBEJS_DB_PASS`, `CUBEJS_DB_SSL` |
| SQLite | `CUBEJS_DB_NAME` |
Expand Down
3 changes: 3 additions & 0 deletions docs/content/Configuration/Environment-Variables-Reference.md
Expand Up @@ -115,6 +115,9 @@ databases [in this guide][link-connecting-to-db].
| `CUBEJS_DB_SNOWFLAKE_ROLE` | Snowflake | The Snowflake role to use when connecting to the database | A valid Snowflake role for the account |
| `CUBEJS_DB_SNOWFLAKE_WAREHOUSE` | Snowflake | The Snowflake warehouse to use when connecting to the database | A valid Snowflake warehouse for the account |
| `CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE` | Snowflake | If `true`, (keep the Snowflake connection alive indefinitely)[link-snowflake-connection-options] | `true`, `false` |
| `CUBEJS_DB_SNOWFLAKE_AUTHENTICATOR` | Snowflake | The type of authenticator to use with Snowflake. <br/> `Username + Password`(`SNOWFLAKE`)<br/> `Key-Pair`(`SNOWFLAKE_JWT`)<br/> If this variable is not provided, default to `SNOWFLAKE` | `SNOWFLAKE`, `SNOWFLAKE_JWT` |
| `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PATH` | Snowflake | The path to the private rsa key folder | A valid path to the private rsa key |
| `CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PASS` | Snowflake | (Encrypted Key Only) The password for the private rsa key | A valid password for the encrypted private rsa key |
| `CUBEJS_DB_DATABRICKS_URL` | Databricks | The URL for a JDBC connection | A valid JDBC URL |

## Cube Store
Expand Down
8 changes: 7 additions & 1 deletion packages/cubejs-snowflake-driver/driver/SnowflakeDriver.js
Expand Up @@ -74,6 +74,9 @@ class SnowflakeDriver extends BaseDriver {
database: process.env.CUBEJS_DB_NAME,
username: process.env.CUBEJS_DB_USER,
password: process.env.CUBEJS_DB_PASS,
authenticator: process.env.CUBEJS_DB_SNOWFLAKE_AUTHENTICATOR,
privateKeyPath: process.env.CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PATH,
privateKeyPass: process.env.CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PASS,
...config
};
const connection = snowflake.createConnection(this.config);
Expand All @@ -91,7 +94,10 @@ class SnowflakeDriver extends BaseDriver {
'CUBEJS_DB_SNOWFLAKE_REGION',
'CUBEJS_DB_SNOWFLAKE_WAREHOUSE',
'CUBEJS_DB_SNOWFLAKE_ROLE',
'CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE'
'CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE',
'CUBEJS_DB_SNOWFLAKE_AUTHENTICATOR',
'CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PATH',
'CUBEJS_DB_SNOWFLAKE_PRIVATE_KEY_PASS'
];
}

Expand Down
2 changes: 1 addition & 1 deletion packages/cubejs-snowflake-driver/package.json
Expand Up @@ -19,7 +19,7 @@
"dependencies": {
"@cubejs-backend/query-orchestrator": "^0.27.15",
"date-fns-timezone": "^0.1.4",
"snowflake-sdk": "^1.1.15"
"snowflake-sdk": "^1.6.1"
},
"license": "Apache-2.0",
"publishConfig": {
Expand Down
2 changes: 1 addition & 1 deletion yarn.lock
Expand Up @@ -21826,7 +21826,7 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"

snowflake-sdk@^1.1.15:
snowflake-sdk@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/snowflake-sdk/-/snowflake-sdk-1.6.1.tgz#371a19bc04922c437ef72b62f1a59b5c5999d577"
integrity sha512-w56tIP8mXyD2pXFzeV78sQjiBZBdPshKII2K/9E6Wo++eM+JMcY2qszq3jIjyIsXSWKDcUlKUR2ENcG7WDWeUQ==
Expand Down

0 comments on commit 4dc55b4

Please sign in to comment.