From 02b35f394679a9d1e7e4b90616df4863108203df Mon Sep 17 00:00:00 2001 From: Aaron Raff Date: Mon, 26 Aug 2024 18:42:39 -0400 Subject: [PATCH] snowflake-oauth: document where to locate the redirect URI (#5955) ## What are you changing in this pull request and why? A new copy input has been added to the dbt Cloud UI which allows users to easily find the redirect URI when setting up Snowflake OAuth. The documentation has been updated to show users where to locate this value. ## Checklist - [x] Review the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [x] For [docs versioning](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#about-versioning), review how to [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content). - [x] Add a checklist item for anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." --------- Co-authored-by: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> --- .../manage-access/set-up-snowflake-oauth.md | 26 +++++++++++++++--- .../snowflake-oauth-redirect-uri.png | Bin 0 -> 39380 bytes 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 website/static/img/docs/dbt-cloud/dbt-cloud-enterprise/snowflake-oauth-redirect-uri.png diff --git a/website/docs/docs/cloud/manage-access/set-up-snowflake-oauth.md b/website/docs/docs/cloud/manage-access/set-up-snowflake-oauth.md index 1cd24c16481..3b3b9c2d870 100644 --- a/website/docs/docs/cloud/manage-access/set-up-snowflake-oauth.md +++ b/website/docs/docs/cloud/manage-access/set-up-snowflake-oauth.md @@ -12,8 +12,26 @@ This guide describes a feature of the dbt Cloud Enterprise plan. If you’re int dbt Cloud Enterprise supports [OAuth authentication](https://docs.snowflake.net/manuals/user-guide/oauth-intro.html) with Snowflake. When Snowflake OAuth is enabled, users can authorize their Development credentials using Single Sign On (SSO) via Snowflake rather than submitting a username and password to dbt Cloud. If Snowflake is setup with SSO through a third-party identity provider, developers can use this method to log into Snowflake and authorize the dbt Development credentials without any additional setup. -### Configuring a security integration -To enable Snowflake OAuth, you will need to create a [security integration](https://docs.snowflake.net/manuals/sql-reference/sql/create-security-integration.html) in Snowflake to manage the OAuth connection between dbt Cloud and Snowflake. +To set up Snowflake OAuth in dbt Cloud, admins from both are required for the following steps: +1. [Locate the redirect URI value](#locate-the-redirect-uri-value) in dbt Cloud. +2. [Create a security integration](#create-a-security-integration) in Snowflake. +3. [Configure a connection](#configure-a-connection-in-dbt-cloud) in dbt Cloud. + +To use Snowflake in the dbt Cloud IDE, all developers must [authenticate with Snowflake](#authorize-developer-credentials) in their profile credentials. + +### Locate the redirect URI value + +To get started, copy the connection's redirect URI from dbt Cloud: +1. Navigate to **Account settings** +1. Select **Projects** and choose a project from the list +1. Select the connection to view its details abd set the **OAuth method** to "Snowflake SSO" +1. Copy the **Redirect URI** for use in later steps + + ### Create a security integration @@ -25,7 +43,7 @@ CREATE OR REPLACE SECURITY INTEGRATION DBT_CLOUD ENABLED = TRUE OAUTH_CLIENT = CUSTOM OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' - OAUTH_REDIRECT_URI = 'https://YOUR_ACCESS_URL/complete/snowflake' + OAUTH_REDIRECT_URI = LOCATED_REDIRECT_URI OAUTH_ISSUE_REFRESH_TOKENS = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 7776000; ``` @@ -42,7 +60,7 @@ CREATE OR REPLACE SECURITY INTEGRATION DBT_CLOUD | ENABLED | Required | | OAUTH_CLIENT | Required | | OAUTH_CLIENT_TYPE | Required | -| OAUTH_REDIRECT_URI | Required. Use the access URL that corresponds to your server [region](/docs/cloud/about-cloud/access-regions-ip-addresses). | +| OAUTH_REDIRECT_URI | Required. Use the value in the [dbt Cloud account settings](#locate-the-redirect-uri-value). | | OAUTH_ISSUE_REFRESH_TOKENS | Required | | OAUTH_REFRESH_TOKEN_VALIDITY | Required. This configuration dictates the number of seconds that a refresh token is valid for. Use a smaller value to force users to re-authenticate with Snowflake more frequently. | diff --git a/website/static/img/docs/dbt-cloud/dbt-cloud-enterprise/snowflake-oauth-redirect-uri.png b/website/static/img/docs/dbt-cloud/dbt-cloud-enterprise/snowflake-oauth-redirect-uri.png new file mode 100644 index 0000000000000000000000000000000000000000..e9313ddaa480f6371f16ed85c2ce1900f9a9ba24 GIT binary patch literal 39380 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