Externe OAuth configureren voor Snowflake: flow voor clientreferenties
Verificatie van clientreferenties met OAuth maakt machine-naar-machine-verbindingen met Snowflake mogelijk
zonder gebruikersinteractie. Deze methode is ideaal voor:
Serviceaccounts voor automatische datavernieuwingen
Geplande extractiejobs
CI-/CD-pipelines
Gepubliceerde databronnen waarvoor ingesloten referenties vereist zijn
In tegenstelling tot standaard OAuth (die de autorisatiecodeflow gebruikt), wordt gebruikers bij de flow voor clientreferenties niet
gevraagd zich aan te melden. In plaats daarvan verifieert Tableau rechtstreeks bij uw identiteitsprovider met behulp van een
client-ID en -geheim.
Opmerking: voor een clientreferenties-flow is de externe OAuth-functie van Snowflake met een ondersteunde identiteitsprovider vereist. Dit wijkt af van de systeemeigen OAuth van Snowflake.
Voordat u begint
Als u OAuth-clientreferenties met Snowflake wilt gebruiken, hebt u het volgende nodig:
| Vereiste | Beschrijving |
|---|---|
| Identiteitsprovider | Okta, Azure AD of Ping Federate geconfigureerd voor het verlenen van clientreferenties |
| Snowflake-account | Enterprise-editie of hoger met toegang tot ACCOUNTADMIN |
| OAuth-toepassing | API-services (Okta), app-registratie (Azure AD) of equivalent |
| Aangepaste scopes | Scopes voor Snowflake-roltoewijzing (bijv. session:role:SYSADMIN ) |
Uw identiteitsprovider configureren
In de volgende stappen wordt Okta als voorbeeld gebruikt. Raadpleeg voor andere providers de documentatie voor de configuratie van clientreferenties van de desbetreffende provider.
Stap 1: maak een API-servicestoepassing
Meld u aan bij uw Okta-beheerdersconsole.
Ga naar **Applications > Applications.
Selecteer **Create App Integration.
Kies **API Services** en selecteer **Next.
Voer een toepassingsnaam in (bijvoorbeeld
snowflake-tableau-service).Selecteer de optie voor opslaan.
Kopieer de client-ID en het clientgeheim. U hebt deze waarden later nodig.
Stap 2: schakel DPoP uit (indien ingeschakeld)
DPop (Demonstrating Proof of Possession) moet zijn uitgeschakeld voor een clientreferenties-flow.
Ga in uw toepassingsinstellingen naar General > Client Credentials.
Schakel het selectievakje Require Demonstrating Proof of Possession (DPoP) header in token requests uit.
Selecteer de optie voor opslaan.
Stap 3: voeg aangepaste scopes toe
Snowflake vereist aangepaste scopes voor het toewijzen van rollen aan de geverifieerde sessie.
Ga naar Security > API > Authorization Servers.
Selecteer de standaard-autorisatieserver (of uw aangepaste server).
Selecteer het tabblad Scopes en selecteer vervolgens Add Scope.
Voeg de volgende scopes toe:
Naam van scope Beschrijving snowflake Algemene toegangsscope voor Snowflake session:role:SYSADMIN Wijst de SYSADMIN-rol toe (aanpassen aan uw rol) Opmerking: maak extra scopes voor eventuele andere rollen die uw serviceaccount nodig heeft.
Stap 4: configureer een toegangsbeleid
Selecteer het tabblad Access Policies.
Selecteer een bestaand beleid of maak een nieuw beleid.
Voeg een regel toe met de volgende instellingen:
Grant type: Clientreferenties
Scopes: Alle scopes (of selecteer specifieke scopes)
Selecteer Create Rule of Save.
Snowflake configureren
Voer de volgende SQL-instructies in Snowflake uit als ACCOUNTADMIN. Vervang de waarden van de tijdelijke aanduiding door uw configuratie.
Stap 1: maak de externe OAuth-integratie
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 | Beschrijving |
|---|---|
EXTERNAL_OAUTH_TYPE | Uw identiteitsprovider: OKTA , AZURE of PING_FEDERATE |
EXTERNAL_OAUTH_ISSUER | De uitgever-URL van uw autorisatieserver |
EXTERNAL_OAUTH_JWS_KEYS_URL | Het JWKS-eindpunt voor tokenvalidatie |
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLA
IM | De JWT-claim waarmee de gebruiker wordt geïdentificeerd. Gebruik sub voor Okta. |
EXTERNAL_OAUTH_ANY_ROLE_MODE | Stel dit in op ENABLE om roltoewijzing via scopes toe te staan |
Stap 2: maak een servicegebruiker
Maak een Snowflake-gebruiker met een LOGIN_NAME die overeenkomt met de OAuth-client-ID.
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;
Belangrijk: de LOGIN_NAME moet exact overeenkomen met de sub-claim in het OAuth-token. Voor Okta API Services-toepassingen is dit de client-ID.
Verbinding maken vanuit Tableau Desktop
Selecteer in Tableau Desktop Verbinding maken > Snowflake.
Voer uw verbindingsgegevens in:
Veld Waarde Server De URL van uw Snowflake-account (bijv. account.snowflakecomputing.com)Rol De rol die moet worden gebruikt (bijv. SYSADMIN)Warehouse Uw Snowflake-warehouse Verificatie OAuth-clientreferenties Voer de OAuth-configuratie in:
Veld Waarde URL voor OAuth-tokenaanvraag https://<your-okta-domain>.okta.com/oauth2/default/ v1/tokenGebruikersnaam Uw OAuth-client-ID Wachtwoord Uw OAuth-clientgeheim OAuth-scope snowflake session:role:SYSADMINOpmerking: de OAuth-scope moet alle aangepaste scopes bevatten die u voor de roltoewijzing hebt geconfigureerd.
Selecteer Aanmelden.
Publiceren naar Tableau Cloud of Tableau Server
Bij het publiceren van een werkmap of databron die gebruikmaakt van OAuth-clientreferenties:
Selecteer in het dialoogvenster Publiceren de optie Bewerken naast Databronnen.
Bij Verificatie selecteert u Ingesloten wachtwoord.
De clientreferenties worden in de gepubliceerde inhoud ingesloten.
Belangrijk: in tegenstelling tot standaard OAuth worden clientreferenties behandeld als ingesloten wachtwoorden. Gebruikers die toegang hebben tot de gepubliceerde inhoud gebruiken de referenties van het serviceaccount, niet hun eigen identiteit.
Referentierotatie
Wanneer voor uw OAuth-clientgeheim rotatie wordt gebruikt, werkt u de ingesloten referenties in Tableau Cloud bij:
Meld u aan bij Tableau Cloud.
Navigeer naar de gepubliceerde databron.
Selecteer Verbindingen.
Werk de verbinding bij met het nieuwe clientgeheim.
Voor automatische rotatie gebruikt u de Tableau REST API om verbindingsreferenties programmatisch bij te werken.
Veelgestelde vragen
Wanneer moet ik OAuth-clientreferenties gebruiken in plaats van standaard OAuth?
Gebruik clientreferenties wanneer u onbeheerde machine-naar-machine-verificatie nodig hebt. Standaard
OAuth vereist gebruikersinteractie voor de eerste aanmelding en het periodiek opnieuw verifiëren. Clientreferenties
maken gebruik van een serviceaccountidentiteit en vereisen geen gebruikersinteractie.
Kan ik clientreferenties gebruiken met de systeemeigen OAuth van Snowflake?
Nee. De systeemeigen OAuth van Snowflake ondersteunt alleen de autorisatiecodeflow. Voor clientreferenties is externe OAuth met een ondersteunde identiteitsprovider (Okta, Azure AD of Ping Federate) vereist.
Hoe ga ik om met geheimrotatie voor gepubliceerde inhoud?
Wanneer voor uw OAuth-clientgeheim rotatie wordt gebruikt, moet u de ingesloten referenties in Tableau Cloud bijwerken. U kunt dit handmatig doen via de gebruikersinterface van Tableau Cloud of programmatisch met de Tableau REST API. Overweeg om dit proces te automatiseren als onderdeel van uw workflow voor geheimrotatie.
Waarom mislukt mijn verbinding vanwege een rolfout, ook al is EXTERNAL_OAUTH_ANY_ROLE_MODE ingeschakeld?
Snowflake vereist rolinformatie in het OAuth-token. Voeg een aangepaste scope toe (bijv. session:role:SYSADMIN) aan uw autorisatieserver en neem deze op in het veld OAuth-scope wanneer u verbinding maakt vanuit Tableau.
Problemen oplossen
| Foutbericht | Oorzaak | Oplossing |
|---|---|---|
| 'User does not exist or not authorized' | Snowflake-gebruiker LOGIN_NAME komt niet overeen met OAuth-client-ID | Stel de LOGIN_NAME van de gebruiker zo in dat deze overeenkomt met de sub-claim (client-ID voor Okta) |
| 'The role requested is not listed in the Access Token' | Ontbrekende rolscope in token | Voeg de session:role:<ROLE>-scope toe aan uw autorisatieserver en neem deze op in de OAuth-scope |
| 'Invalid DPoP proof' | DPoP is ingeschakeld in Okta | Schakel 'Require Demonstrating Proof of Possession (DPoP)' uit in uw Okta-app |
| 'Invalid scope' | Aangepaste scopes niet geconfigureerd | Voeg vereiste scopes toe aan uw autorisatieserver; neem openid niet op |
| Tokenvalidatie mislukt | Onjuiste JWKS-URL of -uitgever | Ga na of EXTERNAL_OAUTH_JWS_KEYS
_URL en EXTERNAL_OAUTH_ISSUER overeenkomen met uw autorisatieserver |
Zie ook
OAuth configureren voor Snowflake-verbindingen in Tableau Server(Link wordt in een nieuw venster geopend) - Lees meer over standaard OAuth-verificatie met Snowflake.
External OAuth Security Integrations(Link wordt in een nieuw venster geopend) (Externe Oauth-beveiligingsintegraties) - Snowflake-documentatie voor het configureren van externe OAuth-providers.
Okta Client Credentials Flow(Link wordt in een nieuw venster geopend) (Flow voor Okta-clientreferenties) - Okta-documentatie voor het implementeren van clientreferenties.
Databronverbinding bijwerken(Link wordt in een nieuw venster geopend) - Tableau REST API-informatie voor het bijwerken van referenties.
