Installieren und Konfigurieren des Konnektors mit SQL-Befehlen

Unter diesem Thema das Installieren und Konfigurieren des Konnektors unter Verwendung von SQL-Befehlen beschrieben. Es wird davon ausgegangen, dass Sie die unter Vorbereiten Ihrer ServiceNow-Instanz beschriebenen Prozeduren bereits ausgeführt haben.

Unter diesem Thema:

OAuth einrichten

Bemerkung

Wenn Sie statt OAuth die einfache Authentifizierung verwenden möchten, können Sie diesen Abschnitt überspringen und mit Erstellen eines Geheimnisobjekts fortfahren.

Sie können den Snowflake-Konnektor für ServiceNow so konfigurieren, dass er OAuth für die Authentifizierung bei der ServiceNow-Instanz verwendet:

  • In ServiceNow müssen Sie die Instanz so einrichten, dass sie die Verwendung von OAuth mit dem Autorisierungscode-Gewährungsablauf unterstützt.

  • Im Snowflake-Konnektor für ServiceNow:

    • Der Konnektor verwendet eine Sicherheitsintegration mit TYPE = API_AUTHENTICATION, um Snowflake mit der ServiceNow-Instanz zu verbinden.

      Die Sicherheitsintegration gibt den ServiceNow-OAuth-Client-ID, das Clientgeheimnis und die Endpunkt-URL für die Authentifizierung gegenüber der ServiceNow-Instanz an.

    • Der Konnektor verwendet ein Snowflake-Geheimnisobjekt zur Verwaltung sensibler Informationen, einschließlich der Authentifizierungsdaten.

      Im Falle der Verwendung von OAuth für die Authentifizierung speichert der Konnektor das ServiceNow-OAuth-Aktualisierungstoken, die Ablaufzeit des Aktualisierungstokens und den Namen der Sicherheitsintegration im Snowflake-Geheimnisobjekt.

Führen Sie die folgenden Schritte aus, um den Snowflake-Konnektor für ServiceNow zur Verwendung mit OAuth einzurichten:

  1. Konfigurieren Sie Ihre ServiceNow-Instanz so, dass sie OAuth mit dem Autorisierungscode-Gewährungsablauf verwendet.

    • Wenn Ihre ServiceNow-Instanz bereits den OAuth-Autorisierungscode-Gewährungsablauf verwendet und Sie diese Instanz mit dem Snowflake-ServiceNow-Konnektor verwenden möchten, notieren Sie sich die Client-ID, das Clientgeheimnis und die Endpunkt-URL, die dem OAuth-Token entspricht.

      Weitere Informationen dazu finden Sie unter OAuth-Token verwalten. Nachdem Sie diese Informationen notiert haben, erstellen Sie im nächsten Schritt eine Sicherheitsintegration.

    • Wenn Sie eine andere ServiceNow-Instanz verwenden möchten, greifen Sie auf die Instanz zu, oder erstellen Sie diese, und konfigurieren Sie dann die Instanz so, dass sie OAuth mit dem unter OAuth einrichten und Endpunkt für den Zugriff von Clients auf Instanz erstellen gezeigten Autorisierungscode-Gewährungsablauf verwendet.

  2. Erstellen Sie eine Anwendungsregistrierung in ServiceNow, und verwenden Sie diese zur Konfiguration des Konnektors.

    1. Melden Sie sich bei Ihrer ServiceNow-Instanz an, und wählen Sie dann Homepage aus.

    2. Suchen Sie nach OAuth, und wählen Sie dann Application Registry aus.

    3. Wählen Sie New und dann Create an OAuth API endpoint for external clients aus.

      Daraufhin wird eine Konfigurationsseite für die Anwendungsregistrierung angezeigt, wie in der folgenden Abbildung dargestellt:

      Displays the Application Registry page in ServiceNow.
    4. Geben Sie in ServiceNow im Feld Name einen Namen für die OAuth-Anwendungsregistrierung ein.

    5. Geben Sie in ServiceNow im Feld Redirect URL field Folgendes ein:

      https://apps-api.c1.<cloud_region_id>.<cloud>.app.snowflake.com/oauth/complete-secret
      
      Copy

      Wobei:

      cloud_region_id

      Gibt den Bezeichner der Cloudregion Ihres Snowflake-Kontos an.

      cloud

      Gibt den Bezeichner für die Cloudplattform an (z. B. aws, azure oder gcp).

    6. Aktualisieren Sie, falls erforderlich, in ServiceNow die Werte in den Feldern Refresh Token Lifespan und Access Token Lifespan.

      • Snowflake empfiehlt, die Lebensdauer des Zugriffstokens auf mindestens 600 Sekunden festzulegen.

      • Für die Lebensdauer des Aktualisierungstokens geben Sie einen Wert von 7.776.000 (90 Tage) an.

    7. Wählen Sie in ServiceNow die Option Submit aus.

      Die OAuth-Anwendungsregistrierung wird in der Liste der Anwendungsregistrierungen angezeigt.

    8. Wählen Sie in ServiceNow die soeben erstellte Anwendungsregistrierung aus.

      Beachten Sie, dass die Werte in den Feldern Client ID und Client Secret von ServiceNow generiert wurden. Diese Werte benötigen Sie im nächsten Abschnitt beim Erstellen einer Sicherheitsintegration.

Generieren von OAuth-Aktualisierungstoken

So generieren Sie das OAuth-Aktualisierungstoken:

  1. Stellen Sie sicher, dass Sie die unter OAuth einrichten beschriebenen Aufgaben durchgeführt haben.

  2. Senden Sie eine HTTP-Anforderung an den /oauth_token.do-Endpunkt Ihrer ServiceNow-Instanz, wie im REST-OAuth-Beispiel der ServiceNow-Dokumentation erklärt.

    So verwenden Sie zum Beispiel curl zum Senden der HTTP-Anfrage:

    curl -d "grant_type=password" --data-urlencode "client_id=<client_id>" --data-urlencode "client_secret=<client_secret>" --data-urlencode "username=<username>" --data-urlencode "password=<password>" -X POST https://<instance_name>.service-now.com/oauth_token.do
    
    Copy

    Wobei:

    instance_name

    Gibt den Namen Ihrer ServiceNow-Instanz an.

    client_id und client_secret

    Geben Sie die Werte an, die Sie beim Einrichten des ServiceNow-Endpunkts erhalten haben.

    username und password

    Geben Sie die Anmeldeinformationen für Ihre ServiceNow-Instanz an.

    Bemerkung

    Im obigen curl-Beispiel wird das Befehlszeilenflag data-urlencode verwendet, um die URL-Codierung von Clientgeheimnis, Benutzernamen und Kennwort für die HTTP-Anforderung vorzunehmen, die an ServiceNow gesendet wird.

    Wenn Sie ein anderes Tool zum Senden der HTTP-Anforderung verwenden, stellen Sie sicher, dass Sie bei der URL-Codierung für die Anforderung diese Werte verwenden.

    Der Text (Body) der HTTP-Antwort enthält ein JSON-Objekt. Rufen Sie das Aktualisierungstoken aus dem Feld refresh_token in folgendes Objekt ab:

    {"access_token":"abcd1234","refresh_token":"cdef567","scope":"useraccount","token_type":"Bearer","expires_in":1799}
    
    Copy

Erstellen einer Sicherheitsintegration

Eine Sicherheitsintegration ist ein Snowflake-Objekt, das eine Schnittstelle zwischen Snowflake und einem Drittanbieterdienst für OAuth 2.0 bereitstellt.

Verwenden Sie den Befehl CREATE SECURITY INTEGRATION, um eine Sicherheitsintegration zu erstellen, wie im folgenden Beispiel gezeigt:

CREATE SECURITY INTEGRATION <name>
 TYPE = API_AUTHENTICATION
 AUTH_TYPE = OAUTH2
 OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
 OAUTH_CLIENT_ID = '<client_id>'
 OAUTH_CLIENT_SECRET = '<client_secret>'
 OAUTH_TOKEN_ENDPOINT = 'https://<my_instance>.service-now.com/oauth_token.do'
 ENABLED = TRUE;
Copy

Wobei:

name

Gibt den Namen der Sicherheitsintegration an.

client_id

Gibt den Wert des Feldes Client ID an, den Sie im vorherigen Abschnitt von ServiceNow erhalten haben.

client_secret

Gibt den Wert des Feldes Client Secret an, den Sie im vorherigen Abschnitt von ServiceNow erhalten haben.

my_instance

Gibt den Namen Ihrer ServiceNow-Instanz an. Dies ist der erste Teil des Hostnamens Ihrer ServiceNow-Instanz. Angenommen, die URL zu Ihrer ServiceNow-Instanz ist:

https://myinstance.service-now.com
Copy

Der Name Ihrer Instanz wäre dann myinstance.

Erstellen eines Geheimnisobjekts

Erstellen Sie das Snowflake-Geheimnisobjekt, das der Snowflake-Konnektor für ServiceNow zur Authentifizierung verwendet.

Snowflake empfiehlt, für die Verwaltung des Geheimnisobjekts eine eigene Rolle zu verwenden, die von der Rolle ACCOUNTADMIN (die Rolle, mit der Sie den Konnektor installieren, konfigurieren und ausführen) getrennt ist. Snowflake empfiehlt außerdem, das Geheimnisobjekt in einer eigenen Datenbank und einem eigenen Schema zu speichern. Beachten Sie, dass Sie eine beliebige Rolle für die Verwaltung des Geheimnisses wählen können und dass Sie eine beliebige Datenbank und ein beliebiges Schema für die Speicherung des Geheimnisses wählen können.

Um eine kundenspezifische Rolle zur Verwaltung des Geheimnisses zu erstellen, verwenden Sie den Befehl CREATE ROLE. Weitere Informationen zu den Berechtigungen, die Sie einer Rolle erteilen können, finden Sie unter Zugriffssteuerungsrechte.

In den nächsten Abschnitten wird erläutert, wie ein Geheimnisobjekt erstellt wird, das in einer separaten Datenbank und einem separaten Schema gespeichert ist und von einer kundenspezifischen Rolle verwaltet wird.

Erstellen eines Schemas für das Geheimnisobjekt

Erstellen Sie zunächst eine Datenbank und ein Schema zum Speichern des Geheimnisobjekts, indem Sie die Befehle CREATE DATABASE und CREATE SCHEMA ausführen. Die Namen des Schemas und der Datenbank müssen gültige Objektbezeichner sein.

Um zum Beispiel die Datenbank secretsdb und das Schema apiauth für das Geheimnisobjekt zu erstellen, führen Sie die folgenden Befehle aus:

USE ROLE accountadmin;
CREATE DATABASE secretsdb;
CREATE SCHEMA apiauth;
Copy

Erstellen einer kundenspezifischen Rolle zum Verwalten des Geheimnisses

Als Nächstes erstellen Sie eine kundenspezifische Rolle zum Verwalten des Geheimnisses (vorausgesetzt, Sie möchten keine vorhandene Rolle verwenden) und erteilen der Rolle die zum Erstellen des Geheimnisses erforderlichen Berechtigungen.

  1. Führen Sie mit der Systemrolle USERADMIN den Befehl CREATE ROLE aus, um eine kundenspezifische Rolle zum Verwalten des Geheimnisses zu erstellen. Um zum Beispiel die kundenspezifische Rolle secretadmin zum Verwalten des Geheimnisses zu erstellen, führen Sie die folgenden Befehle aus:

    USE ROLE useradmin;
    CREATE ROLE secretadmin;
    
    Copy
  2. Führen Sie mit der Systemrolle SECURITYADMIN den Befehl GRANT <Berechtigungen> TO ROLE aus, um der kundenspezifischen Rolle die folgenden Berechtigungen zu erteilen:

    Beispiel:

    USE ROLE securityadmin;
    GRANT USAGE ON DATABASE secretsdb TO ROLE secretadmin;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT CREATE SECRET ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT USAGE ON INTEGRATION servicenow_oauth TO role secretadmin;
    
    Copy
  3. Führen Sie mit der Systemrolle USERADMIN den Befehl GRANT <Berechtigungen> TO ROLE aus, um dem Benutzer, der das Geheimnis erstellt, die kundenspezifische Rolle zuzuweisen. Um beispielsweise dem Benutzer servicenow_secret_owner die Rolle zuzuweisen, führen Sie die folgenden Befehle aus:

    USE ROLE useradmin;
    GRANT ROLE secretadmin TO user servicenow_secret_owner;
    
    Copy

Erstellen eines Geheimnisses

Als Nächstes erstellen Sie ein Geheimnis, damit Snowflake sich bei der ServiceNow-Instanz unter Verwendung von OAuth mit dem Autorisierungscode-Gewährungsablauf authentifizieren kann.

Bemerkung

Wenn Sie statt OAuth die Basisauthentifizierung verwenden möchten, finden Sie die Hinweise unten.

Um ein Geheimnisobjekt zu erstellen, führen Sie den Befehl CREATE SECRET mit den folgenden Parametern aus:

  • Setzen Sie TYPE auf OAUTH2.

  • Setzen Sie OAUTH_REFRESH_TOKEN auf das OAuth-Aktualisierungstoken, das Sie in unter Generieren von OAuth-Aktualisierungstoken abgerufen haben.

  • Setzen Sie OAUTH_REFRESH_TOKEN_EXPIRY_TIME auf den Zeitstempel für den Ablauf des Aktualisierungstokens in der UTC-Zeitzone. Sie können dies berechnen, indem Sie die Token-Lebensdauer von ServiceNow zu dem Datum addieren, an dem das Token ausgestellt wurde. Standardmäßig läuft das Token nach 100 Tagen ab.

  • Setzen Sie API_AUTHENTICATION auf den Namen der Sicherheitsintegration, die Sie unter Erstellen einer Sicherheitsintegration erstellt haben:

Um zum Beispiel ein Geheimnis namens service_now_creds_oauth_code zu erstellen, das die Sicherheitsintegration mit dem Namen servicenow_oauth verwendet, führen Sie folgende Befehle aus:

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_oauth_code
  TYPE = OAUTH2
  OAUTH_REFRESH_TOKEN = '34n;vods4nQsdg09wee4qnfvadH'
  OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '2022-01-06 20:00:00'
  API_AUTHENTICATION = servicenow_oauth;
Copy

Um die Eigenschaften eines bestehenden Geheimnisses zu ändern (z. B. um das OAuth-Aktualisierungstoken zu aktualisieren), verwenden Sie den Befehl ALTER SECRET.

Bemerkung

Wenn Sie die Basisauthentifizierung (anstelle von OAuth) verwenden möchten, führen Sie den Befehl CREATE SECRET aus, um ein Geheimnis zu erstellen, bei dem TYPE auf PASSWORD gesetzt ist. Setzen Sie USERNAME und PASSWORD auf den Benutzernamen und das Kennwort des ServiceNow-Benutzers, den Sie für die Authentifizierung bei der ServiceNow-Instanz verwenden möchten. Beispiel:

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_pw
  TYPE = PASSWORD
  USERNAME = 'jsmith1'
  PASSWORD = 'W3dr@fg*7B1c4j';
Copy

Wenn für diesen Benutzer die mehrstufige Authentifizierung aktiviert ist, müssen Sie das MFA-Token zusammen mit dem Kennwort angeben wie unter REST-API in der ServiceNow-Dokumentation beschrieben.

Erstellen eines Warehouse

Snowflake empfiehlt das Erstellen eines Warehouses speziell für den Konnektor. Ein dediziertes Warehouse ermöglicht eine bessere Kostenmanagement und eine bessere Ressourcenverfolgung. Um die Ressourcenverfolgung zu vereinfachen, können Sie optional zu dem dedizierten Warehouse ein oder mehrere Tags hinzufügen.

Bemerkung

Um den Snowflake-Konnektor für ServiceNow ohne ein spezielles Warehouse auszuführen, übergeben Sie bei Aufforderung zur Eingabe eines Wertes für das Warehouse eine leere Zeichenfolge.

Für das Konnektor-Warehouse empfiehlt Snowflake die Verwendung eines Multi-Cluster-Warehouses der Größe „Large“.

Um ein „Large“-Warehouse mit dem Namen servicenow_conn_warehouse zu erstellen, führen Sie den folgenden Befehl aus:

USE ROLE accountadmin;
CREATE WAREHOUSE servicenow_conn_warehouse WAREHOUSE_SIZE = LARGE;
Copy

Erstellen einer Datenbank und eines Schemas für die ServiceNow-Daten

Als Nächstes erstellen Sie eine Datenbank und ein Schema für die ServiceNow-Daten. Der Snowflake-Konnektor für ServiceNow erfasst ServiceNow-Daten in dieser Datenbank und diesem Schema.

Beim Erstellen von Datenbank und Schema ist Folgendes zu beachten:

Um die Datenbank und das Schema zu erstellen, führen Sie die Befehle CREATE DATABASE und CREATE SCHEMA aus.

Um beispielsweise die Datenbank dest_db und das Schema dest_schema für die ServiceNow-Daten zu erstellen, führen Sie die folgenden Befehle aus:

USE ROLE accountadmin;
CREATE DATABASE dest_db;
CREATE SCHEMA dest_schema;
Copy

Bemerkung

Wenn Sie den Konnektor neu installieren, können Sie das Schema wiederverwenden, das Sie für die vorherige Installation des Konnektors erstellt haben. Dies ist möglich, wenn bei der vorherigen Installation des Konnektors bereits Daten geladen wurden und Sie weiterhin Daten in dieselben Tabellen laden möchten.

Um das Laden von Daten fortzusetzen, dürfen Sie vor der erneuten Installation des Konnektors das Schema nicht ändern. Ändern Sie nicht die Definitionen der Tabellen, die bei der vorherigen Installation des Konnektors erstellt wurden.

Wenn Sie später die gespeicherte Prozedur ENABLE_TABLES aufrufen, prüft die gespeicherte Prozedur, ob die erforderlichen Objekte bereits vorhanden sind, und versucht nicht, diese neu zu erstellen.

Um festzustellen, wo die Erfassung der Daten wieder aufgenommen werden soll, untersucht der Konnektor die Ereignisprotokolltabelle:

  • Wenn der Konnektor in der Ereignisprotokolltabelle Zeilen des Typs UPDATE oder DELETE findet, verwendet er den Zeitstempel der neuesten Zeile (aus der Spalte sys_updated_on oder sys_created_on) als Startpunkt für die Erfassung.

  • Wenn in der Ereignistabelle keine Zeilen vom Typ UPDATE oder DELETE vorhanden sind, verwendet der Konnektor den ältesten Wert aus der Spalte event_date der Ereignisprotokolltabelle.

Erstellen einer API-Integration für die Kommunikation mit der ServiceNow-Instanz

Als Nächstes erstellen Sie eine API-Integration für die Kommunikation mit der ServiceNow-Instanz. Führen Sie den Befehl CREATE API INTEGRATION mit der folgenden Syntax aus:

CREATE API INTEGRATION <integration_name>
  API_ALLOWED_PREFIXES = ('https://<servicenow_instance_name>.service-now.com')
  ALLOWED_AUTHENTICATION_SECRETS = (<secret_name>)
  ENABLED = TRUE
Copy

Wobei:

integration_name

Gibt den Namen der API-Integration an. Der Name muss ein gültiger Objektbezeichner sein. Der Name muss unter den API-Integrationen in Ihrem Konto eindeutig sein.

API_ALLOWED_PREFIXES = ('https://servicenow_instance_name.service-now.com')

Gibt die URL zu Ihrer ServiceNow-Instanz an. Dies beschränkt die Verwendung dieser API-Integration auf die Instanz mit der angegebenen URL.

ALLOWED_AUTHENTICATION_SECRETS = (secret_name)

Gibt die Liste der Namen der Geheimnisse an, die im Rahmen der API-Integration verwendet werden dürfen.

Setzen Sie dies auf den Namen des Geheimnisobjekts, das Sie in Erstellen eines Geheimnisobjekts erstellt haben.

ENABLED = TRUE

Gibt an, ob diese API-Integration aktiviert oder deaktiviert ist. Wenn die API-Integration deaktiviert ist, funktioniert keine der drauf basierenden externen Funktionen.

TRUE

Ermöglicht die Ausführung der Integration basierend auf den in der Integrationsdefinition angegebenen Parametern.

FALSE

Hält die Integration für Wartungszwecke an. Eine Integration zwischen Snowflake und einem Drittanbieterdienst funktioniert nicht.

Um beispielsweise die API-Integration namens servicenow_api_integration für die ServiceNow-Instanz namens myinstance zu erstellen, führen Sie die folgenden Befehle aus:

USE ROLE accountadmin;
CREATE API INTEGRATION servicenow_api_integration
  API_ALLOWED_PREFIXES = ('https://myinstance.service-now.com')
  ALLOWED_AUTHENTICATION_SECRETS = (secretsdb.apiauth.servicenow_creds_pw)
  ENABLED = TRUE
Copy

Bemerkung

Sie brauchen keinen der anderen Parameter in der CREATE API INTEGRATION-Anweisung zu setzen.

Konfigurieren der Protokollierung für den Konnektor

Der ServiceNow-Konnektor für Snowflake verwendet Ereignistabellen zum Speichern von Fehlerprotokollen für den Konnektor. Um eine Ereignistabelle einzurichten, befolgen Sie die Anleitung unter Einrichten einer Ereignistabelle. Wenn die Ereignistabelle nicht eingerichtet ist, werden die Protokoll- und Ereignisinformationen verworfen.

Erstellen einer kundenspezifischen Rolle für den Konnektor

Erstellen Sie dann eine kundenspezifische Rolle für den Konnektor, und erteilen Sie dieser Rolle die für die Ausführung des Konnektors erforderlichen Berechtigungen.

Mit dieser Rolle wird dem Konnektor Folgendes ermöglicht:

  • Erstellen und Verwalten von Aufgaben zum Erfassen der Daten

  • Verwenden des dedizierten Warehouses

  • Zugriff auf Geheimnis und API-Integration für die Verbindung zur ServiceNow-Instanz

Die Rolle ist auch Eigentümer der Tabellen und Ansichten, die die vom Konnektor erfassten ServiceNow-Daten enthalten.

So erstellen Sie diese Rolle und erteilen die Berechtigungen:

  1. Führen Sie mit der Systemrolle USERADMIN den Befehl CREATE ROLE aus, um eine kundenspezifische Rolle zu erstellen, die Eigentümer der Daten sein wird. Um zum Beispiel die kundenspezifische Rolle connector_resources_provider als Eigentümer der Daten zu erstellen, führen Sie die folgenden Befehle aus:

    USE ROLE useradmin;
    CREATE ROLE connector_resources_provider;
    
    Copy
  2. Führen Sie mit der Rolle ACCOUNTADMIN den Befehl GRANT <Berechtigungen> TO ROLE aus, um der kundenspezifischen Rolle die folgenden Berechtigungen zu erteilen:

    So erteilen Sie beispielsweise der Rolle connector_resources_provider die folgenden Berechtigungen:

    • EXECUTE TASK für das Konto

    • EXECUTE MANAGED TASK für das Konto

    • USAGE für das Warehouse servicenow_conn_warehouse

    • USAGE für die Datenbank dest_db

    • USAGE, CREATE TABLE und CREATE VIEW für das Schema dest_db.dest_schema

    • USAGE für die Integration servicenow_api_integration

    • USAGE für die Datenbank secretsdb

    • USAGE für das Schema secretsdb.apiauth

    • USAGE für das Geheimnis secretsdb.apiauth.servicenow_creds_oauth_code secret

    Führen Sie die folgenden Befehle aus:

    USE ROLE accountadmin;
    
    GRANT EXECUTE TASK ON ACCOUNT TO ROLE connector_resources_provider;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO ROLE connector_resources_provider;
    
    GRANT USAGE ON WAREHOUSE servicenow_conn_warehouse TO ROLE connector_resources_provider;
    
    GRANT USAGE ON DATABASE dest_db TO ROLE connector_resources_provider;
    GRANT USAGE ON SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
    GRANT CREATE TABLE ON SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
    GRANT CREATE VIEW ON SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
    
    GRANT USAGE ON INTEGRATION servicenow_api_integration TO ROLE connector_resources_provider;
    
    GRANT USAGE ON DATABASE secretsdb TO ROLE connector_resources_provider;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO ROLE connector_resources_provider;
    GRANT USAGE ON SECRET secretsdb.apiauth.servicenow_creds_oauth_code TO ROLE connector_resources_provider;
    
    Copy

Nachdem Sie den Snowflake-Konnektor für ServiceNow installiert haben, weisen Sie dem Konnektor diese Rolle zu.

Es wird zwar empfohlen, separate, feiner abgestufte Rollen für den Zugriff auf erfassten Daten zu erstellen, nachdem die Erfassung begonnen hat, aber Sie können diese Rolle verwenden, um erfasste Daten abzufragen, und Sie können sie um zusätzliche Berechtigungen erweitern. Umgekehrt ist das Entziehen von Rollenberechtigungen für Objekte, die vom Konnektor benötigt werden, oder das Ändern der Rolleneigentümerschaft von Tabellen und Ansichten der erfassten Daten nicht zulässig und führt zur Unterbrechung des Konnektors.

Installieren des Snowflake-Konnektors für ServiceNow

So installieren Sie den Konnektor:

  1. Erstellen Sie mit Snowsight eine Datenbank für die Konnektor-Instanz. Weitere Informationen zum Erstellen der Datenbank finden Sie unter Installieren und Konfigurieren des Konnektors mit Snowsight.

  2. Navigieren Sie zum SQL-Arbeitsblatt.

  3. Melden Sie sich als Benutzer mit der Rolle ACCOUNTADMIN an. Beispiel:

    USE ROLE ACCOUNTADMIN;
    
    Copy
  4. Weisen Sie der Datenbank, die als Instanz des Konnektors dient, die kundenspezifische Rolle zu, die für den Konnektor erstellt wurde (die zuvor erstellte Rolle).

    Um beispielsweise die Rolle connector_resources_provider der Datenbank my_connector_servicenow zuzuweisen, führen Sie den folgenden Befehl aus:

    GRANT ROLE connector_resources_provider TO DATABASE my_connector_servicenow;
    
    Copy
  5. Setzen Sie die Datenbankeigenschaft FIREWALL_CONFIGURATION auf die installierte Datenbank. Fügen Sie das URL-Präfix für Ihre ServiceNow-Instanz hinzu.

    Wenn Ihre Datenbank beispielsweise my_connector_servicenow heißt und der Name der ServiceNow-Instanz my-instance ist, führen Sie den folgenden Befehl aus:

    ALTER DATABASE my_connector_servicenow SET FIREWALL_CONFIGURATION = ('https://my-instance.service-now.com')
    
    Copy
  6. Führen Sie den Befehl USE DATABASE aus, um die Datenbank für den Konnektor zu verwenden. Beispiel:

    USE DATABASE my_connector_servicenow;
    
    Copy
  7. Konfigurieren Sie die Verbindung zur ServiceNow-Instanz, indem Sie mit dem Befehl CALL die gespeicherte Prozedur namens CONFIGURE_CONNECTION aufrufen:

    CALL CONFIGURE_CONNECTION({
       'serviceNowUrl': '<servicenow_base_url>',
       'secret': '<secret_name>',
       'apiIntegrationName': '<api_integration_name>'
    })
    
    Copy

    Wobei:

    servicenow_base_url

    Gibt die URL der ServiceNow-Instanz an, die der Konnektor verwenden soll. Die URL muss das folgende Format haben:

    https://<servicenow_instance_name>.service-now.com
    
    Copy
    secret_name

    Gibt den vollqualifizierten Namen des Geheimnisobjekts an, das die Anmeldeinformationen für die Authentifizierung bei ServiceNow (das zuvor erstellte Geheimnis) enthält.

    Sie müssen den vollqualifizierten Namen des Geheimnisobjekts in folgendem Format angeben:

    <database_name>.<schema_name>.<secret_name>
    
    Copy

    Die Namen von Datenbank, Schema und Geheimnis müssen gültige Objektbezeichner sein.

    api_integration_name

    Gibt den Namen der API-Integration für ServiceNow (die zuvor erstellte API-Integration) an.

    Der Name der Integration muss ein gültiger Objektbezeichner sein.

    Angenommen, Sie konfigurieren die Verbindung zu einer ServiceNow-Instanz mit folgenden Eigenschaften:

    • Die URL ist https://myinstance.service-now.com.

    • Es wird das in secretsdb.apiauth.servicenow_creds_oauth_code gespeicherte Geheimnis verwendet.

    • Es wird die API-Integration namens servicenow_api_integration verwendet.

    Führen Sie den folgenden Befehl aus:

     CALL CONFIGURE_CONNECTION({
        'serviceNowUrl': 'https://myinstance.service-now.com',
        'secret': 'SECRETSDB.APIAUTH.SERVICENOW_CREDS_OAUTH_CODE',
        'apiIntegrationName': 'SERVICENOW_API_INTEGRATION'
    });
    
    Copy

    Wenn die Verbindung erfolgreich konfiguriert wurde, gibt diese gespeicherte Prozedur die folgende Meldung aus:

    Connection configured successfully
    
    Copy

    Bemerkung

    Sobald der Konnektor konfiguriert ist, ist es nicht mehr möglich, die Namen des übergebenen Geheimnisses und der API-Integration zu ändern. Der Konnektor referenziert sie mit ihrem Namen. Der Versuch, den Namen dieser Objekte zu löschen oder zu ändern, führt dazu, dass der Konnektor nicht mehr funktioniert.

  8. Starten Sie den Konnektor wie unter Starten des Snowflake-Konnektor für ServiceNow beschrieben.

Die neu erstellte Datenbank ist eine Instanz des Konnektors und enthält Folgendes:

Starten und Anhalten des Snowflake-Konnektors für ServiceNow

In den folgenden Abschnitten wird beschrieben, wie der Konnektor gestartet, angehalten und fortgesetzt wird.

Starten des Snowflake-Konnektor für ServiceNow

Starten Sie den Konnektor, indem Sie die Prozedur mit dem Namen START_CONNECTOR aufrufen. Die Argumente für diese gespeicherte Prozedur werden unten beschrieben:

CALL START_CONNECTOR(
  '<warehouse_name>',
  '<dest_db_schema>',
  '<name_of_journal_table>',
  '<connector_role>',
);
Copy

Wobei:

warehouse_name

Gibt den Namen des Warehouses für den Konnektor an.

Der Name des Warehouses muss ein gültiger Objektbezeichner sein.

Um den Konnektor so zu konfigurieren, dass er ohne ein bestimmtes Warehouse ausgeführt wird, geben Sie eine leere Zeichenfolge für den Warehouse-Namen ein.

dest_db_schema

Gibt den vollqualifizierten Namen des Schemas für die ServiceNow-Daten in Snowflake (das Schema, das Sie zuvor erstellt haben) an.

Sie müssen den vollqualifizierten Namen des Schemas in folgendem Format angeben:

<database_name>.<schema_name>
Copy

Die Namen der Datenbank und des Schemas müssen gültige Objektbezeichner sein.

name_of_journal_table

Gibt den Namen der Tabelle an, die Informationen zu gelöschten Datensätzen enthält. Weitere Informationen dazu finden Sie unter Vorbereiten Ihrer ServiceNow-Instanz.

Beachten Sie, dass Informationen zu gelöschten Datensätzen nur für Tabellen verfügbar sind, die Sie für die Weitergabe gelöschter Datensätze eingerichtet haben.

Um die Weitergabe gelöschter Datensätze zu verhindern, geben Sie eine leere Zeichenfolge für dieses Argument an.

connector_role

Gibt den Namen der kundenspezifischen Rolle für die zuvor erstellte Konnektorrolle an.

Der Name der Rolle muss ein gültiger Objektbezeichner sein.

Angenommen, Sie möchten den Konnektor my_connector_servicenow starten, der Folgendes verwendet:

  • Warehouse servicenow_conn_warehouse

  • Schema dest_db.dest_schema für die ServiceNow-Daten in Snowflake

  • ServiceNow-Tabelle sys_audit_delete zur Verfolgung gelöschter Datensätze

  • Kundenspezifische Rolle connector_resources_provider

Führen Sie die folgenden Befehle aus:

CALL START_CONNECTOR(
 'SERVICENOW_CONN_WAREHOUSE',
 'DEST_DB.DEST_SCHEMA',
 'sys_audit_delete',
 'CONNECTOR_RESOURCES_PROVIDER',
);
Copy

Wenn der Konnektor erfolgreich gestartet wurde, gibt diese gespeicherte Prozedur die folgende Meldung aus:

Successfully started the Snowflake Connector for ServiceNow. The connector can be configured now.
Copy

Bemerkung

Sobald der Connector gestartet ist, ist es nicht mehr möglich, das übergebene Warehouse, die Zieldatenbank, das Zielschema und die kundenspezifische Rolle für den Konnektor umzubenennen. Der Konnektor referenziert sie mit ihrem Namen. Der Versuch, den Namen dieser Objekte zu löschen oder zu ändern, führt dazu, dass der Konnektor nicht mehr funktioniert.

Anstatt das Warehouse umzubenennen, verwenden Sie die gespeicherte Prozedur CONFIGURE_WAREHOUSE, um das vom Konnektor verwendete Warehouse zu ändern.

Anhalten des Snowflake-Konnektors für ServiceNow

Um alle vom Konnektor gestarteten Aufgaben anzuhalten, rufen Sie die gespeicherte Prozedur STOP_CONNECTOR auf:

CALL STOP_CONNECTOR();
Copy

Bemerkung

Die gespeicherte Prozedur STOP_CONNECTOR ist erst verfügbar, wenn Sie den Konnektor durch Aufruf der gespeicherten Prozedur START_CONNECTOR wieder fortsetzen.

Durch Anhalten des Konnektors wird die Interaktion mit ihm so lange unterbrochen (z. B. das Aktivieren/Deaktivieren von Tabellen oder die Konfiguration des Konnektors), bis der Konnektor durch Aufruf der gespeicherten Prozedur RESUME_CONNECTOR wieder fortgesetzt wird.

Durch das Anhalten des Konnektors werden auch keine Kosten mehr durch den Konnektor generiert.

Fortsetzen des Snowflake-Konnektors für ServiceNow

Um alle von der gespeicherten Prozedur STOP_CONNECTOR angehaltenen Aufgaben wieder fortzusetzen, rufen Sie die gespeicherte Prozedur RESUME_CONNECTOR auf:

CALL RESUME_CONNECTOR();
Copy

Bemerkung

Die gespeicherte Prozedur RESUME_CONNECTOR ist erst verfügbar, wenn Sie den Konnektor durch Aufruf der gespeicherten Prozedur START_CONNECTOR wieder fortsetzen.

Delegieren von Berechtigungen zum Konfigurieren und Überwachen des Snowflake-Konnektors für ServiceNow

Nach Installation des Konnektors kann nur die Rolle ACCOUNTADMIN die Konfigurationsprozeduren ausführen und auf die Ansichten zugreifen, die zur Überwachung des Konnektors verwendet werden.

Bemerkung

Die kundenspezifische Rolle, die Sie in Erstellen einer kundenspezifischen Rolle für den Konnektor erstellt haben, hat nicht die Berechtigung, die Konfigurationsprozeduren auszuführen oder auf die Überwachungsansichten zuzugreifen.

Um diese Berechtigungen an eine andere Rolle zu delegieren, führen Sie den Befehl GRANT IMPORTED PRIVILEGES ON DATABASE ... TO ROLE ... aus. Dieser Befehl verwendet die folgende Syntax:

GRANT IMPORTED PRIVILEGES ON DATABASE <connector_name> TO ROLE <connector_config_role>;
Copy

Wobei:

connector_name

Gibt den Namen der Datenbank an, die als Instanz des Konnektors dient.

connector_config_role

Gibt den Namen der Rolle an, die für die Konfiguration und Überwachung des Konnektors berechtigt sein soll.

Bemerkung

Dadurch erhält die Rolle aber keine Berechtigung zum Löschen der connector_name-Datenbank oder für den Zugriff auf das Schema, das die ServiceNow-Daten in Snowflake enthält.

Um beispielsweise eine kundenspezifische Rolle mit dem Namen connector_config_role zu erstellen und dieser Rolle die Berechtigungen zum Konfigurieren und Überwachen der Konnektor-Instanz my_connector_servicenow zu erteilen, führen Sie den folgenden Befehl aus:

USE ROLE useradmin;
CREATE ROLE connector_config_role;

USE ROLE securityadmin;
GRANT IMPORTED PRIVILEGES ON DATABASE my_connector_servicenow TO ROLE connector_config_role;
Copy

Ändern des vom Konnektor verwendeten Warehouses (optional)

Wenn Sie das vom Konnektor verwendete Warehouse ändern oder ein dediziertes Warehouse hinzufügen möchten, führen Sie folgenden Befehl aus:

CALL CONFIGURE_WAREHOUSE('<warehouse_name>');
Copy

Wobei:

warehouse_name

Gibt den Namen des Warehouses an, das der Konnektor verwenden soll.

Um den Konnektor so zu konfigurieren, dass er ohne ein bestimmtes Warehouse ausgeführt wird, geben Sie eine leere Zeichenfolge für den Warehouse-Namen ein.

Bemerkung

Bevor Sie den Konnektor für die Verwendung eines anderen Warehouses konfigurieren, vergewissern Sie sich, dass die vom Konnektor verwendete kundenspezifische Rolle über die USAGE-Berechtigung für das neue Warehouse verfügt.