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. 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.

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 Snowflake-Basis-URL eingeben (d. h. Tenant URL gemäß Microsoft Azure Active Directory SCIM-Konfigurationsleitfaden) für SCIM. Die Basis-URL für SCIM ist die Snowflake-Konto-URL mit /scim/v2/ am Ende angehängt. Wenn beispielsweise Ihr Snowflake-Kontoname acme und Ihre Azure-Region east-us-2 ist, lautet die Basis-URL für SCIM: https://acme.east-us-2.azure.snowflakecomputing.com/scim/v2/.

  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.

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. 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');

Wichtig

In der SQL-Beispielanweisungen wird die Systemrolle ACCOUNTADMIN verwendet, und die benutzerdefinierte 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 benutzerdefinierte 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;
    
  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 role if not exists 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.

    grant role aad_provisioner to role accountadmin;
    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.

Nächste Themen: