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:
| Krav | Beskrivning |
|---|---|
| Identitetsprovider | Okta, Azure AD eller Ping Federate konfigurerat för beviljande av klientinloggningsuppgifter |
| Snowflake-konto | Enterprise-utgåva eller senare med ACCOUNTADMIN-åtkomst |
| OAuth-program | API-tjänster (Okta), appregistrering (Azure AD) eller motsvarande |
| Anpassade omfattningar | Omfattningar 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
Logga in på din Okta-administratörskonsol.
Gå till **Program > Program.
Välj **Skapa programintegrering.
Välj **API-tjänster** och välj **Nästa.
Ange ett programnamn (t.ex.
snowflake-tableau-service).Välj Spara.
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.
Gå till Allmänt > Inloggningsuppgifter för klienten i programinställningarna.
Avmarkera kryssrutan Kräv rubriken DPoP (Demonstrating Proof of Possession) i tokenförfrågningar.
Välj Spara.
Steg 3: Lägg till anpassade omfattningar
Snowflake kräver anpassade omfattningar för att tilldela roller till den autentiserade sessionen.
Gå till Säkerhet > API > Auktoriseringsservrar.
Välj standardserven för auktorisering (eller din anpassade server).
Välj fliken Omfattningar och därefter Lägg till omfattning.
Lägg till följande omfattningar:
Omfattningsnamn Beskrivning snowflake Allmän åtkomstomfattning för Snowflake session:role:SYSADMIN Tilldelar 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
Välj fliken Åtkomstpolicyer.
Välj en befintlig policy eller skapa en ny.
Lägg till en regel med följande inställningar:
Beviljandetyp: klientinloggningsuppgifter
Omfattningar: alla omfattningar (eller valda specifika omfattningar)
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';| Parameter | Beskrivning |
|---|---|
EXTERNAL_OAUTH_TYPE | Din identitetsprovider: OKTA , AZURE eller PING_FEDERATE |
EXTERNAL_OAUTH_ISSUER | Utgivar-URL:en från din auktoriseringsserver |
EXTERNAL_OAUTH_JWS_KEYS_URL | JWKS-slutpunkten för tokenvalidering |
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLA
IM | JWT-anspråket som identifierar användaren. Använd sub för Okta. |
EXTERNAL_OAUTH_ANY_ROLE_MODE | Stä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
Välj Anslut > Snowflake i Tableau Desktop.
Ange anslutningsuppgifterna:
Fält Värde Server URL:en för Snowflake-kontot (t.ex. account.snowflakecomputing.com)Roll Rollen som ska användas (t.ex. SYSADMIN)Lager Snowflake-lagret Autentisering OAuth-klientinloggningsuppgifter Ange OAuth-konfigurationen:
Fält Värde URL för begäran om OAuth-token https://<your-okta-domain>.okta.com/oauth2/default/ v1/tokenAnvändarnamn Klient-ID:t för OAuth Lösenord OAuth-klienthemligheten OAuth-omfattning snowflake session:role:SYSADMINObs! OAuth-omfattningen måste inkludera alla anpassade omfattningar som du har konfigurerat för rolltilldelning.
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:
I dialogrutan Publicera väljer du Redigera bredvid Datakällor.
Välj Inbäddat lösenord för Autentisering.
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:
Logga in i Tableau Cloud.
Navigera till den publicerade datakällan.
Välj Anslutningar.
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
| Felmeddelande | Orsak | Lösning |
|---|---|---|
| ”User does not exist or not authorized” | Snowflake-användaren LOGIN_NAME matchar inte klient-ID:t för OAuth | Stä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 token | Lägg till omfattningen session:role:<ROLE> för auktoriseringsservern och inkludera den i OAuth-omfattningen |
| ”Invalid DPoP proof” | DPoP är aktiverat i Okta | Inaktivera ”Kräv DPoP (Demonstrating Proof of Possession)” i Okta-appen |
| ”Invalid scope” | Anpassade omfattningar har inte konfigurerats | Lägg till nödvändiga omfattningar för auktoriseringsservern, inkluderar inte openid |
| ”Token validation failure” | Felaktig JWKS-URL eller utfärdare | Verifiera att EXTERNAL_OAUTH_JWS_KEYS
_URL och EXTERNAL_OAUTH_ISSUER matchar auktoriseringsservern |
Se även
Konfigurera OAuth för Snowflake-anslutningar i Tableau Server(Länken öppnas i ett nytt fönster) – läs om standard-OAuth-autentisering med Snowflake.
Externa OAuth-säkerhetsintegreringar(Länken öppnas i ett nytt fönster) – Snowflake-dokumentation för att konfigurera externa OAuth-leverantörer.
Flöde för Okta-klientinloggningsuppgifter(Länken öppnas i ett nytt fönster) – Okta-dokumentation för implementering av klientinloggningsuppgifter.
Uppdatera datakällsanslutning(Länken öppnas i ett nytt fönster) – Tableau REST API-referens för uppdateringar av inloggningsuppgifter.
