Installieren und Konfigurieren des Konnektors mit SQL-Befehlen

Der Snowflake Connector für ServiceNow® V2 unterliegt den Nutzungsbedingungen für Snowflake Connector.

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:

Installieren des Snowflake Connector for ServiceNow®V2

Im Folgenden wird beschrieben, wie Sie den Konnektor installieren:

  1. Melden Sie sich bei Snowsight als Benutzer mit der Rolle ACCOUNTADMIN an.

  2. Wählen Sie im Navigationsmenü die Option Data Products » Marketplace aus.

  3. Suchen Sie nach dem Snowflake Connector for ServiceNow®V2, und wählen Sie dann die Kachel für den Konnektor aus.

  4. Wählen Sie auf der Seite für den Snowflake Connector for ServiceNow®V2 die Option Get aus.

    Daraufhin wird ein Dialogfeld angezeigt, über das Sie den ersten Teil des Installationsprozesses beginnen können.

    Konfigurieren Sie im Dialogfeld die folgenden Einstellungen:

    1. Geben Sie in das Feld Application name den Namen der Datenbank ein, die als Datenbank für die Konnektor-Instanz verwendet werden soll. Diese Datenbank wird automatisch für Sie erstellt.

    2. Wählen Sie im Feld Warehouse used for installation das Warehouse aus, das Sie für die Installation des Konnektors verwenden möchten.

      Bemerkung

      Dies ist nicht dasselbe Warehouse, das vom Konnektor zum Synchronisieren der Daten aus ServiceNow® verwendet wird. In einem späteren Schritt werden Sie für diesen Zweck ein eigenes Warehouse erstellen.

    3. Wählen Sie Get aus.

  5. Es wird ein Dialogfeld mit folgender Meldung angezeigt: Installing App After installation, an email will be sent to <user_email>. Um die Konfiguration mit SQL fortzusetzen, schließen Sie das Dialogfeld und gehen Sie zu Worksheets.

Einrichten von OAuth

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 Connector for ServiceNow®V2 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 Connector for ServiceNow®V2:

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

      Die Sicherheitsintegration gibt die 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 Connector for ServiceNow®V2 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 Connector for ServiceNow®V2 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:

      Zeigt die Seite „Anwendungsregistrierung“ in ServiceNow® an.
    4. Geben Sie in ServiceNow im Feld Name einen Namen für die OAuth-Anwendungsregistrierung ein.

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

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

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

    7. 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 Installieren des Snowflake Connector for ServiceNow®V2 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 der grundlegenden Objekte

Erstellen einer Sicherheitsintegration (optional)

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 wie folgt:

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 Connector for ServiceNow®V2 zur Authentifizierung verwendet.

Snowflake empfiehlt, 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 (optional)

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 der grundlegenden Objekte 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 von Warehouses

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.

Für das Konnektor-Warehouse empfiehlt Snowflake die Verwendung eines 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

Achtung

Stellen Sie sicher, dass das Warehouse eine Abfrage mindestens 3 Stunden lang ausführen kann. Dies wird durch einen Parameterwert beeinflusst, der sowohl für das vom Konnektor verwendete Warehouse als auch für das Konto festgelegt werden kann (der Wert des Kontos hat Vorrang). Um die aktuellen Werte zu überprüfen, führen Sie Folgendes aus:

SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR WAREHOUSE <connector_warehouse>;
Copy

Wenn beide Werte mindestens 10800 (d. h. 3 Stunden) betragen, ist keine Änderung erforderlich. Andernfalls führen Sie bei Bedarf Folgendes aus:

ALTER ACCOUNT SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
ALTER WAREHOUSE <connector_warehouse> SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
Copy

Wenn das Timeout nicht korrekt angegeben wird, kommt es zu Fehlern bei der Datenaufnahme.

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 Connector for ServiceNow®V2 nimmt ServiceNow®-Daten in dieser Datenbank und diesem Schema auf.

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.

Der Konnektor exportiert regelmäßig die Konfiguration und den Status des Konnektors in eine Tabelle __CONNECTOR_STATE_EXPORT im Schema, die später zur Wiederherstellung der Konnektorkonfiguration bei einer Neuinstallation verwendet werden kann. Alternativ können Sie, wenn die Exporttabelle nicht vorhanden ist oder manuell gelöscht wurde, später immer noch die gespeicherte Prozedur ENABLE_TABLES aufrufen, um die zuvor aufgenommenen Tabellen wieder zu aktivieren. Die gespeicherte Prozedur prüft, ob alle erforderlichen Objekte bereits vorhanden sind und versucht nicht, sie neu zu erstellen, sodass kein Risiko besteht, bereits aufgenommene Daten zu verlieren.

Erstellen einer Netzwerkregel für die Kommunikation mit der ServiceNow®-Instanz

Um den ausgehenden Datenverkehr von Ihrem Konto zu Ihrer ServiceNow®-Instanz zuzulassen, erstellen Sie eine Netzwerkregel. Führen Sie den Befehl CREATE NETWORK RULE mit der folgenden Syntax aus:

CREATE NETWORK RULE <name>
  MODE = 'EGRESS'
  TYPE = 'HOST_PORT'
  VALUE_LIST = ('<servicenow_instance_name>.service-now.com');
Copy

Wobei:

name

Gibt den Name der Netzwerkregel an. Der Name muss ein gültiger Objektbezeichner sein.

VALUE_LIST = ('servicenow_instance_name.service-now.com')

Legt die Liste der zulässigen ServiceNow®-Instanzen fest, an die eine Anfrage gesendet werden kann.

Bemerkung

Wenn Sie das Geheimnis mit einer benutzerdefinierten Rolle erstellt haben, müssen Sie ACCOUNTADMIN zusätzlich die Berechtigung USAGE erteilen, bevor Sie die Netzwerkregel erstellen:

USE ROLE secretadmin;
GRANT USAGE ON SECRET secretsdb.apiauth.<secret_name> TO ROLE ACCOUNTADMIN;
Copy

Erstellen einer Integration für den externen Zugriff für Kommunikation mit der ServiceNow®-Instanz

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

CREATE EXTERNAL ACCESS INTEGRATION <integration_name>
  ALLOWED_NETWORK_RULES = (<network_rule_name>)
  ALLOWED_AUTHENTICATION_SECRETS = (<secret_name>)
  ENABLED = TRUE;
Copy

Wobei:

integration_name

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

ALLOWED_NETWORK_RULES = (network_rule_name)

Gibt die Netzwerkregel an, die den Zugriff auf Ihre ServiceNow®-Instanz zulässt. Dies beschränkt die Verwendung dieser Integration auf die Instanzen mit den URLs, die in der Netzwerkregel angegeben sind.

Setzen Sie dies auf den Namen der Netzwerkregel, die Sie in Erstellen einer Netzwerkregel für die Kommunikation mit der ServiceNow®-Instanz erstellt haben.

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 Integration für den externen Zugriff namens servicenow_external_access_integration zu erstellen, führen Sie den folgenden Befehl aus:

USE ROLE accountadmin;
CREATE EXTERNAL ACCESS INTEGRATION servicenow_external_access_integration
  ALLOWED_NETWORK_RULES = (secretsdb.apiauth.servicenow_network_rule)
  ALLOWED_AUTHENTICATION_SECRETS = (secretsdb.apiauth.servicenow_creds_pw)
  ENABLED = TRUE
Copy

Konfigurieren der Protokollierung für den Konnektor

Der Snowflake Connector for ServiceNow®V2 verwendet Ereignistabellen zum Speichern von Fehlerprotokollen für den Konnektor. Um eine Ereignistabelle einzurichten, befolgen Sie die Anleitung unter Einrichten einer Ereignistabelle.

Wichtig

Es wird dringend empfohlen, die Freigabe von Protokollen zu aktivieren. Dies wird eine unschätzbare Hilfe bei der Problembehandlung in nicht offensichtlichen Fällen sein.

Einrichten des installierten Konnektors

So richten Sie den Konnektor ein:

  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. Erteilen Sie dem Konnektor alle erforderlichen Berechtigungen für die Datenbank, die als Instanz des Konnektors dient.

    So erteilen Sie beispielsweise dem Konnektor namens my_connector_servicenow 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_external_access_integration

    • USAGE für die Datenbank secretsdb

    • USAGE für das Schema secretsdb.apiauth

    • READ 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 APPLICATION my_connector_servicenow;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON WAREHOUSE servicenow_conn_warehouse TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON DATABASE dest_db TO APPLICATION my_connector_servicenow;
    GRANT USAGE ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    GRANT CREATE TABLE ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    GRANT CREATE VIEW ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON INTEGRATION servicenow_external_access_integration TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON DATABASE secretsdb TO APPLICATION my_connector_servicenow;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO APPLICATION my_connector_servicenow;
    GRANT READ ON SECRET secretsdb.apiauth.servicenow_creds_oauth_code TO APPLICATION my_connector_servicenow;
    
    Copy
  5. Eigentümerschaft von Tabellen und Ansichten im Zielschema übertragen (optional)

    Wenn der Konnektor neu installiert wurde und das vorherige Zielschema wiederverwendet wird, muss die Eigentümerschaft an allen Tabellen und Ansichten im Zielschema auf den Konnektor übertragen werden. Der Konnektor benötigt die Eigentümerschaft, um Berechtigungszuweisungen für Objekte im Schema zu verwalten und vereinfachte Ansichten neu zu erstellen, wenn das Schema der aufgenommen Tabelle geändert wird.

    Um die Eigentümerschaft zu übertragen, rufen Sie die Funktion SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION auf.

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
    
    Copy

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION ist eine von Snowflake bereitgestellte Systemfunktion, die es ermöglicht, die Eigentümerschaft von Tabellen und Ansichten in einer bestimmten Datenbank oder einem bestimmten Schema an die Anwendung zu übertragen. Es wird nur die Eigentümerschaft von Standardtabellen und Standardansichten übertragen, d. h. die Eigentümerschaft von dynamischen Tabellen, externen Tabellen, materialisierten Ansichten usw. wird nicht übertragen.

    Diese Funktion hat die folgenden Signatur:

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
    
    Copy

    Wobei:

    to_app

    Gibt den Namen der Anwendung an, auf die die Eigentümerschaft von Objekten übertragen werden soll.

    should_copy_grants

    Wenn TRUE, dann kopieren Sie die bestehenden Berechtigungszuweisungen, andernfalls widerrufen Sie sie. Das Kopieren von Berechtigungszuweisungen erfordert die Berechtigung MANAGE GRANTS für den Aufrufer.

    from_database

    Name der Datenbank, die die Objekte enthält, deren Eigentümerschaft geändert werden soll.

    from_schema

    (Optional) Name des Schemas, das die Objekte enthält, deren Eigentümerschaft geändert werden soll. Wenn kein Schema angegeben ist, wird die Eigentümerschaft an Tabellen und Ansichten in allen Schemas der angegebenen Datenbank übertragen. Objekte in verwalteten Schemas werden bei der Übertragung der Eigentümerschaft ausgelassen.

    Um die Funktion auszuführen, muss der Aufrufer eine der folgenden Bedingungen erfüllen:

    • Hat die Berechtigung MANAGE GRANTS (z. B. die Rolle ACCOUNTADMIN oder SECURITYADMIN) oder

    • Hat die Rolle, die Eigentümer der Anwendungsinstanz ist, und die Rolle, Eigentümer aller Objekte ist, um die Eigentümerschaft zu übertragen. Objekte, bei denen die Eigentümerschaft fehlt, werden von der Funktion ausgelassen.

    Beispiel: Die Eigentümerschaft soll an einen Konnektor mit folgenden Eigenschaften übertragen werden:

    • Konnektor wurde als Anwendung namens my_connector_servicenow installiert.

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

    Führen Sie den folgenden Befehl aus:

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('my_connector_servicenow', true, 'dest_db', 'dest_schema');
    
    Copy

    Weisen Sie bei Bedarf der Rolle, die zuvor die Daten besaß, die Anwendungsrolle DATA_READER zu, um zu verhindern, dass bestehende Pipelines, die diese Daten verwenden, unterbrochen werden:

    GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
    
    Copy

    Beachten Sie, dass die Anwendungsrolle DATA_READER so lange keine Berechtigungen für Tabellen und Ansichten im Zielschema hat, bis die Prozedur CONFIGURE_CONNECTOR ausgeführt wurde.

  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 den Konnektor, indem Sie mit dem Befehl CALL die gespeicherte Prozedur namens CONFIGURE_CONNECTOR aufrufen:

    CALL CONFIGURE_CONNECTOR({
      'warehouse': '<warehouse_name>',
      'destination_database': '<dest_db>',
      'destination_schema': '<dest_schema>'
    })
    
    Copy

    Wobei:

    warehouse_name

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

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

    dest_db

    Gibt den Namen der Datenbank für die ServiceNow®-Daten in Snowflake an (die Datenbank, die Sie zuvor erstellt haben).

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

    dest_schema

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

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

    Beispiel: Ein Konnektor mit folgenden Eigenschaften soll konfiguriert werden:

    • Konnektor verwendet Warehouse servicenow_conn_warehouse.

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

    Führen Sie den folgenden Befehl aus:

    CALL CONFIGURE_CONNECTOR({
      'warehouse': 'servicenow_conn_warehouse',
      'destination_database': 'dest_db',
      'destination_schema': 'dest_schema'
    });
    
    Copy

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

    {
      "responseCode": "OK",
      "message": "Connector successfully configured.",
    }
    
    Copy

    Bemerkung

    Sobald der Konnektor gestartet ist, ist es nicht mehr möglich, die übergebenen Objekte für Warehouse, Zieldatenbank, Zielschema und 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 UPDATE_WAREHOUSE, um das vom Konnektor verwendete Warehouse zu ändern.

  8. Konfigurieren Sie die Verbindung zur ServiceNow®-Instanz, indem Sie mit dem Befehl CALL die gespeicherte Prozedur namens SET_CONNECTION_CONFIGURATION aufrufen:

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': '<servicenow_base_url>',
      'secret': '<secret_name>',
      'external_access_integration': '<external_access_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.

    external_access_integration_name

    Gibt den Namen der Integration für den externen Zugriff für ServiceNow® (die externe Zugangsintegration, die Sie zuvor erstellt haben) 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.

    • Verwendet die Integration für den externen Zugriff namens servicenow_external_access_integration.

    Führen Sie den folgenden Befehl aus:

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': 'https://myinstance.service-now.com',
      'secret': 'SECRETSDB.APIAUTH.SERVICENOW_CREDS_OAUTH_CODE',
      'external_access_integration': 'SERVICENOW_API_INTEGRATION'
    });
    
    Copy

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

    {
      "responseCode": "OK",
      "message": "Test request to ServiceNow® succeeded.",
    }
    
    Copy

    Bemerkung

    Sobald der Konnektor konfiguriert ist, ist es nicht mehr möglich, die Namen des übergebenen Geheimnisses und der Integration für den externen Zugriff 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.

  9. Schließen Sie die Konfiguration des Konnektors mit dem Befehl CALL ab, um die gespeicherte Prozedur namens FINALIZE_CONNECTOR_CONFIGURATION aufzurufen:

    CALL FINALIZE_CONNECTOR_CONFIGURATION({
      'journal_table': '<name_of_journal_table>',
      'table_name': '<name_of_audited_table>',
      'sys_id': '<sys_id_of_audited_entry>'
    })
    
    Copy

    Wobei:

    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 für dieses Argument null an.

    name_of_audited_table

    (optional) Gibt den Namen der geprüften Tabelle an, die in der Journaltabelle enthalten sein soll und auf die der Konnektor Zugriff haben soll. Während der Validierung des Zugriffs auf die Journaltabelle sucht der Konnektor nach Audit-Einträgen, die sich auf diese Tabelle beziehen. Geben Sie diese Option an, wenn eine Abfrage an ServiceNow® erfolgreich ist, aber kein Ergebnis liefert, sodass die Prozedur fehlschlägt. Stellen Sie sicher, dass der ServiceNow®-Benutzer für den Konnektor Zugriff auf alle Einträge für die angegebene Tabelle hat.

    Diese Option kann nicht zusammen mit dem Parameter sys_id verwendet werden.

    sys_id_of_audited_entry

    (optional) Gibt den sys_id-Wert eines Eintrags aus einer geprüften Tabelle an, die in der Journaltabelle vorhanden sein soll und auf die der Konnektor Zugriff haben soll. Bei der Validierung des Zugriffs auf die Journaltabelle sucht der Konnektor nach Audit-Einträgen, die sich auf diese sys_id beziehen. Geben Sie diese Option an, wenn eine Abfrage an ServiceNow® erfolgreich ist, aber kein Ergebnis liefert, sodass die Prozedur fehlschlägt. Stellen Sie sicher, dass der ServiceNow®-Benutzer für den Konnektor Zugriff auf den angegebenen Eintrag hat.

    Diese Option kann nicht zusammen mit dem Parameter table_name verwendet werden.

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

    {
        "responseCode": "OK",
    }
    
    Copy

    Während der Fertigstellung der Konnektorkonfiguration versucht der Konnektor zu prüfen, ob ein zuvor exportierter Konnektorstatus im Zielschema vorhanden ist. Wenn die Tabelle __CONNECTOR_STATE_EXPORT vorhanden und für den Konnektor zugänglich ist, wird der Konnektor versuchen, den Status zu importieren. Wenn der Import erfolgreich abgeschlossen ist, wird die Exporttabelle gelöscht. Wenn während des Imports ein Fehler auftritt, können Sie die Prozedur FINALIZE_CONNECTOR_CONFIGURATION erneut ausführen, nachdem Sie den Fehler behoben haben. Wenn Sie den Status nicht importieren oder den Importfehler nicht beheben möchten, übertragen Sie die Eigentümerschaft an der Tabelle vom Konnektor und löschen Sie dann die Tabelle.

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

Anwendungsrollen des Konnektors

Als Native App definiert Snowflake Connector for ServiceNow®V2 Anwendungsrollen. Diese können unter Rollenbasierte Zugriffssteuerung für Konnektoren eingesehen werden.

Nächste Schritte

Führen Sie nach Installation und Konfiguration des Konnektors die unter Einrichten der Datenaufnahme (Data Ingestion) für Ihre ServiceNow®-Daten beschriebenen Schritte aus.