Vorbereiten Ihrer ServiceNow-Instanz

Bevor Sie den Snowflake-Konnektor für ServiceNow installieren, müssen Sie Ihre ServiceNow-Instanz einrichten.

Führen Sie die folgenden Schritte aus, um Ihre ServiceNow-Instanz einzurichten:

  1. Stellen Sie sicher, dass die ServiceNow-Instanz öffentlich zugänglich ist. Der Konnektor funktioniert nicht mit Instanzen, die hinter einem VPN verborgen sind.

  2. Identifizieren Sie die ServiceNow-Tabellen, die die Daten enthalten, die Sie in Snowflake erfassen möchten.

  3. Identifizieren oder erstellen Sie den ServiceNow-Benutzer für den Konnektor.

    Um eine Verbindung zur ServiceNow-Instanz herzustellen, muss sich der Konnektor bei der Instanz als ServiceNow-Benutzer authentifizieren. Wählen Sie einen ServiceNow-Benutzer, der die folgenden Anforderungen erfüllt:

    • Der Benutzername darf keinen Doppelpunkt (:) enthalten.

    • Der Benutzer muss Lesezugriff auf alle Datensätze in den ServiceNow-Tabellen haben, die Sie erfassen möchten. Zugriffssteuerungslisten (ACLs) dürfen keine Datensätze in diesen Tabellen vor diesem Benutzer verbergen.

    • Der Benutzer muss Lesezugriff auf alle Zeilen in den Tabellen sys_db_object (mit den Feldern name, super_class, sys_id), sys_glide_object (mit den Feldern name, scalar_type, sys_id) und sys_dictionary (mit den Feldern element, internal_type, name, sys_id) haben, um die Schemaerkennung zu ermöglichen.

    • Der Benutzer muss Lesezugriff auf alle Zeilen der Tabelle sys_table_rotation (mit den Feldern name und sys_id) haben, damit der Konnektor die richtige Erfassungsstrategie verwenden kann.

    • Der Benutzer muss Zugriff auf das Feld sys_updated_on in den Tabellen sys_db_object, sys_glide_object, sys_dictionary und sys_table_rotation sowie der Zugriffstabelle haben. Andernfalls werden die Tabellen mit dem weniger kosteneffektiven „Abschneiden und Laden“-Erfassungsmodus geladen.

      Bemerkung

      Das Konfigurieren der Verbindung in Snowsight über den OAuth-Authentifikator zu ServiceNow ist nur mit dem interaktiven Benutzer möglich. Der ServiceNow-Benutzer ist interaktiv, wenn die Einstellung Web service access only für den Benutzer deaktiviert ist.

      Sie können den OAuth-Authentifikator nur dann mit nicht interaktiven Benutzern verwenden, wenn Sie die Verbindung mit SQL-Befehlen konfigurieren. In diesem Fall können Sie sich nicht bei ServiceNow anmelden oder das OAuth-Aktualisierungstoken über Snowsight abrufen.

  4. Wenn Sie planen, eine ServiceNow-Tabelle mit einer sys_updated_on-Spalte zu importieren und zu synchronisieren, richten Sie einen Index für diese Spalte ein. Weitere Informationen zum Einrichten der Indizes finden Sie in der ServiceNow-Dokumentation unter Tabellenindex erstellen.

    Nachdem Sie den Index über die Benutzeroberfläche erstellt haben, kann es einige Zeit dauern, bis der Index aufgebaut ist. Der Indizierungsprozess wird als Hintergrundaufgabe ausgeführt.

    Wenn Ihre Instanz über große Tabellen verfügt, empfiehlt Snowflake, sich an den ServiceNow-Kundensupport zu wenden, um sich über den besten Ansatz zum Indizieren großer Tabellen zu informieren.

  5. (Optional) Wenn Sie als Authentifizierungsmethode OAuth verwenden möchten und Ihrem ServiceNow-Benutzer die Nur-Lese-Rolle zugewiesen haben, stellen Sie sicher, dass in der Werteliste der Systemeigenschaft glide.security.snc_read_only_role.tables.exempt_create die Tabelle oauth_credential enthalten ist.

    Erstellen oder bearbeiten Sie die Eigenschaft glide.security.snc_read_only_role.tables.exempt_create in der Tabelle sys_properties. Weitere Informationen zum Bearbeiten dieser Eigenschaft finden Sie in der ServiceNow-Wissensdatenbank.

    Weitere Informationen zum Hinzufügen von neuen Systemeigenschaften finden Sie in der ServiceNow-Dokumentation unter Systemeigenschaften hinzufügen.

  6. (Optional) Einige Konnektorprozeduren, die für die Kernfunktionalität nicht wesentlich sind, verwenden den ServiceNow-Endpunkt <service_now_instance>/<table_name>.do?SCHEMA, um Tabellenschemas abzurufen. Dieser Endpunkt erfordert die Rolle admin. Weitere Informationen zu dieser Rolle finden Sie in der ServiceNow-Dokumentation unter Basissystemrollen. Wenn Sie den Konnektor mit einem Benutzer konfigurieren, der nicht diese Rolle hat, wird das Ausführen von Prozeduren, die auf diesem Endpunkt basieren, verhindert. Die betroffenen Prozeduren enthalten entsprechende Hinweise auf diese Anforderung.

  7. (Optional) Um die Weitergabe gelöschter Datensätze zu ermöglichen, verwenden Sie entweder die Tabelle sys_audit_delete oder eine kundenspezifische Erfassungstabelle als Quelle für Informationen zu gelöschten Datensätzen.

    Bemerkung

    Beachten Sie, dass der Konnektor Zugriff auf alle Erfassungstabellendatensätze haben muss, sonst kann die Installation fehlschlagen. Andernfalls kann es vorkommen, dass Datensatzlöschungen in anderen Tabellen nicht korrekt sind.

    Wenn Erfassungstabellenzeilen durch ACLs ausgeblendet werden, ist das Verhalten des Konnektors unvorhersehbar. Selbst wenn die Installation erfolgreich ist, kann es vorkommen, dass einige Löschungen zu einem späteren Zeitpunkt nicht korrekt synchronisiert werden.

    • So verwenden Sie sys_audit_delete:

      1. Setzen Sie das Wörterbuchattribut no_audit_delete auf false.

      2. Stellen Sie sicher, dass der ServiceNow-Benutzer für den Konnektor Zugriff auf die Tabelle sys_audit_delete und darin auf die Felder documentkey, tablename, sys_id und sys_created_on hat.

    • So verwenden Sie eine kundenspezifische Zugriffstabelle:

      1. Erstellen Sie eine Zugriffstabelle mit dem Namen snowflake_connector_journal und Zeichenfolgespalten mit den Namen documentkey und tablename.

      2. Stellen Sie sicher, dass der ServiceNow-Benutzer für den Konnektor Zugriff auf die Tabelle snowflake_connector_journal und darin auf die Felder u_documentkey, u_tablename, sys_id und sys_created_on hat.

      3. Erstellen Sie ein Skript-Include namens RecordChange mit dem folgenden Code:

        var RecordChange = Class.create();
        
        RecordChange.prototype= {
          initialize :function() {},
          captureChange :function(tableName, docID) {
            var changeCapture = new GlideRecord('u_snowflake_connector_journal');
            changeCapture.initialize();
            changeCapture.setValue('u_documentkey', docID);
            changeCapture.setValue('u_tablename', tableName);
            changeCapture.insert();
          },
          type :'RecordChange'
        };
        
        Copy
      4. Definieren Sie eine Geschäftsregel, um das Löschen des Datensatzes zu erfassen:

        (function executeRule(current, previous /*null when async*/) {
            new RecordChange().captureChange(current.getTableName(), current.getUniqueValue());
        })(current, previous);
        
        Copy
      5. Konfigurieren Sie für jede Tabelle, für die Sie gelöschte Datensätze weitergeben möchten, diese Geschäftsregel so, dass sie ausgeführt wird, nachdem ein Datensatz gelöscht wurde.

Bemerkung

Der Konnektor kann gelöschte Datensätze nur dann synchronisieren, wenn sie überwacht werden. Löschoperationen, die nicht DBDelete.setWorkflow() aufrufen, werden nicht in Snowflake erfasst.

Weitere Informationen zur Verwendung von DBDelete.setWorkflow() finden Sie in der ServiceNow-Produktdokumentation.

Beachten Sie auch die folgenden Hinweise zu gelöschten Datensätzen:

  • Das Löschen von Datensätzen wird bei Tabellen mit dem Wörterbuchattribut no_audit_delete=true nicht verfolgt.

  • Das Löschen von Datensätzen aus Tabellen mit einem sys-Präfix wird standardmäßig nicht verfolgt.

  • Der Konnektor kann Datensätze, die mit der Kaskaden-Datensatzlöschung gelöscht wurden, nur einlesen, wenn sich das Referenzfeld in einer geprüften Tabelle befindet. Weitere Informationen zum kaskadierenden Löschen von Datensätzen finden Sie in der ServiceNow-Produktdokumentation.

Führen Sie nach Beendigung dieser Prozeduren die unter Installieren und Konfigurieren des Konnektors mit Snowsight bzw. Installieren und Konfigurieren des Konnektors mit SQL-Befehlen beschriebenen Schritte aus.