Azure-SCIM-Integration mit Snowflake

Snowflake unterstützt Microsoft Azure Active Directory als SCIM-Identitätsanbieter.

Diese Anleitung enthält die erforderlichen Schritte zum Konfigurieren der Bereitstellung (in Azure AD) von Azure AD-Benutzern und -Gruppen in Snowflake. Sie enthält folgende Abschnitte:

Funktionen

  • Automatische Azure AD-Benutzerbereitstellung für Snowflake.

  • Automatische Azure AD-Gruppenbereitstellung für Snowflake.

  • Synchronisieren von Azure AD-Benutzern und -Gruppen mit Snowflake.

  • Wenn Azure AD für SAML SSO für Snowflake konfiguriert ist, können für Snowflake bereitgestellte Azure AD-Benutzer mit SAML SSO auf Snowflake zugreifen.

    Bemerkung

    Standardmäßig wird Azure AD-Benutzern, die mit SCIM für Snowflake bereitgestellt wurden, in Snowflake kein Kennwort zugewiesen. Dies bedeutet, dass sich Benutzer mit SSO bei Snowflake authentifizieren, wenn SAML SSO in Azure AD konfiguriert ist.

    SAML SSO ist nicht erforderlich, wenn Sie SCIM verwenden, um Benutzer und Gruppen von Azure AD für Snowflake bereitzustellen. Weitere Optionen finden Sie unter Azure AD Single-Sign On konfigurieren.

Einschränkungen

  • Snowflake unterstützt maximal 500 Anforderungen pro Konto und SCIM-Endpunkt. Nachdem Ihr Konto diesen Schwellenwert überschritten hat, gibt Snowflake einen 429-HTTP-Statuscode zurück (d. h. zu viele Anforderungen).

Nicht unterstützt

  • AWS PrivateLink. Kunden, die Benutzer und Gruppen von Microsoft Azure AD aus für Snowflake bereitstellen möchten, ohne das öffentliche Internet zu nutzen, müssen über ein Snowflake-Konto in Microsoft Azure verfügen.

  • Übertragung der Eigentümerschaft von vorhandenen Benutzern und Rollen. Azure AD ist die autorisierende Quelle für seine Benutzer und Gruppen. Eine Gruppenmitgliedschaft kann in Azure AD aktualisiert werden. In Snowflake vorhandene Benutzer und Gruppen können jedoch nicht an Microsoft Azure AD übertragen werden.

  • Microsoft Azure AD unterstützt derzeit nicht das Lesen oder Bereitstellen von verschachtelten Gruppen. Daher können Sie die Snowflake-Azure-SCIM-Integration nicht zum Bereitstellen oder Verwalten verschachtelter Gruppen in Snowflake verwenden. Wenden Sie sich an Microsoft, um die Unterstützung verschachtelter Gruppen anzufordern.

Voraussetzungen

Überprüfen Sie Folgendes, bevor Sie SCIM verwenden, um Azure AD-Benutzer und -Gruppen für Snowflake bereitzustellen:

  1. Ein vorhandener Azure AD-Mandant

  2. Ein vorhandener Snowflake-Mandant

  3. Mindestens ein Benutzer in Snowflake mit der Rolle ACCOUNTADMIN

  4. Falls dies Ihr Konto betrifft, stellen Sie vor der Bereitstellung von Benutzern und Gruppen sicher, dass die Netzwerkrichtlinie in Snowflake den Zugriff von allen Azure AD-IP-Adressen für die Public Cloud oder die US Government Cloud aus zulässt. Derzeit sind alle Azure AD-IP-Adressen erforderlich, um eine Azure SCIM-Netzwerkrichtlinie zu erstellen. Weitere Informationen dazu finden Sie unter Verwalten von SCIM-Netzwerkrichtlinien.

Konfiguration

Bei der Konfiguration in Snowflake wird eine SCIM-Sicherheitsintegration erstellt, damit die in Azure AD erstellten Benutzer und Rollen Eigentum der Snowflake-Rolle AAD_PROVISIONER SCIM sind. Außerdem wird ein Zugriffstoken zur Verwendung in SCIM-API-Anforderungen erstellt. Das Zugriffstoken ist sechs Monate gültig. Nach Ablauf müssen Sie ein neues Zugriffstoken manuell mit SYSTEM$GENERATE_SCIM_ACCESS_TOKEN erstellen, wie unten gezeigt.

Befolgen Sie die Anweisungen in der Microsoft-Dokumentation, um Microsoft Azure Active Directory als SCIM-Identitätsanbieter zu verwenden.

Kopieren Sie zur Vereinfachung der Snowflake-Konfiguration die folgenden SQL-Anweisungen, und verwenden Sie sie in diesem ersten Schritt.

use role accountadmin;
create or replace role aad_provisioner;
grant create user on account to role aad_provisioner;
grant create role on account to role aad_provisioner;
grant role aad_provisioner to role accountadmin;
create or replace security integration aad_provisioning
    type=scim
    scim_client='azure'
    run_as_role='AAD_PROVISIONER';
select system$generate_scim_access_token('AAD_PROVISIONING');

Jede der folgenden Anweisungen wird unten erläutert.

  1. Melden Sie sich bei Snowflake als Administrator an, und führen Sie die folgenden Schritte entweder über die Snowflake-Arbeitsblattoberfläche oder über SnowSQL aus.

  2. Überprüfen Sie die ACCOUNTADMIN-Rolle.

    use role accountadmin;
    
  3. Erstellen Sie die benutzerdefinierte Rolle AAD_PROVISIONER. Alle von Azure AD erstellten Benutzer und Rollen in Snowflake gehören der Rolle AAD_PROVISIONER mit eingeschränktem Geltungsbereich.

    create or replace role aad_provisioner;
    grant create user on account to role aad_provisioner;
    grant create role on account to role aad_provisioner;
    
  4. Erstellen Sie als ACCOUNTADMIN die Sicherheitsintegration mithilfe der Rolle AAD_PROVISIONER. Weitere Informationen dazu finden Sie unter CREATE SECURITY INTEGRATION.

    create or replace security integration aad_provisioning
        type=scim
        scim_client='azure'
        run_as_role='AAD_PROVISIONER';
    
  5. Erstellen Sie das Autorisierungstoken, kopieren Sie es in die Zwischenablage, und speichern Sie es für die spätere Verwendung. Verwenden Sie dieses Token für jede SCIM-REST-API-Anforderung, und platzieren Sie es im Anforderungsheader. Das Zugriffstoken läuft nach sechs Monaten ab, doch mit dieser Anweisung kann ein neues Zugriffstoken generiert werden.

    select system$generate_scim_access_token('AAD_PROVISIONING');
    

Von Snowflake initiiertes SSO aktivieren

Der SCIM-Bereitstellungsprozess aktiviert Single Sign-On (SSO) nicht automatisch.

Um SSO nach Abschluss des SCIM-Bereitstellungsprozesses zu verwenden, aktivieren Sie Von Snowflake initiiertes SSO.

Verwalten von SCIM-Netzwerkrichtlinien

Die SCIM-Netzwerkrichtlinie verfügt über eine eigene Einstellung, sodass der SCIM-Anbieter eine spezifische Erlaubnis zum Bereitstellen von Benutzern und Gruppen erhalten kann, ohne dass diese IP-Adressen für den normalen Benutzerzugriff hinzugefügt werden.

Durch das Einrichten einer für die SCIM-Integration spezifischen Netzwerkrichtlinie kann SCIM von anderen Netzwerkrichtlinien unterschieden werden, die möglicherweise für das Snowflake-Konto gelten. Die SCIM-Netzwerkrichtlinie wirkt sich nicht auf andere Netzwerkrichtlinien des Kontos aus, und ebenso wirken sich andere Netzwerkrichtlinien des Kontos nicht auf die SCIM-Netzwerkrichtlinie aus. Daher ermöglicht die SCIM-Netzwerkrichtlinie die Snowflake-SCIM-Integration, um Benutzer und Gruppen wie beabsichtigt bereitzustellen.

Erstellen Sie zuerst die SCIM-Sicherheitsintegration und danach die SCIM-Netzwerkrichtlinie mit dem folgenden Befehl:

alter security integration aad_provisioning set network_policy = <SCIM-Netzwerkrichtlinie>;

Verwenden Sie folgenden Befehl, um die SCIM-Netzwerkrichtlinie zu deaktivieren:

alter security integration aad_provisioning unset <SCIM-Netzwerkrichtlinie>;

Wobei:

aad_provisioning

Gibt den Namen der Azure AD-SCIM-Sicherheitsintegration an.

<scim_network_policy>

Gibt die Azure AD-SCIM-Netzwerkrichtlinie in Snowflake an.

Weitere Informationen dazu finden Sie unter Netzwerkrichtlinien und ALTER SECURITY INTEGRATION.

Tipps zur Problembehandlung

  • Um sicherzustellen, dass Azure AD Aktualisierungen an Snowflake sendet, überprüfen Sie die Protokollereignisse in Azure AD für die Snowflake-Anwendung, und überprüfen Sie die SCIM-Überwachungsprotokolle in Snowflake, um sicherzustellen, dass Snowflake Aktualisierungen von Azure AD empfängt. Verwenden Sie die folgenden SQL-Anweisungen, um die SCIM-Überwachungsprotokolle in Snowflake abzufragen.

    use role accountadmin;
    use database demo_db;
    use schema information_schema;
    select * from table(rest_event_history('scim'));
    select *
        from table(rest_event_history(
            'scim',
            dateadd('minutes',-5,current_timestamp()),
            current_timestamp(),
            200))
        order by event_timestamp;
    
  • Wenn die Benutzeraktualisierung fehlschlägt, überprüfen Sie die Eigentümerschaft des Benutzers in Snowflake. Wenn die Aktualisierung nicht der Rolle aad_provisioner gehört (oder der Rolle, die beim Erstellen der Sicherheitsintegration in Snowflake im Parameter run_as_role festgelegt wurde), schlägt die Aktualisierung fehl. Übertragen Sie die Eigentümerschaft, indem Sie die folgende SQL-Anweisung in Snowflake ausführen, und versuchen Sie es erneut.

    grant ownership on user <username> to role AAD_PROVISIONER;
    
  • Wenn nach der ersten SCIM-Bereitstellung Änderungen am UPN-Attributwert in Azure AD vorgenommen wurden, funktionieren nachfolgende Aktualisierungen für den Benutzer nicht. Durch eine Änderung des Attributwerts UPN wird die Verbindung zwischen dem Azure AD-Benutzerobjekt und dem Snowflake-Benutzerobjekt unterbrochen. Wenn eine Änderung am UPN-Attributwert auftritt, stellen Sie dem Benutzer den korrekten UPN-Attributwert erneut zur Verfügung.