Konfigurera extern OAuth för Snowflake: flöde för klientinloggningsuppgifter

Autentisering av OAuth-klientinloggningsuppgifter möjliggör dator-till-dator-anslutningar till Snowflake

utan användarinteraktion. Den här metoden är optimal för följande:

  • Tjänstkonton för automatiska datauppdateringar

  • Schemalagda extraktjobb

  • CI/CD-pipelines

  • Publicerade datakällor som kräver inbäddade inloggningsuppgifter

Till skillnad från standard-OAuth (som använder auktoriseringskodsflödet) uppmanar inte klientinloggningsflödet

användarna att logga in. Istället autentiserar Tableau direkt med din identitetsprovider med hjälp av ett

klient-ID och en hemlighet.

Obs! Klientinloggningsuppgiftsflödet kräver Snowflakes externa OAuth-funktion med en identitetsprovider som stöds. Detta skiljer sig från Snowflakes inbyggda OAuth.

Innan du börjar

Du behöver följande för att använda OAuth-klientinloggningsuppgifter med Snowflake:

KravBeskrivning
IdentitetsproviderOkta, Azure AD eller Ping Federate konfigurerat för beviljande av klientinloggningsuppgifter
Snowflake-kontoEnterprise-utgåva eller senare med ACCOUNTADMIN-åtkomst
OAuth-programAPI-tjänster (Okta), appregistrering (Azure AD) eller motsvarande
Anpassade omfattningarOmfattningar för Snowflake-rolltilldelning (t.ex. session:role:SYSADMIN)

Konfigurera din identitetsprovider

I följande steg används Okta som exempel. För andra leverantörer – se aktuell dokumentation för konfiguration av klientinloggningsuppgifter.

Steg 1: Skapa ett program för API-tjänster

  1. Logga in på din Okta-administratörskonsol.

  2. Gå till **Program > Program.

  3. Välj **Skapa programintegrering.

  4. Välj **API-tjänster** och välj **Nästa.

  5. Ange ett programnamn (t.ex. snowflake-tableau-service).

  6. Välj Spara.

  7. Kopiera Klient-ID och Klienthemlighet. Du behöver de här värdena senare.

Steg 2: Inaktivera DPoP (om aktiverat)

DPoP (Demonstrating Proof of Possession) måste vara inaktiverat för klientinloggningsuppgiftsflödet.

  1. Gå till Allmänt > Inloggningsuppgifter för klienten i programinställningarna.

  2. Avmarkera kryssrutan Kräv rubriken DPoP (Demonstrating Proof of Possession) i tokenförfrågningar.

  3. Välj Spara.

Steg 3: Lägg till anpassade omfattningar

Snowflake kräver anpassade omfattningar för att tilldela roller till den autentiserade sessionen.

  1. Gå till Säkerhet > API > Auktoriseringsservrar.

  2. Välj standardserven för auktorisering (eller din anpassade server).

  3. Välj fliken Omfattningar och därefter Lägg till omfattning.

  4. Lägg till följande omfattningar:

    OmfattningsnamnBeskrivning
    snowflakeAllmän åtkomstomfattning för Snowflake
    session:role:SYSADMINTilldelar rollen SYSADMIN (justera för din roll)

    Obs! Skapa ytterligare omfattningar för eventuella andra roller som ditt tjänstkonto behöver.

Steg 4: Konfigurera en åtkomstpolicy

  1. Välj fliken Åtkomstpolicyer.

  2. Välj en befintlig policy eller skapa en ny.

  3. Lägg till en regel med följande inställningar:

    • Beviljandetyp: klientinloggningsuppgifter

    • Omfattningar: alla omfattningar (eller valda specifika omfattningar)

  4. Välj Skapa regel eller Spara.

Konfigurera Snowflake

Kör följande SQL-satser i Snowflake som ACCOUNTADMIN. Ersätt platshållarvärdena med din konfiguration.

Steg 1: Skapa den externa OAuth-integreringen

USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE SECURITY INTEGRATION okta_oauth_integration
  TYPE = EXTERNAL_OAUTH
  ENABLED = TRUE
  EXTERNAL_OAUTH_TYPE = OKTA
  EXTERNAL_OAUTH_ISSUER = 'https://<your-okta-domain>.okta.com/oauth2/default'
  EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://<your-okta-domain>.okta.com/oauth2/
default/v1/keys'
  EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'sub'
  EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'login_name'
  EXTERNAL_OAUTH_AUDIENCE_LIST = ('api://default', 'snowflake')
EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE';
ParameterBeskrivning
EXTERNAL_OAUTH_TYPEDin identitetsprovider: OKTA , AZURE eller PING_FEDERATE
EXTERNAL_OAUTH_ISSUERUtgivar-URL:en från din auktoriseringsserver
EXTERNAL_OAUTH_JWS_KEYS_URLJWKS-slutpunkten för tokenvalidering
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLA IMJWT-anspråket som identifierar användaren. Använd sub för Okta.
EXTERNAL_OAUTH_ANY_ROLE_MODEStäll in till ENABLE för att tillåta rolltilldelning via omfattningar

Steg 2: Skapa en tjänstanvändare

Skapa en Snowflake-användare med ett LOGIN_NAME som matchar klient-ID:t för OAuth.

CREATE USER IF NOT EXISTS service_account_user
LOGIN_NAME = '<your-okta-client-id>'
DISPLAY_NAME = 'OAuth Service Account'
MUST_CHANGE_PASSWORD = FALSE
DISABLED = FALSE;
-- Grant role to the service user
GRANT ROLE SYSADMIN TO USER service_account_user;
-- Set the default role
ALTER USER service_account_user SET DEFAULT_ROLE = 'SYSADMIN';
-- Grant warehouse access
GRANT USAGE ON WAREHOUSE <your-warehouse> TO USER service_account_user;
-- Grant database and schema access
GRANT USAGE ON DATABASE <your-database> TO USER service_account_user;
GRANT USAGE ON SCHEMA <your-database>.<your-schema> TO USER
service_account_user;
GRANT SELECT ON ALL TABLES IN SCHEMA <your-database>.<your-schema> TO USER
service_account_user;

Viktigt: LOGIN_NAME måste matcha sub-anspråk i OAuth-token exakt. För Okta API Services-program är detta klient-ID:t.

Ansluta från Tableau Desktop

  1. Välj Anslut > Snowflake i Tableau Desktop.

  2. Ange anslutningsuppgifterna:

    FältVärde
    ServerURL:en för Snowflake-kontot (t.ex. account.snowflakecomputing.com)
    RollRollen som ska användas (t.ex. SYSADMIN)
    LagerSnowflake-lagret
    AutentiseringOAuth-klientinloggningsuppgifter
  3. Ange OAuth-konfigurationen:

    FältVärde
    URL för begäran om OAuth-tokenhttps://<your-okta-domain>.okta.com/oauth2/default/ v1/token
    AnvändarnamnKlient-ID:t för OAuth
    LösenordOAuth-klienthemligheten
    OAuth-omfattningsnowflake session:role:SYSADMIN

    Obs! OAuth-omfattningen måste inkludera alla anpassade omfattningar som du har konfigurerat för rolltilldelning.

  4. Välj Logga in.

Publicera till Tableau Cloud eller Tableau Server

När du publicerar en arbetsbok eller datakälla som använder OAuth-klientinloggningsuppgifter:

  1. I dialogrutan Publicera väljer du Redigera bredvid Datakällor.

  2. Välj Inbäddat lösenord för Autentisering.

  3. Klientinloggningsuppgifterna är inbäddade i det publicerade innehållet.

Viktigt: Till skillnad från standard-OAuth behandlas klientinloggningsuppgifter som inbäddade lösenord. Användare som ska komma åt det publicerade innehållet använder tjänstkontots inloggningsuppgifter, inte sin egen identitet.

Rotation av inloggningsuppgifter

När din OAuth-klienthemlighet roterar ska du uppdatera de inbäddade inloggningsuppgifterna i Tableau Cloud:

  1. Logga in i Tableau Cloud.

  2. Navigera till den publicerade datakällan.

  3. Välj Anslutningar.

  4. Uppdatera anslutningen med den nya klienthemligheten.

För automatiserad rotation använder du Tableau REST API för att uppdatera inloggningsuppgifter för anslutning programmatiskt.

Vanliga frågor

När ska jag använda OAuth-klientinloggningsuppgifter i stället för standard-OAuth?

Använd klientinloggningsuppgifter när du behöver oövervakad dator-till-dator-autentisering. Standard

OAuth kräver användarinteraktion för den första inloggningen och regelbunden omautentisering. Klientinloggningsuppgifter

använder en tjänstkontoidentitet och kräver inte användarinteraktion.

Kan jag använda klientinloggningsuppgifter med Snowflakes inbyggda OAuth?

Nej. Snowflakes inbyggda OAuth har endast stöd för auktoriseringskodsflödet. Klientinloggningsuppgifter kräver extern OAuth med en identitetsprovider som stöds (Okta, Azure AD eller Ping Federate).

Hur hanterar jag hemlighetsrotation för publicerat innehåll?

När din OAuth-klienthemlighet roterar måste du uppdatera de inbäddade inloggningsuppgifterna i Tableau Cloud. Du kan göra detta manuellt via Tableau Cloud-användargränssnittet eller programmatiskt med hjälp av Tableau REST API. Överväg att automatisera den här processen som en del av arbetsflödet för hemlighetsrotation.

Varför misslyckas min anslutning med ett rollfel trots att EXTERNAL_OAUTH_ANY_ROLE_MODE är aktiverat?

Snowflake kräver rollinformation i OAuth-token. Lägg till en anpassad omfattning (t.ex. session:role:SYSADMIN) för auktoriseringsservern och inkludera den i fältet OAuth-omfattning när du ansluter från Tableau.

Felsökning

FelmeddelandeOrsakLösning
”User does not exist or not authorized”Snowflake-användaren LOGIN_NAME matchar inte klient-ID:t för OAuthStäll in användarens LOGIN_NAME till att matcha sub-anspråket (klient-ID för Okta)
”The role requested is not listed in the Access Token”Rollomfattning saknas i tokenLägg till omfattningen session:role:<ROLE> för auktoriseringsservern och inkludera den i OAuth-omfattningen
”Invalid DPoP proof”DPoP är aktiverat i OktaInaktivera ”Kräv DPoP (Demonstrating Proof of Possession)” i Okta-appen
”Invalid scope”Anpassade omfattningar har inte konfigureratsLägg till nödvändiga omfattningar för auktoriseringsservern, inkluderar inte openid
”Token validation failure”Felaktig JWKS-URL eller utfärdareVerifiera att EXTERNAL_OAUTH_JWS_KEYS _URL och EXTERNAL_OAUTH_ISSUER matchar auktoriseringsservern

Se även

Tack för din feedback!Din feedback har skickats in. Tack!