Installieren und Konfigurieren des Konnektors mit SQL-Befehlen¶
Der Snowflake-Konnektor für ServiceNow® unterliegt den Nutzungsbedingungen für Konnektoren.
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 Connector for 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 Connector for 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 Connector for ServiceNow® zur Verwendung mit OAuth einzurichten:
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® 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.
Erstellen Sie eine Anwendungsregistrierung in ServiceNow, und verwenden Sie diese zur Konfiguration des Konnektors.
Melden Sie sich bei Ihrer ServiceNow-Instanz an, und wählen Sie dann Homepage aus.
Suchen Sie nach OAuth, und wählen Sie dann Application Registry aus.
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:
Geben Sie in ServiceNow im Feld Name einen Namen für die OAuth-Anwendungsregistrierung ein.
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
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
odergcp
).
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.
Wählen Sie in ServiceNow die Option Submit aus.
Die OAuth-Anwendungsregistrierung wird in der Liste der Anwendungsregistrierungen angezeigt.
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:
Stellen Sie sicher, dass Sie die unter OAuth einrichten beschriebenen Aufgaben durchgeführt haben.
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
Wobei:
instance_name
Gibt den Namen Ihrer ServiceNow-Instanz an.
client_id
undclient_secret
Geben Sie die Werte an, die Sie beim Einrichten des ServiceNow-Endpunkts erhalten haben.
username
undpassword
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}
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;
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.comDer Name Ihrer Instanz wäre dann
myinstance
.
Erstellen eines Geheimnisobjekts¶
Erstellen Sie das Snowflake-Geheimnisobjekt, das der Snowflake Connector for 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;
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.
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;
Führen Sie mit der Systemrolle SECURITYADMIN den Befehl GRANT <Berechtigungen> TO ROLE aus, um der kundenspezifischen Rolle die folgenden Berechtigungen zu erteilen:
USAGE für die Datenbank, die Sie für das Geheimnis erstellt haben
USAGE und CREATE SECRET für das Schema, das Sie für das Geheimnis erstellt haben
USAGE für die Sicherheitsintegration, die Sie zuvor erstellte haben
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;
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;
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
aufOAUTH2
.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 Namenservicenow_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;
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
aufPASSWORD
gesetzt ist. Setzen SieUSERNAME
undPASSWORD
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';
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 Connector for 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;
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® erfasst ServiceNow-Daten in dieser Datenbank und diesem Schema.
Beim Erstellen von Datenbank und Schema ist Folgendes zu beachten:
Die Namen des Schemas und der Datenbank müssen gültige Objektbezeichner sein.
Um den Zugriff auf die erfassten ServiceNow-Daten in Snowflake zu kontrollieren, können Sie den Rollen, die auf die Daten zugreifen dürfen, Berechtigungen für das Schema erteilen.
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;
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
odersys_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
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
Bemerkung
Sie brauchen keinen der anderen Parameter in der CREATE API INTEGRATION-Anweisung zu setzen.
Konfigurieren der Protokollierung für den Konnektor¶
Der Snowflake Connector for ServiceNow® 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:
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;
Führen Sie mit der Rolle ACCOUNTADMIN den Befehl GRANT <Berechtigungen> TO ROLE aus, um der kundenspezifischen Rolle die folgenden Berechtigungen zu erteilen:
EXECUTE TASK für das Konto
Eine der beiden folgenden, aber nicht beide:
EXECUTE MANAGED TASK
Erteilen Sie diese Berechtigung, wenn Sie den Konnektor ohne ein spezielles Warehouse konfiguriert haben.
USAGE für das Warehouse, das Sie für den Konnektor erstellt haben.
Erteilen Sie diese Berechtigung, wenn Sie den Konnektor mit einem dedizierten Warehouse konfiguriert haben.
USAGE für die Datenbank, die Sie für die ServiceNow-Daten erstellt haben
USAGE, CREATE TABLE und CREATE VIEW für das Schema, das Sie für die ServiceNow-Daten erstellt haben
USAGE für die API Integration, die Sie für ServiceNow erstellt haben
USAGE für die Datenbank, die Sie für das Geheimnis erstellt haben
USAGE für das Schema, das Sie für das Geheimnis erstellt haben
USAGE für das Geheimnis, das Sie erstellt haben
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;
Nachdem Sie den Snowflake Connector for 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 Connector for ServiceNow®¶
So installieren Sie den Konnektor:
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.
Navigieren Sie zum SQL-Arbeitsblatt.
Melden Sie sich als Benutzer mit der Rolle ACCOUNTADMIN an. Beispiel:
USE ROLE ACCOUNTADMIN;
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 Datenbankmy_connector_servicenow
zuzuweisen, führen Sie den folgenden Befehl aus:GRANT ROLE connector_resources_provider TO DATABASE my_connector_servicenow;
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-Instanzmy-instance
ist, führen Sie den folgenden Befehl aus:ALTER DATABASE my_connector_servicenow SET FIREWALL_CONFIGURATION = ('https://my-instance.service-now.com')
Führen Sie den Befehl USE DATABASE aus, um die Datenbank für den Konnektor zu verwenden. Beispiel:
USE DATABASE my_connector_servicenow;
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>' })
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
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>
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' });
Wenn die Verbindung erfolgreich konfiguriert wurde, gibt diese gespeicherte Prozedur die folgende Meldung aus:
Connection configured successfully
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.
Starten Sie den Konnektor wie unter Starten des Snowflake Connector for ServiceNow® beschrieben.
Die neu erstellte Datenbank ist eine Instanz des Konnektors und enthält Folgendes:
Gespeicherte Prozeduren, die Sie zur Konfiguration des Konnektors verwenden. Weitere Informationen dazu finden Sie unter Einrichten der Datenerfassung mit SQL-Anweisungen.
Ansichten mit den protokollierten Meldungen und Statistiken für den Konnektor. Weitere Informationen dazu finden Sie unter Allgemeine Informationen zur Überwachung des Konnektors.
Starten und Anhalten des Snowflake Connector for ServiceNow®¶
In den folgenden Abschnitten wird beschrieben, wie der Konnektor gestartet, angehalten und fortgesetzt wird.
Starten des Snowflake Connector for 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>',
);
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>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 SnowflakeServiceNow-Tabelle
sys_audit_delete
zur Verfolgung gelöschter DatensätzeKundenspezifische 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', );
Wenn der Konnektor erfolgreich gestartet wurde, gibt diese gespeicherte Prozedur die folgende Meldung aus:
Successfully started the |SNC|. The connector can be configured now.
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 Connector for ServiceNow®¶
Um alle vom Konnektor gestarteten Aufgaben anzuhalten, rufen Sie die gespeicherte Prozedur STOP_CONNECTOR
auf:
CALL STOP_CONNECTOR();
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 Connector for ServiceNow®¶
Um alle von der gespeicherten Prozedur STOP_CONNECTOR
angehaltenen Aufgaben wieder fortzusetzen, rufen Sie die gespeicherte Prozedur RESUME_CONNECTOR
auf:
CALL RESUME_CONNECTOR();
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 Connector for 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>;
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;
Ä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>');
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.
Nächste Schritte¶
Führen Sie nach Installation und Konfiguration des Konnektors die unter Einrichten der Datenerfassung (Data Ingestion) für Ihre ServiceNow®-Daten beschriebenen Schritte aus.