Erweiterte SAML-SSO-Funktionen

Unter diesem Thema wird beschrieben, wie Sie erweiterte SAML-SSO-Funktionen in Snowflake konfigurieren und verwenden.

Unter diesem Thema:

Übersicht

Die SAML2-Sicherheitsintegration ist die Grundlage für erweiterte SAML-SSO-Funktionen in Snowflake.

Nach dem Konfigurieren einer SAML2-Sicherheitsintegration können Sie diese für folgende Aufgabe verwenden:

  • SAML-SSO-Konfiguration verwalten

  • SAML-Assertionen verschlüsseln

  • SAML-Anforderungen signieren

  • SAML-NameID-Format konfigurieren

  • Metadaten der Sicherheitsintegration exportieren

  • Erneute Authentifizierung bei Snowflake bei erstmaliger SSO-Authentifizierung erzwingen

Zu SAML2-Sicherheitsintegration migrieren

Die SAML2-Sicherheitsintegration spezifiziert die Informationen des Identitätsanbieters (IdP) in Snowflake und soll die Informationen ersetzen, die im Parameter SAML_IDENTITY_PROVIDER enthalten sind.

Es gibt zwei Möglichkeiten, um den IdP in Snowflake anzugeben:

  1. Verwenden einer Systemfunktion, um vorhandene IdP-Informationen auf eine Sicherheitsintegration zu migrieren.

  2. Erstellen oder Ersetzen einer Sicherheitsintegration, welche die IdP-Informationen enthält.

Option 1 ist die empfohlene Methode, wenn Sie bereits einen IdP für die Verbundauthentifizierung zu Snowflake basierend auf dem Parameter SAML_IDENTITY_PROVIDER konfiguriert haben.

Option 2 ist die empfohlene Methode, wenn Ihr Konto nicht über den Parameter SAML_IDENTITY_PROVIDER verfügt.

Option 1: Systemfunktion verwenden

Sie können Ihre vorhandene IdP-Konfiguration mithilfe der Systemfunktion SYSTEM$MIGRATE_SAML_IDP_REGISTRATION vom Parameter SAML_IDENTITY_PROVIDER zu einer Sicherheitsintegration migrieren.

Nach dem Ausführen dieser Systemfunktion sollten Sie den Parameter SAML_IDENTITY_PROVIDER nicht mehr für die Konfiguration und Verwaltung von SAML-SSO verwenden. Verwalten Sie stattdessen Ihre SAML2-Sicherheitsintegration wie unter SAML2-Sicherheitsintegration verwalten beschrieben.

Bemerkung

Falls gewünscht, können Sie vor dem Ausführen der Systemfunktion die SAML_IDENTITY_PROVIDER-Konfiguration überprüfen, indem Sie die folgende Anweisung ausführen:

show parameters like 'SAML_IDENTITY_PROVIDER' in account;

Option 2: Sicherheitsintegration erstellen oder ersetzen

Wenn in Snowflake kein IdP für die Verwendung der Verbundauthentifizierung konfiguriert ist und Sie Ihren IdP in Snowflake für die Verbundauthentifizierung konfigurieren möchten, erstellen Sie eine Sicherheitsintegration mit TYPE = SAML2 unter Verwendung von CREATE SECURITY INTEGRATION.

Wenn Sie eine vorhandene Sicherheitsintegration mit TYPE = SAML2 haben und einen oder mehrere Parameter aktualisieren müssen, führen Sie eine ALTER SECURITY INTEGRATION-Anweisung aus oder ersetzen Sie die gesamte Sicherheitsintegration durch eine CREATE OR REPLACE SECURITY INTEGRATION-Anweisung.

Verwenden der Organisationskonto-URL in der Sicherheitsintegration – Optional

Um die Ihrer Organisation zugeordnete Kontobezeichner-URL in der SAML2-Sicherheitsintegration zu verwenden, führen Sie die folgenden Schritte aus:

  1. Führen Sie die Funktion SYSTEM$WHITELIST aus und speichern Sie den Wert in der Spalte HOST von SNOWFLAKE_DEPLOYMENT_REGIONLESS TYPE. Beispiel:

    SELECT t.VALUE:type::VARCHAR as type,
           t.VALUE:host::VARCHAR as host,
           t.VALUE:port as port
    FROM TABLE(FLATTEN(input => PARSE_JSON(SYSTEM$WHITELIST()))) AS t;
    

    Beispielausgabe:

    +-----------------------------------+---------------------------+------+
    | TYPE                              | HOST                      | PORT |
    +-----------------------------------+---------------------------+------+
      ...
    | "SNOWFLAKE_DEPLOYMENT_REGIONLESS" | "<account_idenifier_url>" | 443  |
      ...
    +-----------------------------------+---------------------------+------+
    

    Bemerkung

    Wenn Sie den Wert <Kontobezeichner-URL> umbenennen möchten, wenden Sie sich an den Snowflake-Support mit einer Notiz, die den gewünschten Namen für diesen Wert enthält.

    Erlauben Sie dem Snowflake-Support die Bearbeitung der Anforderung.

  2. Aktualisieren Sie Ihre SAML2-Sicherheitsintegration wie unten gezeigt.

    -- Update the URL for the Snowflake service provider
    
    alter security integration my_integration set saml2_snowflake_issuer_url = 'https://<account_identifier>.snowflakecomputing.com';
    
    -- Update the ACS URL
    
    alter security integration my_integration set saml2_snowflake_acs_url = 'https://<account_identifier>.snowflakecomputing.com/fed/login';
    

Verschlüsseln von SAML-Assertionen

Mit Snowflake kann der IdP Ihrer Organisation verschlüsselte SAML2-Assertionen an Snowflake senden, nachdem sich der Benutzer erfolgreich beim IdP authentifiziert hat.

Verschlüsselte SAML2-Assertionen erleichtern die sichere Datenübertragung, während Benutzer über die Verbund-SSO auf Snowflake zugreifen. Kunden können ihre SAML-Assertionen mit dem öffentlichen Zertifikat von Snowflake verschlüsseln. Nach Erhalt der verschlüsselten Assertionen vom Kunden-IdP entschlüsselt Snowflake die verschlüsselten Assertionen mit dessen privatem Schlüssel. Snowflake exportiert niemals seinen privaten Schlüssel oder stellt diesen zur Verfügung.

Verschlüsselte SAML-Assertionen werden in die SAML2-Sicherheitsintegration integriert. Sie können eine vorhandene SAML2-Sicherheitsintegration verwenden oder eine neue SAML2-Sicherheitsintegration erstellen.

Das allgemeine Verfahren zum Konfigurieren und Verwenden verschlüsselter SAML-Assertionen ist wie folgt:

  1. Erstellen Sie eine SAML2-Sicherheitsintegration.

  2. Exportieren Sie das öffentliche Zertifikat von Snowflake im PEM-Format.

  3. Importieren Sie das öffentliche Zertifikat in Ihren SAML-IdP.

  4. Verbinden Sie sich mit Snowflake.

Verfahren für verschlüsselte SAML-Assertionen

Führen Sie die folgenden Schritte aus, um verschlüsselte SAML-Assertionen zu konfigurieren und eine Verbindung zu Snowflake herzustellen.

Schritt 1: SAML2-Sicherheitsintegration erstellen oder zu einer migrieren

Wenn Sie über ein vorhandenes SAML-Setup in Snowflake verfügen und diese Funktion verwenden möchten, können Sie durch Ausführen der folgenden SQL-Anweisung zu einer SAML2-Sicherheitsintegration migrieren. Weitere Informationen zu dieser Systemfunktion finden Sie unter SYSTEM$MIGRATE_SAML_IDP_REGISTRATION.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

Andernfalls erstellen Sie eine SAML2-Sicherheitsintegration, indem Sie die folgende SQL-Anweisung ausführen. Weitere Informationen dazu finden Sie unter CREATE SECURITY INTEGRATION.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = false;

Schritt 2: Öffentliches Zertifikat von Snowflake exportieren

Führen Sie die folgenden Schritte aus, um das öffentliche Zertifikat von Snowflake zu exportieren.

  1. Führen Sie die folgende SQL-Anweisung für die SAML2-Integration aus, um den Wert SAML2_SNOWFLAKE_X509_CERT (in Zeile 7) zu erhalten.

    desc security integration my_idp;
    
  2. Speichern Sie den Wert im PEM-Format. Stellen Sie sicher, dass die Trennzeichen BEGIN CERTIFICATE und END CERTIFICATE mit enthalten sind. Das folgende Beispiel ist repräsentativ für ein abgeschnittenes Zertifikat im PEM-Format:

    -----BEGIN CERTIFICATE-----
    MIICrTCCAZWgAwIBAgIJAOF6EPk93wjlMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
    BAMMC1RFU1RBQ0NPVU5UMB4XDTIwMDE....
    -----END CERTIFICATE-----
    

Zertifikatsignieranforderung (CSR) erstellen – Optional

Standardmäßig verwendet eine SAML2-Sicherheitsintegration in Snowflake ein selbstsigniertes Zertifikat für den SAML-IdP, um SAML-Assertionen zu verschlüsseln. Wenn Ihre Organisation die Verwendung eines von einer Zertifizierungsstelle (CA) ausgestellten Zertifikats erfordert, führen Sie folgende Schritte aus.

  1. Generieren Sie mit der Systemfunktion SYSTEM$GENERATE_SAML_CSR eine Zertifikatsignieranforderung (CSR) von Snowflake.

  2. Stellen Sie die CSR der CA Ihrer Wahl bereit, damit das Zertifikat ausgestellt werden kann.

  3. Laden Sie das Base64-codierte Zertifikat ohne die Trennzeichen BEGIN CERTIFICATE und END CERTIFICATE mit der folgenden ALTER-Anweisung in die SAML-Integration hoch.

    alter security integration my_idp set SAML2_SNOWFLAKE_X509_CERT = 'AX2bv...';
    

Sie können dann das Zertifikat für diesen privaten Schlüssel mit der von der Funktion generierten CSR in Snowflake hochladen.

Schritt 3: SAML-IdP-Netzwerk konfigurieren

Laden Sie das gespeicherte Zertifikat im PEM-Format als SAML-Verschlüsselungszertifikat zum IdP Ihrer Organisation hoch.

Konfigurieren Sie Ihren IdP so, dass SAML-Assertionen für den Snowflake-Dienstanbieter (SP) verschlüsselt werden.

Schritt 4: Verbindung zu Snowflake herstellen

Führen Sie nach dem Konfigurieren Ihres IdP die folgenden Aufgaben aus.

  • Verifizieren Sie das Setup Ihres IdP.

  • Erstellen Sie in Snowflake Benutzer, und weisen Sie ihnen Rollen zu.

  • Bestimmen Sie, ob Benutzer über IdP-initiierte oder SP-initiierte SSO eine Verbindung zu Snowflake herstellen.

    • Informieren Sie Ihre Benutzer bei IdP-initiiertem SSO über den Zugriff auf Snowflake (z. B. Zugriff auf das interne Portal).

    • Aktivieren Sie für SP-initiiertes SSO (d. h. Benutzer greifen auf Snowflake zu und werden dann zum Kunden-IdP umgeleitet) Snowflake-initiiertes SSO, indem Sie den Kontoparameter SSO_LOGIN_PAGE auf „true“ setzen. Führen Sie als Benutzer mit der Rolle ACCOUNTADMIN die folgenden Anweisungen aus.

      use role accountadmin;
      
      alter account set SSO_LOGIN_PAGE = true;
      
  • Greifen Sie wie in Verwenden und Verwalten der Verbundauthentifizierung gezeigt auf Snowflake zu.

Signierte SAML-Anforderungen

Sie können eine signierte SAML-Anforderung von Snowflake an den IdP senden, um die Authentizität von Snowflake als Dienstanbieter zu überprüfen. Um sicherzustellen, dass die SAML-Anforderung von Snowflake stammt und nicht von einem Dritten, der sich als Snowflake ausgibt, können Sie Ihren IdP so konfigurieren, dass dieser das in der SAML2-Sicherheitsintegration gespeicherte Zertifikat verwendet.

Signierte SAML-Anforderungen werden in die SAML2-Sicherheitsintegration integriert. Sie können eine vorhandene type = saml2-Sicherheitsintegration verwenden oder eine neue Sicherheitsintegration zur Verwendung von SAML-Anforderungen erstellen.

Wenn Ihr IdP das Akzeptieren signierter SAML-Anforderungen unterstützt, ist das allgemeine Verfahren zum Konfigurieren und Verwenden signierter SAML-Anforderungen wie folgt:

  1. Erstellen oder aktualisieren Sie die Sicherheitsintegration.

  2. Aktualisieren Sie Ihre SAML2-Sicherheitsintegration.

  3. Konfigurieren Sie Ihren IdP so, dass signierte SAML-Anforderungen akzeptiert werden.

  4. Verbinden Sie sich mit Snowflake.

Verfahren für signierte SAML-Anforderungen

Führen Sie die folgenden Schritte aus, um signierte SAML-Anforderungen zu konfigurieren und eine Verbindung zu Snowflake herzustellen.

Schritt 1: SAML2-Sicherheitsintegration erstellen oder zu einer migrieren

Wenn Sie über ein vorhandenes SAML-Setup in Snowflake verfügen und diese Funktion verwenden möchten, können Sie durch Ausführen der folgenden SQL-Anweisung zu einer SAML2-Sicherheitsintegration migrieren. Weitere Informationen zu dieser Systemfunktion finden Sie unter SYSTEM$MIGRATE_SAML_IDP_REGISTRATION.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

Andernfalls erstellen Sie eine SAML2-Sicherheitsintegration, indem Sie die folgende SQL-Anweisung ausführen. Weitere Informationen dazu finden Sie unter CREATE SECURITY INTEGRATION.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = false;

Schritt 2: SAML2-Sicherheitsintegration aktualisieren

Um signierte Anforderungen in Snowflake zu verwenden, müssen Sie in Snowflake Folgendes tun:

  • Aktivieren Sie die Sicherheitsintegration, um Anforderungen zu signieren.

  • Speichern Sie den Wert von saml2_snowflake_x509_cert zur Verwendung im nächsten Schritt.

Führen Sie als Kontoadministrator (d. h. als Benutzer mit der Rolle ACCOUNTADMIN) die folgenden Anweisungen aus:

-- update the security integration

alter security integration my_idp set SAML2_SIGN_REQUEST = true;

-- view the updated security integration, save the certificate value in row 7.

desc security integration my_idp;

Schritt 3: IdP für Akzeptanz von signierten Anforderungen konfigurieren

Konfigurieren Sie Ihren IdP so, dass signierte Anforderungen von Snowflake akzeptiert werden. Während der Konfiguration muss auf Ihrem IdP das Zertifikat im Parameter saml2_snowflake_x509_cert gespeichert sein. Ihr IdP verwendet dieses Zertifikat, um zu überprüfen, ob die SAML-Anforderung von Snowflake stammt.

Bemerkung

Snowflake ist nicht für die Konfiguration Ihres IdP verantwortlich. Informationen zur Konfiguration Ihres IdP erhalten Sie von Ihrem internen Sicherheitsadministrator.

Schritt 4: Verbindung zu Snowflake herstellen

Führen Sie nach dem Konfigurieren Ihres IdP die folgenden Aufgaben aus.

  • Verifizieren Sie das Setup Ihres IdP.

  • Erstellen Sie in Snowflake Benutzer, und weisen Sie ihnen Rollen zu.

  • Bestimmen Sie, ob Benutzer über IdP-initiierte oder SP-initiierte SSO eine Verbindung zu Snowflake herstellen.

    • Informieren Sie Ihre Benutzer bei IdP-initiiertem SSO über den Zugriff auf Snowflake (z. B. Zugriff auf das interne Portal).

    • Aktivieren Sie für SP-initiiertes SSO (d. h. Benutzer greifen auf Snowflake zu und werden dann zum Kunden-IdP umgeleitet) Snowflake-initiiertes SSO, indem Sie den Kontoparameter SSO_LOGIN_PAGE auf „true“ setzen. Führen Sie als Benutzer mit der Rolle ACCOUNTADMIN die folgenden Anweisungen aus.

      use role accountadmin;
      
      alter account set SSO_LOGIN_PAGE = true;
      
  • Greifen Sie wie in Verwenden und Verwalten der Verbundauthentifizierung gezeigt auf Snowflake zu.

SAML-NameID-Format

Snowflake unterstützt die Möglichkeit, dass der Administrator (d. h. der Benutzer mit der Rolle ACCOUNTADMIN) das SAML-NameID-Format angibt, das in der von Snowflake an den IdP gesendeten SAML-Authentifizierungsanforderung angefordert wird.

Durch Angabe des SAML-NameID-Formats kann Snowflake eine Erwartung für das identifizierende Attribut des Benutzers (d. h. den SAML-Betreff) in der SAML-Assertion des IdP festlegen und so eine gültige Authentifizierung bei Snowflake sicherstellen.

Das SAML-NameID-Format kann in die SAML2-Sicherheitsintegration integriert werden. Sie können die SAML-NameID in der Sicherheitsintegration mit einem der folgenden Werte angeben:

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

  • urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

  • urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

  • urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

Wenn das SAML-NameID-Format nicht angegeben ist, verwendet Snowflake den folgenden Wert:

urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

Wenn Ihr IdP die Angabe der SAML-NameID in einer SAML-Assertion unterstützt, ist das allgemeine Verfahren zum Konfigurieren und Angeben der NameID wie folgt:

  1. SAML2-Sicherheitsintegration in Snowflake erstellen oder zu einer migrieren

  2. Aktualisieren Sie Ihre Sicherheitsintegration, damit die NameId unterstützt wird.

  3. Konfigurieren Sie Ihren IdP, um das SAML-NameID-Format anzugeben.

  4. Verbinden Sie sich mit Snowflake.

SAML-NameID-Konfigurationsverfahren

Führen Sie die folgenden Schritte aus, um verschlüsselte SAML-NameID-Assertionen zu konfigurieren und eine Verbindung zu Snowflake herzustellen.

Schritt 1: SAML2-Sicherheitsintegration erstellen oder zu einer migrieren

Wenn Sie über ein vorhandenes SAML-Setup in Snowflake verfügen und diese Funktion verwenden möchten, können Sie durch Ausführen der folgenden SQL-Anweisung zu einer SAML2-Sicherheitsintegration migrieren. Weitere Informationen zu dieser Systemfunktion finden Sie unter SYSTEM$MIGRATE_SAML_IDP_REGISTRATION.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

Andernfalls erstellen Sie eine SAML2-Sicherheitsintegration, indem Sie die folgende SQL-Anweisung ausführen. Weitere Informationen dazu finden Sie unter CREATE SECURITY INTEGRATION.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = false;

Schritt 2: SAML2-Sicherheitsintegration für NameID aktualisieren

Führen Sie zur Angabe des SAML-NameID-Formats als Kontoadministrator (d. h. als Benutzer mit der Rolle ACCOUNTADMIN) die folgenden Anweisungen aus:

-- update the security integration

alter security integration my_idp set SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>';

-- view the updated security integration

desc security integration my_idp;

Schritt 3: IdP für Angabe der NameID konfigurieren

Konfigurieren Sie Ihren IdP, um das SAML-NameID-Format in SAML-Assertionen verwenden zu können.

Bemerkung

Snowflake ist nicht für die Konfiguration Ihres IdP verantwortlich. Informationen zur Konfiguration Ihres IdP erhalten Sie von Ihrem internen Sicherheitsadministrator.

Schritt 4: Verbindung zu Snowflake herstellen

Führen Sie nach dem Konfigurieren Ihres IdP die folgenden Aufgaben aus.

  • Verifizieren Sie das Setup Ihres IdP.

  • Erstellen Sie in Snowflake Benutzer, und weisen Sie ihnen Rollen zu.

  • Bestimmen Sie, ob Benutzer über IdP-initiierte oder SP-initiierte SSO eine Verbindung zu Snowflake herstellen.

    • Informieren Sie Ihre Benutzer bei IdP-initiiertem SSO über den Zugriff auf Snowflake (z. B. Zugriff auf das interne Portal).

    • Aktivieren Sie für SP-initiiertes SSO (d. h. Benutzer greifen auf Snowflake zu und werden dann zum Kunden-IdP umgeleitet) Snowflake-initiiertes SSO, indem Sie den Kontoparameter SSO_LOGIN_PAGE auf „true“ setzen. Führen Sie als Benutzer mit der Rolle ACCOUNTADMIN die folgenden Anweisungen aus.

      use role accountadmin;
      
      alter account set SSO_LOGIN_PAGE = true;
      
  • Greifen Sie wie in Verwenden und Verwalten der Verbundauthentifizierung gezeigt auf Snowflake zu.

Exportieren der Metadaten der SAML2-Sicherheitsintegration

Snowflake stellt SAML 2.0-Metadaten für die SAML2-Sicherheitsintegration bereit, um die Konfiguration des Snowflake-Dienstanbieters bei Ihrem IdP zu vereinfachen.

Die SAML 2.0-Metadaten sind in der Eigenschaft SAML2_SNOWFLAKE_METADATA enthalten und können durch Ausführen des DESCRIBE INTEGRATION-Befehls auf der SAML2-Sicherheitsintegration abgerufen werden. Beispiel:

desc security integration my_idp;

------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
              property              | property_type |                               property_value                                | property_default |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
SAML2_X509_CERT                     | String        | MIICrTCCAZWgAwIBAgIJAOF6EPk93wj...                                          |                  |
SAML2_PROVIDER                      | String        | OKTA                                                                        |                  |
SAML2_ENABLE_SP_INITIATED           | Boolean       | false                                                                       | false            |
SAML2_SP_INITIATED_LOGIN_PAGE_LABEL | String        | my_idp                                                                      |                  |
SAML2_SSO_URL                       | String        | https://okta.com/sso                                                        |                  |
SAML2_ISSUER                        | String        | https://okta.com                                                            |                  |
SAML2_SNOWFLAKE_X509_CERT           | String        | MIICrTCCAZWgAwIBAgIJAOF6EPk93wj...                                          |                  |
SAML2_REQUESTED_NAMEID_FORMAT       | String        | urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress                      |                  |
SAML2_SNOWFLAKE_ACS_URL             | String        | https://example.snowflakecomputing.com/fed/login                            |                  |
SAML2_SNOWFLAKE_ISSUER_URL          | String        | https://example.snowflakecomputing.com                                      |                  |
SAML2_SNOWFLAKE_METADATA            | String        | <md:EntityDescriptor entityID="https://example.snowflakecomputing.com"> ... |                  |
SAML2_DIGEST_METHODS_USED           | String        | http://www.w3.org/2001/04/xmlenc#sha256                                     |                  |
SAML2_SIGNATURE_METHODS_USED        | String        | http://www.w3.org/2001/04/xmldsig-more#rsa-sha256                           |                  |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+

Als repräsentatives Beispiel werden unten die SAML 2.0-Metadaten im XML-Format aus der Eigenschaft SAML2_SNOWFLAKE_METADATA gezeigt. Beachten Sie, dass die X509certificate-Werte für signing und encryption abgeschnitten sind.

<md:EntityDescriptor xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" entityID="https://example.snowflakecomputing.com">
 <md:SPSSODescriptor AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  <md:KeyDescriptor use="signing">
    <dsig:KeyInfo>
      <dsig:X509Data>
        <dsig:X509Certificate>MIICrTCCAZWgAwIBAgIJAOF6EPk93wj... </dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
  </md:KeyDescriptor>
  <md:KeyDescriptor use="encryption">
    <dsig:KeyInfo>
      <dsig:X509Data>
        <dsig:X509Certificate>MIICrTCCAZWgAwIBAgIJAOF6EPk93wj... </dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
  </md:KeyDescriptor>
  <md:AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.snowflakecomputing.com/fed/login" />
 </md:SPSSODescriptor>
</md:EntityDescriptor>

In der folgenden Tabelle werden die XML-Metadaten-Tags als Referenz den Eigenschaften der Snowflake-SAML2-Sicherheitsintegration zugeordnet.

XML-Ausgabe

Eigenschaften der SAML2-Sicherheitsintegration

entityID

SAML2_SNOWFLAKE_ISSUER_URL

AuthnRequestsSigned

SAML2_SIGN_REQUEST

Signaturzertifikat

SAML2_SNOWFLAKE_X509_CERT

Verschlüsselungszertifikat

SAML2_SNOWFLAKE_X509_CERT

Assertion Consumer Service-URL

SAML2_SNOWFLAKE_ACS_URL

Erzwingen der erneuten Authentifizierung bei Snowflake

Snowflake unterstützt die Konfiguration Ihrer SAML2-Sicherheitsintegration, indem sich der authentifizierende Benutzer bei der erstmaligen SSO-Authentifizierung oder bei Ablauf einer aktuellen Snowflake-Sitzung erneut authentifizieren muss, bevor ein Zugriff auf Snowflake möglich ist.

Wenn diese Funktion in der SAML2-Sicherheitsintegration von Snowflake aktiviert ist, setzt Snowflake in der ausgehenden SAML-Anforderung von Snowflake an den IdP den ForceAuthn-Parameter der SAML-Spezifikation auf True. Sobald der IdP die Anforderung mit dem auf True gesetzten ForceAuthn-Parameter empfängt, sendet der IdP eine Anforderung an Snowflake, die dazu führt, dass Benutzer aufgefordert werden, ihre Authentifizierungsdaten (z. B. Benutzername, Kennwort) erneut einzugeben, um auf Snowflake zugreifen zu können.

Diese Funktion bietet erweiterte Sicherheit durch Neuauthentifizierung. Darüber hinaus ermöglicht die erneute Authentifizierungsaufforderung Benutzern die Eingabe anderer Anmeldeinformationen als diejenigen, mit denen SSO für den Zugriff auf Snowflake initiiert wurde.

Wichtig

Bevor Sie diese Funktion implementieren, vergewissern Sie sich, dass Ihr IdP Identitätswechsel während einer SSO-Authentifizierung unterstützt.

Wenn diese Funktion in Snowflake implementiert ist, Ihr IdP aber Identitätswechsel bei der erstmaligen SSO-Authentifizierung nicht unterstützt, können Benutzer möglicherweise keine anderen Anmeldeinformationen in der Eingabeaufforderung zur erneuten Authentifizierung verwenden und somit nicht auf Snowflake zugreifen.

Verfahren zum Erzwingen der erneuten Authentifizierung bei Snowflake

Führen Sie die folgenden Schritte aus, um die erzwungene Re-Authentifizierung für den Zugriff auf Snowflake zu konfigurieren.

Schritt 1: SAML2-Sicherheitsintegration erstellen oder zu einer migrieren

Wenn Sie über ein vorhandenes SAML-Setup in Snowflake verfügen und diese Funktion verwenden möchten, können Sie durch Ausführen der folgenden SQL-Anweisung zu einer SAML2-Sicherheitsintegration migrieren. Weitere Informationen zu dieser Systemfunktion finden Sie unter SYSTEM$MIGRATE_SAML_IDP_REGISTRATION.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

Andernfalls erstellen Sie eine SAML2-Sicherheitsintegration, indem Sie die folgende SQL-Anweisung ausführen. Weitere Informationen dazu finden Sie unter CREATE SECURITY INTEGRATION.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = false;

Schritt 2: SAML2-Sicherheitsintegration für das Erzwingen der Re-Authentifizierung aktualisieren

Um eine bestehende SAML2-Sicherheitsintegration zu aktualisieren, damit für den Zugriff auf Snowflake die Re-Authentifizierung erzwungen wird, führen Sie den Befehl ALTER SECURITY INTEGRATION aus. Sie können die Sicherheitsintegrationseinstellungen mit einer DESCRIBE INTEGRATION-Anweisung überprüfen.

-- update the security integration
alter security integration my_idp set SAML2_FORCE_AUTHN = true;

-- verify the security integration
desc security integration my_idp;

Wobei:

SAML2_FORCE_AUTHN = TRUE | FALSE

Der boolesche Wert gibt an, ob Benutzer während der erstmaligen Authentifizierung gezwungen werden, sich erneut zu authentifizieren, um auf Snowflake zugreifen zu können. Wenn auf TRUE gesetzt, setzt Snowflake den ForceAuthn-SAML-Parameter in der ausgehenden Anforderung von Snowflake an den Identitätsanbieter auf TRUE.

  • TRUE zwingt Benutzer, sich erneut zu authentifizieren, um auf Snowflake zugreifen zu können, selbst wenn eine gültige Sitzung beim Identitätsanbieter besteht.

  • FALSE zwingt Benutzer nicht dazu, sich erneut zu authentifizieren, um auf Snowflake zugreifen zu können.

Standard: FALSE.

Benutzerdefinierter Logout-Endpunkt

Snowflake unterstützt die Definition einer benutzerdefinierten Endpunkt-URL, an die Benutzer nach dem Abmelden von Snowflake umgeleitet werden. Der Endpunkt wird über die Eigenschaft SAML2_POST_LOGOUT_REDIRECT_URL in der SAML2-Sicherheitsintegration festgelegt.

Wenn diese Funktion für Benutzer aktiviert ist, die über SAML SSO auf Snowflake zugreifen, führt das Klicken auf die Schaltfläche Log Out auf der klassischen Snowflake-Weboberfläche dazu, dass Snowflake die Snowflake-Sitzung beendet und die Benutzer zum angegebenen Endpunkt umleitet.

Wichtig

Dieses Verhalten gilt nicht für Snowsight oder die Neue Weboberfläche.

Durch das Definieren eines Logout-Endpunkts können Administratoren steuern, wohin Benutzer nach der Abmeldung von Snowflake umgeleitet werden. Ein benutzerdefinierter Endpunkt könnte z. B. ein Skript auslösen, um gleichzeitig die IdP-Sitzung zu beenden. Der Vorteil dieser Implementierung ist, dass sowohl die Snowflake- als auch die IdP-Sitzungen beendet werden, wodurch Benutzer gezwungen sind, sich erneut bei IdP zu authentifizieren, um auf Snowflake zuzugreifen.

Gehen Sie wie folgt vor, um einen benutzerdefinierten Abmeldeendpunkt zu konfigurieren:

  1. Erstellen Sie eine SAML2-Sicherheitsintegration oder migrieren Sie zu einer.

    Wenn Sie bereits eine SAML2-Sicherheitsintegration haben, fahren Sie mit dem nächsten Schritt fort.

  2. Aktualisieren Sie die Sicherheitsintegration, um den benutzerdefinierten Logout-Endpunkt mit dem Befehl ALTER SECURITY INTEGRATION zu konfigurieren.

    -- Update the endpoint URL
    
    alter security integration my_idp set SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
    

Verwalten der SAML2-Sicherheitsintegration

Verwenden Sie einen ALTER SECURITY INTEGRATION-Befehl, um die SAML2-Sicherheitsintegration zu verwalten. Beispiel:

  • Laden Sie ein X.509-Zertifikat als Zeichenfolge in eine vorhandene SAML2-Sicherheitsintegration hoch.

    alter security integration my_idp set SAML2_SNOWFLAKE_X509_CERT = 'AX2bv...';
    
  • Überschreiben Sie den vorhandenen privaten Schlüssel und das selbstsignierte Zertifikat, und generieren Sie einen neuen privaten Schlüssel und ein neues selbstsigniertes Zertifikat.

    alter security integration my_idp refresh SAML2_SNOWFLAKE_PRIVATE_KEY;
    
  • Aktivieren Sie signierte Anforderungen.

    alter security integration my_idp set SAML2_SIGN_REQUEST = true;
    
  • Geben Sie das NameID-Format an.

    alter security integration my_idp set SAML2_REQUESTED_NAMEID_FORMAT = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified';
    
  • Aktivieren bzw. deaktivieren Sie die erzwungene Neuauthentifizierung für Snowflake.

    -- update an existing security integration to enable forced re-authentication
    alter security integration my_idp set SAML2_FORCE_AUTHN = true;
    
    -- unset forced re-authentication
    alter security integration my_idp unset SAML2_FORCE_AUTHN;
    
  • Geben Sie den benutzerdefinierten Logout-Endpunkt an.

    -- Update the endpoint URL
    
    alter security integration my_idp set SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
    

Weitere Informationen dazu finden Sie unter ALTER SECURITY INTEGRATION.