CREATE SECURITY INTEGRATION (Snowflake OAuth)¶
Erstellt eine neue Snowflake OAuth-Sicherheitsintegration im Konto oder ersetzt eine vorhandene Integration. Durch eine Snowflake OAuth-Sicherheitsintegration können Clients, die OAuth unterstützen, Benutzer auf eine Autorisierungsseite weiterleiten und Zugriffstoken (sowie optional Aktualisierungstoken) für den Zugriff auf Snowflake generieren.
Weitere Informationen zum Erstellen anderer Typen von Sicherheitsintegrationen (z. B. External OAuth) finden Sie unter CREATE SECURITY INTEGRATION.
Syntax¶
Snowflake OAuth für Partneranwendungen
CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
<name>
TYPE = OAUTH
OAUTH_CLIENT = <partner_application>
OAUTH_REDIRECT_URI = '<uri>' -- Required when OAUTH_CLIENT=LOOKER
[ ENABLED = { TRUE | FALSE } ]
[ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
[ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
Snowflake OAuth für kundenspezifische Clients
CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
<name>
TYPE = OAUTH
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' | 'PUBLIC'
OAUTH_REDIRECT_URI = '<uri>'
[ ENABLED = { TRUE | FALSE } ]
[ OAUTH_ALLOW_NON_TLS_REDIRECT_URI = TRUE | FALSE ]
[ OAUTH_ENFORCE_PKCE = TRUE | FALSE ]
[ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
[ PRE_AUTHORIZED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ NETWORK_POLICY = '<network_policy>' ]
[ OAUTH_CLIENT_RSA_PUBLIC_KEY = <public_key1> ]
[ OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = <public_key2> ]
[ COMMENT = '<string_literal>' ]
Erforderliche Parameter (alle OAuth-Clients)¶
name
Zeichenfolge, die den Bezeichner (d. h. den Namen) für die Integration angibt. Muss in Ihrem Konto eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"
). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.
TYPE = OAUTH
Geben Sie den Typ der Integration an:
OAUTH
: Erstellt eine Sicherheitsschnittstelle zwischen Snowflake und einem Client, der OAuth unterstützt.
OAUTH_CLIENT = { CUSTOM | partner_application }
Geben Sie den Clienttyp an:
CUSTOM
: Erstellt eine OAuth-Schnittstelle zwischen Snowflake und einem kundenspezifischen Client.partner_application
: Erstellt eine OAuth-Schnittstelle zwischen Snowflake und einer Partneranwendung. Folgende Werte werden unterstützt:TABLEAU_DESKTOP
: Tableau Desktop Version 2019.1 oder höher.TABLEAU_SERVER
: Tableau Online oder Tableau Server. Wenn Tableau Server eine Verbindung zu Snowflake über private Konnektivität zum Snowflake-Dienst herstellt, müssen Sie stattdessenOAUTH_CLIENT = CUSTOM
angeben.LOOKER
: Das Looker Business Intelligence-Tool.
OAUTH_REDIRECT_URI = 'uri'
Gibt den Client-URI an. Nachdem ein Benutzer authentifiziert wurde, wird der Webbrowser zu dieser URI umgeleitet.
Dieser Parameter ist erforderlich, wenn
OAUTH_CLIENT = LOOKER
. Weitere Informationen zu dem Beispiel finden Sie in der Looker-Dokumentation.
Zusätzliche erforderliche Parameter (kundenspezifische Clients)¶
Nur erforderlich, wenn OAUTH_CLIENT = CUSTOM (d. h. beim Erstellen einer Integration für einen kundenspezifischen Client)
OAUTH_CLIENT_TYPE = { 'CONFIDENTIAL' | 'PUBLIC' }
Gibt den Typ des zu registrierenden Clients an. Snowflake unterstützt sowohl vertrauliche als auch öffentliche Clients. Vertrauliche Clients können ein Geheimnis speichern. Sie werden in einem geschützten Bereich ausgeführt, auf den Endbenutzer nicht zugreifen können. Ein in der Cloud bereitgestellter, sicherer Service kann beispielsweise ein vertraulicher Client sein. Ein Client, der hingegen auf einem Desktop ausgeführt oder über einen App Store verteilt wird, kann ein öffentlicher Client sein.
OAUTH_REDIRECT_URI = 'uri'
Gibt den Client-URI an. Nachdem ein Benutzer authentifiziert wurde, wird der Webbrowser zu dieser URI umgeleitet. Die URI muss durch TLS (Transport Layer Security) geschützt werden, falls der optionale Parameter
OAUTH_ALLOW_NON_TLS_REDIRECT_URI
nicht aufTRUE
gesetzt ist.Die mit der Umleitungs-URI gesendeten Abfrageparameter dürfen nicht in die Anforderung an den Autorisierungsendpunkt aufgenommen werden. Wenn z. B. der Wert des Abfrageparameters
redirect_uri
in der Anforderung an den Autorisierungsendpunkthttps://www.example.com/connect?authType=snowflake
ist, müssen Sie sicherstellen, dass der Parameter OAUTH_REDIRECT_URI aufhttps://www.example.com/connect
gesetzt ist.
Optionale Parameter (alle OAuth-Clients)¶
ENABLED = { TRUE | FALSE }
Gibt an, ob die Integrationsoperation gestartet oder angehalten werden soll.
TRUE
aktiviert die Integration.FALSE
deaktiviert die Integration für Wartungszwecke. Eine Integration zwischen Snowflake und einem Drittanbieterdienst funktioniert nicht.
Standard:
FALSE
. Wenn eine Sicherheitsintegration erstellt wird, ohne diesen Parameter aufTRUE
zu setzen, setzt Snowflake den Parameter aufFALSE
.
Zusätzliche optionale Parameter (Partneranwendungen)¶
Gültig, wenn OAUTH_CLIENT = <Partneranwendung> (d. h. beim Erstellen einer Integration für eine Partneranwendung)
OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }
Boolescher Wert, der angibt, ob der Client ein Aktualisierungstoken gegen ein Zugriffstoken austauschen darf, wenn das aktuelle Zugriffstoken abgelaufen ist. Wenn auf
FALSE
gesetzt, wird unabhängig von dem inOAUTH_REFRESH_TOKEN_VALIDITY
eingestellten Wert kein Aktualisierungstoken ausgestellt. Die Benutzerzustimmung wird widerrufen, und der Benutzer muss die Autorisierung erneut bestätigen.Standard:
TRUE
Bemerkung
Wenn dieser Parameter auf
FALSE
gesetzt ist und die Sicherheitsintegration zudemENABLED = TRUE
enthält, wird der Snowflake OAuth-Ablauf wiederholt, ein nicht konfigurierbares Zugriffstoken ausgegeben und das Zugriffstoken ist 600 Sekunden (10 Minuten) lang gültig. Nach Ablauf dieses Zugriffstokens muss sich der Benutzer erneut authentifizieren.Wenn Sie diesen Parameter auf
FALSE
undENABLED = FALSE
setzen, werden keine Token ausgegeben und die Integration ist deaktiviert.OAUTH_REFRESH_TOKEN_VALIDITY = integer
Ganzzahl, die angibt, wie lange Aktualisierungstoken gültig sein sollen (in Sekunden). Diese Einstellung kann verwendet werden, um das Aktualisierungstoken regelmäßig ablaufen zu lassen. Beachten Sie, dass OAUTH_ISSUE_REFRESH_TOKENS auf
TRUE
gesetzt sein muss.Wenn ein Aktualisierungstoken abläuft, muss die Anwendung den Benutzer erneut durch den Autorisierungsablauf leiten, damit ein neues Aktualisierungstoken abgerufen wird.
Die unterstützten Minimal-, Maximal- und Standardwerte lauten wie folgt:
Anwendung
Minimum
Maximum
Standard
Tableau Desktop
60
(1 Minute)36000
(10 Stunden)36000
(10 Stunden)Tableau Server oder Tableau Online
60
(1 Minute)7776000
(90 Tage)7776000
(90 Tage)Kundenspezifischer Client
3600
(1 Stunde)7776000
(90 Tage)7776000
(90 Tage)Wenn Sie aus geschäftlichen Gründen den Mindestwert senken oder den Höchstwert erhöhen müssen, bitten Sie Ihren Kontoadministrator, eine Anforderung an den Snowflake-Support zu senden.
OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
IMPLICIT
: Die in den Benutzereigenschaften festgelegten Standard-Sekundärrollen sind in der geöffneten Sitzung standardmäßig aktiviert.NONE
: Standard-Sekundärrollen werden in der geöffneten Sitzung nicht unterstützt.
Standard:
NONE
BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Durch Kommas getrennte Liste von Snowflake-Rollen, deren Verwendung ein Benutzer nach der Authentifizierung nicht ausdrücklich zustimmen kann, z. B.
'BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')
.Standardmäßig verhindert Snowflake, dass sich die Rollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN authentifizieren können. Um diesen berechtigten Rollen die Authentifizierung zu ermöglichen, setzen Sie mit dem Befehl ALTER ACCOUNT den Kontoparameter OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST auf
FALSE
.COMMENT = 'string_literal'
Gibt einen Kommentar für die Integration an.
Standard: Kein Wert
Zusätzliche optionale Parameter (kundenspezifische Clients)¶
Gültig, wenn OAUTH_CLIENT = CUSTOM (d. h. beim Erstellen einer Integration für einen kundenspezifischen Client)
OAUTH_ALLOW_NON_TLS_REDIRECT_URI = { TRUE | FALSE }
Wenn
TRUE
, kannOAUTH_REDIRECT_URI
auf einen URI gesetzt werden, der nicht durch TLS geschützt ist. Wir empfehlen dringend die Verwendung von TLS, um Man-in-the-Middle-OAuth-Umleitungen bei Phishing-Angriffen zu verhindern.Standard:
FALSE
OAUTH_ENFORCE_PKCE = { TRUE | FALSE }
Boolescher Wert, der angibt, ob für die Integration Proof Key for Code Exchange (PKCE) erforderlich sein soll.
Standardmäßig ist PKCE optional und wird nur durchgesetzt, wenn die Parameter
code_challenge
undcode_challenge_method
beide in der URL des Autorisierungsendpunkts enthalten sind. Wir empfehlen jedoch dringend, dass Ihr Client für alle Berechtigungen PKCE erfordert, um den OAuth-Ablauf sicherer zu gestalten. Weitere Informationen dazu finden Sie unter Snowflake OAuth für kundenspezifische Clients konfigurieren.Standard:
FALSE
OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
IMPLICIT
: Die in den Benutzereigenschaften festgelegten Standard-Sekundärrollen sind in der geöffneten Sitzung standardmäßig aktiviert.NONE
: Standard-Sekundärrollen werden in der geöffneten Sitzung nicht unterstützt.
Standard:
NONE
PRE_AUTHORIZED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Durch Kommas getrennte Liste von Snowflake-Rollen, denen ein Benutzer nach der Authentifizierung nicht ausdrücklich zustimmen muss, z. B.
PRE_AUTHORIZED_ROLES_LIST = ('custom_role1', 'custom_role2')
. Beachten Sie, dass die Rollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN nicht in die Liste aufgenommen werden können.Bemerkung
Dieser Parameter wird nur bei vertraulichen Clients unterstützt.
BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Durch Kommas getrennte Liste von Snowflake-Rollen, deren Verwendung ein Benutzer nach der Authentifizierung nicht ausdrücklich zustimmen kann, z. B.
BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')
.Beachten Sie, dass die Rollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN standardmäßig in der Liste enthalten sind. Wenn diese Rollen jedoch aus Ihrem Konto entfernt werden sollen, müssen Sie den Kontoadministrator bitten, eine entsprechende Anforderung an den Snowflake-Support zu senden.
OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }
Boolescher Wert, der angibt, ob der Client ein Aktualisierungstoken gegen ein Zugriffstoken austauschen darf, wenn das aktuelle Zugriffstoken abgelaufen ist. Wenn auf
FALSE
gesetzt, wird kein Aktualisierungstoken ausgestellt. Die Benutzerzustimmung wird widerrufen, und der Benutzer muss die Autorisierung erneut bestätigen.Standard:
TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = integer
Ganzzahl, die angibt, wie lange Aktualisierungstoken gültig sein sollen (in Sekunden). Diese Einstellung kann verwendet werden, um das Aktualisierungstoken regelmäßig ablaufen zu lassen. Beachten Sie, dass OAUTH_ISSUE_REFRESH_TOKENS auf
TRUE
gesetzt sein muss.Beachten Sie, dass Sie Ihren Kontoadministrator bitten müssen, eine entsprechende Anforderung an den Snowflake-Support zu senden, wenn das Unternehmen einen niedrigeren oder höheren Mindest- bzw. Höchstwert wünscht.
- Werte:
86400
(1 Tag) bis7776000
(90 Tage)- Standard:
7776000
NETWORK_POLICY = 'network_policy'
Gibt eine bestehende Netzwerkrichtlinie an. Diese Netzwerkrichtlinie kontrolliert Netzwerkdatenverkehr, der versucht, einen Autorisierungscode gegen ein Zugriffs- oder Aktualisierungstoken auszutauschen oder ein Aktualisierungstoken zu verwenden, um ein neues Zugriffstoken zu erhalten.
Wenn für das Konto oder den Benutzer auch Netzwerkrichtlinien festgelegt sind, finden Sie entsprechende Informationen unter Rangfolge bei Netzwerkrichtlinien.
OAUTH_CLIENT_RSA_PUBLIC_KEY = public_key1
Gibt einen öffentlichen RSA-Schlüssel an.
OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = public_key2
Gibt einen zweiten öffentlichen RSA-Schlüssel an. Wird für die Schlüsselrotation verwendet.
COMMENT = 'string_literal'
Gibt einen Kommentar für die Integration an.
Standard: Kein Wert
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
CREATE INTEGRATION |
Konto |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einem bestimmten Satz von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Beispiele¶
Beispiel für Tableau Desktop¶
Im folgenden Beispiel wird eine OAuth-Integration mit den Standardeinstellungen erstellt:
CREATE SECURITY INTEGRATION td_oauth_int1 TYPE = oauth ENABLED = true OAUTH_CLIENT = tableau_desktop;
Zeigen Sie mit DESCRIBE INTEGRATION die Integrationseinstellungen an:
DESC SECURITY INTEGRATION td_oauth_int1;
Im folgenden Beispiel wird eine OAuth-Integration mit Aktualisierungstoken erstellt, die nach 10 Stunden (36000 Sekunden) ablaufen. Die Integration verhindert, dass Benutzer eine Sitzung mit SYSADMIN als aktiver Rolle starten können:
CREATE SECURITY INTEGRATION td_oauth_int2 TYPE = oauth ENABLED = true OAUTH_CLIENT = tableau_desktop OAUTH_REFRESH_TOKEN_VALIDITY = 36000 BLOCKED_ROLES_LIST = ('SYSADMIN');
Beispiel für Tableau Online oder Tableau Server¶
Im folgenden Beispiel wird eine OAuth-Integration mit den Standardeinstellungen erstellt:
CREATE SECURITY INTEGRATION ts_oauth_int1 TYPE = oauth ENABLED = true OAUTH_CLIENT = tableau_server;
Zeigen Sie mit DESCRIBE INTEGRATION die Integrationseinstellungen an:
DESC SECURITY INTEGRATION ts_oauth_int1;
Im folgenden Beispiel wird eine OAuth-Integration mit Aktualisierungstoken erstellt, die nach 1 Tag (86.400 Sekunden) ablaufen. Die Integration verhindert, dass Benutzer eine Sitzung mit SYSADMIN als aktiver Rolle starten können:
CREATE SECURITY INTEGRATION ts_oauth_int2 TYPE = oauth ENABLED = true OAUTH_CLIENT = tableau_server OAUTH_REFRESH_TOKEN_VALIDITY = 86400 BLOCKED_ROLES_LIST = ('SYSADMIN');
Beispiel für kundenspezifischen Client¶
Im folgenden Beispiel wird eine OAuth-Integration erstellt, die die Schlüsselpaar-Authentifizierung verwendet. Die Integration erlaubt eine Nutzung von Aktualisierungstoken, die nach 1 Tag (86400 Sekunden) ablaufen. Die Integration verhindert, dass Benutzer eine Sitzung mit SYSADMIN als aktiver Rolle starten können:
CREATE SECURITY INTEGRATION oauth_kp_int TYPE = oauth ENABLED = true OAUTH_CLIENT = custom OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_REDIRECT_URI = 'https://localhost.com' OAUTH_ISSUE_REFRESH_TOKENS = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 86400 PRE_AUTHORIZED_ROLES_LIST = ('MYROLE') BLOCKED_ROLES_LIST = ('SYSADMIN');