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 gleichzeitige Anforderungen pro Konto und SCIM-Endpunkt (z. B. den /Users-Endpunkt, den /Groups-Endpunkt). Nachdem Ihr Konto diesen Schwellenwert überschritten hat, gibt Snowflake einen 429-HTTP-Statuscode zurück (d. h. zu viele Anforderungen). Beachten Sie, dass diese Anforderungsbegrenzung in der Regel nur während der erstmaligen Bereitstellung auftritt, wenn eine relativ große Anzahl von Anforderungen (d. h. mehr als 10.000) an Bereitstellungsbenutzer oder -gruppen erfolgt.

Nicht unterstützt

  • AWS PrivateLink und Google Cloud Private Service Connect. 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.

  • Wenn Sie Azure Private Link verwenden, um auf Snowflake zuzugreifen, stellen Sie sicher, dass Sie nicht die Azure Private Link-URL in den Integrationseinstellungen verwenden. Geben Sie den öffentlichen Endpunkt ein (d. h. ohne .privatelink), und stellen Sie sicher, dass die Netzwerkrichtlinie den Zugriff von den im Abschnitt Voraussetzungen (unter diesem Thema) gezeigten Azure-IP-Adressen aus zulässt. Andernfalls können Sie diese Integration nicht verwenden.

  • Übertragen 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.

  • Aktivieren/Deaktivieren der Kennwortsynchronisierung von Microsoft Azure AD zu Snowflake.

    Wenn Sie in der Snowflake-Sicherheitsintegration die Eigenschaft SYNC_PASSWORD festlegen, werden keine Benutzerkennwörter von Microsoft Azure AD mit Snowflake synchronisiert. Dies ist eine Einschränkung von Microsoft Azure AD. Wenn Sie entsprechenden Support benötigen, wenden Sie sich an Microsoft Azure.

Voraussetzungen

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

  1. Es ist ein Azure AD-Mandant vorhanden.

  2. Es ist ein Snowflake-Mandant vorhanden.

    • Während des Konfigurationsprozesses in Microsoft müssen Sie die URL des Snowflake-SCIM-Endpunkts eingeben (d. h. Tenant URL gemäß Microsoft Azure Active Directory SCIM-Konfigurationsleitfaden). Der Snowflake-SCIM-Endpunkt besteht aus der Snowflake-Konto-URL mit angehängtem /scim/v2/. Wenn Sie beispielsweise das URL-Format mit Kontonamen verwenden, ist der SCIM-Endpunkt https://myorg-myaccount.snowflakecomputing.com/scim/v2/. Eine Liste der unterstützten Formate für die Snowflake-Konto-URL finden Sie unter Verbinden mittels URL.

  3. Mindestens ein Benutzer in Snowflake hat die 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 (d. h. das Secret Token gemäß Microsoft Azure Active Directory SCIM-Konfigurationsleitfaden) ist sechs Monate lang gültig. Nach Ablauf müssen Sie ein neues Zugriffstoken manuell mit SYSTEM$GENERATE_SCIM_ACCESS_TOKEN erstellen, wie unten gezeigt.

Bemerkung

Um ein vorhandenes Zugriffstoken für eine SCIM-Integration ungültig zu machen, führen Sie eine DROP INTEGRATION-Anweisung aus.

Um die Verwendung von SCIM mit Snowflake fortzusetzen, erstellen Sie die SCIM-Integration mit einer CREATE SECURITY INTEGRATION-Anweisung neu, und generieren Sie dann mit SYSTEM$GENERATE_SCIM_ACCESS_TOKEN ein neues Zugriffstoken.

Azure Active Directory-Konfiguration

Befolgen Sie die Anweisungen in der Microsoft-Dokumentation, um Microsoft Azure Active Directory als SCIM-Identitätsanbieter zu verwenden. Während Sie diese Schritte ausführen, dürfen Sie eine bestehende Unternehmensanwendung in Azure AD nicht wiederverwenden. Wenn das Erstellen einer neuen Unternehmensanwendung zur Bereitstellung fehlschlägt, kann dies zu unerwartetem Verhalten führen.

Bemerkung

Wenn Sie kundenspezifische Attribute erstellen und möchten, dass die Felder name und login_name für den Snowflake-Benutzer unterschiedliche Werte haben, wenden Sie sich an den Snowflake-Support, um separate Zuordnungen für Ihr Konto zu aktivieren, bevor Sie die kundenspezifischen Attribute erstellen.

Snowflake-Konfiguration

Kopieren Sie zur Vereinfachung der Snowflake-Konfiguration die folgenden SQL-Anweisungen, und verwenden Sie sie in diesem ersten Schritt. Jede der folgenden Anweisungen wird unten erläutert.

use role accountadmin;
create role if not exists 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');
Copy

Wichtig

In den SQL-Beispielanweisungen wird die Systemrolle ACCOUNTADMIN verwendet, und die kundenspezifische Rolle AAD_PROVISIONER wird der Rolle ACCOUNTADMIN zugewiesen.

Es ist möglich, statt der Rolle ACCOUNTADMIN auch eine Rolle mit niedrigeren Berechtigungen zu verwenden. Die Verwendung einer Rolle mit niedrigeren Berechtigungen kann dazu beitragen, Konformitätsprobleme im Zusammenhang mit dem Zugriff mit den niedrigsten Berechtigungen zu beheben, jedoch kann die Verwendung einer Rolle mit niedrigeren Berechtigungen zu unerwarteten Fehlern bei der SCIM-Konfiguration und -Verwaltung führen.

Diese Fehler könnten darauf zurückzuführen sein, dass die Rolle mit niedrigeren Berechtigungen aufgrund der Art und Weise, wie die Rollen erstellt werden, und der daraus resultierenden Rollenhierarchie nicht über ausreichende Berechtigungen verfügt, um alle Rollen über SCIM zu verwalten. Um also Fehler in den Konfigurations- und Verwaltungsprozessen zu vermeiden, sollten Sie eine der folgenden Optionen wählen:

  1. Verwenden Sie die Rolle ACCOUNTADMIN, wie in den SQL-Beispielanweisungen gezeigt.

  2. Verwenden Sie eine Rolle mit der globalen Berechtigung MANAGE GRANTS.

  3. Wenn keine dieser beiden Optionen wünschenswert ist, verwenden Sie eine kundenspezifische Rolle, die über OWNERSHIP-Berechtigung für alle Rollen verfügt, die mit SCIM verwaltet werden.

  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. Verwenden Sie die Rolle ACCOUNTADMIN.

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

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

    grant role aad_provisioner to role accountadmin;
    create or replace security integration aad_provisioning
        type=scim
        scim_client='azure'
        run_as_role='AAD_PROVISIONER';
    
    Copy
  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');
    
    Copy

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

Durch das Anwenden einer Netzwerkrichtlinie auf einer SCIM-Sicherheitsintegration kann die SCIM-Netzwerkrichtlinie von den Netzwerkrichtlinien, die für das gesamte Snowflake-Konto gelten, unterschieden werden. Dadurch kann der SCIM-Anbieter Benutzer und Gruppen bereitstellen, ohne IP-Adressen zu der Netzwerkrichtlinie hinzuzufügen, mit der der Zugriff für normale Benutzer kontrolliert wird.

Eine Netzwerkrichtlinie, die auf eine SCIM-Integration angewendet wird, überschreibt die Netzwerkrichtlinie, die auf das gesamte Snowflake-Konto angewendet wird, sie kann aber selbst von einer Netzwerkrichtlinie überschieben werden, die einem Benutzer zugewiesen ist.

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

alter security integration aad_provisioning set network_policy = <scim_network_policy>;
Copy

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

alter security integration aad_provisioning unset network_policy;
Copy

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.

Verwenden von Sekundärrollen mit SCIM

Snowflake unterstützt das Festlegen der Benutzer-Eigenschaft DEFAULT_SECONDARY_ROLES auf 'ALL' mit SCIM, um Benutzern die Verwendung von Sekundärrollen in einer Snowflake-Sitzung zu ermöglichen.

Ein typisches Beispiel finden Sie unter PUT scim/v2/Users/{ID}.

Replizieren der Azure-SCIM-Sicherheitsintegration

Snowflake unterstützt Replikation und Failover/Failback der SCIM-Sicherheitsintegration vom Quellkonto in das Zielkonto.

Weitere Details dazu finden Sie unter Replikation von Sicherheitsintegrationen und Netzwerkrichtlinien über mehrere Konten hinweg.

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 folgende SQL-Anweisung, um die Snowflake-SCIM-Überwachungsprotokolle abzufragen, wobei demo_db der Name der Datenbank ist.

    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;
    
    Copy
  • Wenn die Benutzeraktualisierung fehlschlägt, überprüfen Sie die Eigentümerschaft des Benutzers in Snowflake. Wenn der Benutzer 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;
    
    Copy
  • 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.

Nächste Themen: