Benutzerdefinierte SCIM-Integration mit Snowflake

Benutzerdefinierte SCIM-Integrationen ermöglichen es Benutzern, eigene Anwendungen zu erstellen, die mit ihrem Identitätsanbieter kommunizieren, um Benutzer und Rollen für Snowflake bereitzustellen, zuzuordnen und zu verwalten.

Derzeit werden benutzerdefinierte SCIM-Integrationen für Identitätsanbieter unterstützt, die weder Okta noch Microsoft Azure AD sind.

Gehen Sie nach dem Erstellen Ihrer SCIM-Anwendung wie folgt vor, um eine Snowflake-Sicherheitsintegration zu erstellen und ein SCIM-API-Autorisierungstoken zu generieren. Speichern Sie das Autorisierungstoken, und fügen Sie es in den SCIM-API-Anforderungsheader ein, wie unter Erstellen einer SCIM-API-Anforderung beschrieben.

Voraussetzungen

Stellen Sie vor dem Bereitstellen von Benutzern oder Gruppen sicher, dass die Netzwerkrichtlinie in Snowflake den Zugriff aus den IP-Bereichen zulässt, die Ihrer Organisation entsprechen. Weitere Informationen dazu finden Sie unter Verwalten von SCIM-Netzwerkrichtlinien.

Einschränkungen

  • Wenn Ihr Snowflake-Konto mit Unterstrichen im Kontonamen (z. B. my_account) erstellt wurde, können Sie auf Ihr Snowflake-Konto zugreifen, wobei der Kontoname Unterstriche oder Bindestriche enthält (z. B. my-account). Wenn Ihr SCIM-Anbieter denselben Kontonamen für SAML SSO und SCIM wiederverwendet, werden Kontonamen mit Unterstrichen nicht unterstützt. Verwenden Sie den Kontonamen mit Bindestrich, um SCIM zu konfigurieren.

  • Eine benutzerdefinierte SCIM-Integration kann die Bereitstellung und Verwaltung verschachtelter Gruppen ermöglichen oder nicht. Bevor Sie versuchen, eine benutzerdefinierte SCIM-Integration zum Bereitstellen verschachtelter Gruppen in Snowflake zu verwenden, wenden Sie sich an Ihren Identitätsanbieter, um festzustellen, ob verschachtelte Gruppen mit einer SCIM-Integration verwendet werden können.

Benutzerdefinierte SCIM-Sicherheitsintegration und API-Token erstellen

The Snowflake configuration process creates a SCIM security integration to allow users and roles created in the identity provider to be owned by the GENERIC_SCIM_PROVISIONER SCIM role in Snowflake and creates an access token to use in SCIM API requests. The access token is valid for six months. Upon expiration, create a new access token manually using SYSTEM$GENERATE_SCIM_ACCESS_TOKEN as shown below.

Führen Sie die folgenden SQL-Anweisungen in Ihrem bevorzugten Snowflake-Client aus.

use role accountadmin;
create or replace role generic_scim_provisioner;
grant create user on account to role generic_scim_provisioner;
grant create role on account to role generic_scim_provisioner;
grant role generic_scim_provisioner to role accountadmin;
create or replace security integration generic_scim_provisioning
    type=scim
    scim_client='generic'
    run_as_role='GENERIC_SCIM_PROVISIONER';
select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');

Jede der folgenden Anweisungen wird unten erläutert.

  1. Da für Sicherheitsintegrationen die Rolle ACCOUNTADMIN erforderlich ist, überprüfen Sie die Rolle ACCOUNTADMIN.

    use role accountadmin;
    
  2. Erstellen Sie die benutzerdefinierte Rolle GENERIC_SCIM_PROVISIONER. Alle vom IdP erstellten Benutzer und Rollen in Snowflake gehören der Rolle GENERIC_SCIM_PROVISIONER mit eingeschränktem Geltungsbereich.

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

    create or replace security integration generic_scim_provisioning
        type=scim
        scim_client='generic'
        run_as_role='GENERIC_SCIM_PROVISIONER';
    
  4. Erstellen Sie das Autorisierungstoken, 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('GENERIC_SCIM_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 generic_scim_provisioning set network_policy = <SCIM-Netzwerkrichtlinie>;

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

alter security integration generic_scim_provisioning unset <SCIM-Netzwerkrichtlinie>;

Wobei:

generic_scim_provisioning

Gibt den Namen der benutzerdefinierte SCIM-Sicherheitsintegration an.

<scim_network_policy>

Gibt die benutzerdefinierte SCIM.Netzwerkrichtlinie in Snowflake an.

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