Installation et configuration du connecteur via des commandes SQL

Snowflake Connector pour ServiceNow® V2 est soumis aux Conditions de Snowflake Connector.

Cette rubrique décrit comment utiliser des commandes SQL pour installer et configurer le connecteur. Elle suppose que vous avez déjà effectué les procédures décrites dans Préparation de votre instance ServiceNow®.

Dans ce chapitre :

Installation de l”Snowflake Connector for ServiceNow®V2

La procédure suivante décrit comment installer le connecteur :

  1. Connectez-vous à Snowsight en tant qu’utilisateur ayant le rôle ACCOUNTADMIN.

  2. Dans le menu de navigation, sélectionnez Data Products » Marketplace.

  3. Recherchez le Snowflake Connector for ServiceNow®V2, puis sélectionnez la vignette du connecteur.

  4. Dans la page Snowflake Connector for ServiceNow®V2, sélectionnez Get.

    Une boîte de dialogue s’affiche pour lancer la partie initiale du processus d’installation.

    Dans la boîte de dialogue, configurez les éléments suivants :

    1. Dans le champ Application name saisissez le nom de la base de données à utiliser comme base de données pour l’instance de connecteur. Cette base de données est créée automatiquement pour vous.

    2. Dans le champ Warehouse used for installation sélectionnez l’entrepôt que vous souhaitez utiliser pour installer le connecteur.

      Note

      Il ne s’agit pas du même entrepôt que celui utilisé par le connecteur pour synchroniser les données depuis ServiceNow®. Dans une étape ultérieure, vous créerez un entrepôt distinct à cette fin.

    3. Sélectionnez Get.

  5. Une boîte de dialogue apparaît avec la notification : Installing App After installation, an email will be sent to <e-mail_utilisateur>. Pour poursuivre la configuration à l’aide de SQL, fermez la boîte de dialogue et accédez à Worksheets.

Configuration de OAuth

Note

Si vous prévoyez d’utiliser l’authentification de base au lieu de OAuth, vous pouvez ignorer cette section et continuer vers Création d’un objet secret

Vous pouvez configurer Snowflake Connector for ServiceNow®V2 afin qu’il utilise OAuth pour s’authentifier auprès de l’instance ServiceNow® :

  • Dans ServiceNow, vous devez configurer l’instance pour qu’elle prenne en charge l’utilisation de OAuth avec le flux d’accord de code.

  • Dans le Snowflake Connector for ServiceNow®V2 :

    • Le connecteur utilise une intégration de sécurité avec TYPE = API_AUTHENTICATION pour connecter Snowflake à l’instance ServiceNow®.

      L’intégration de sécurité spécifie l’ID de client OAuth ServiceNow, le secret de client et l’URL de point de terminaison pour l’authentification auprès de l’instance ServiceNow®.

    • Le connecteur utilise un objet secret Snowflake pour gérer les informations sensibles, y compris les informations d’authentification.

      Dans le cas de l’utilisation de OAuth pour l’authentification, le connecteur stocke le jeton d’actualisation OAuth ServiceNow®, l’heure d’expiration du jeton d’actualisation et le nom de l’intégration de sécurité dans l’objet secret Snowflake.

Pour configurer le Snowflake Connector for ServiceNow®V2 de sorte à utiliser OAuth, procédez comme suit :

  1. Configurez votre instance ServiceNow® de sorte à utiliser OAuth avec le flux d’octroi de code.

    • Si votre instance ServiceNow® utilise déjà le flux d’octroi de code OAuth et si vous souhaitez utiliser cette instance avec Snowflake Connector for ServiceNow®V2, notez l’ID de client, le secret de client et l’URL de point de terminaison qui correspond au jeton OAuth.

      Pour plus d’informations, voir Gérer les jetons OAuth. Après avoir pris note de ces informations, créez une intégration de sécurité à l’étape suivante.

    • Si vous souhaitez utiliser une instance ServiceNow® différente, accédez à l’instance ou créez-la et configurez-la pour qu’elle utilise OAuth avec le flux d’octroi de code comme indiqué dans Configurer OAuth et Créer un point de terminaison pour l’accès des clients à l’instance.

  2. Créez un registre d’applications dans ServiceNow® et utilisez-le pour configurer le connecteur.

    1. Connectez-vous à votre instance ServiceNow®, puis sélectionnez Homepage.

    2. Recherchez OAuth, puis sélectionnez Application Registry.

    3. Sélectionnez New, puis sélectionnez Create an OAuth API endpoint for external clients.

      Une page de configuration du registre d’applications s’affiche, comme le montre l’image suivante :

      Affiche la page du registre d'applications dans ServiceNow®.
    4. Dans ServiceNow, entrez un nom pour le registre d’applications OAuth dans le champ Name.

    5. Si nécessaire, dans ServiceNow, mettez à jour les valeurs des champs Refresh Token Lifespan et Access Token Lifespan.

      • Snowflake recommande de fixer la durée de vie du jeton d’accès à au moins 600 secondes.

      • Pour la durée de vie du jeton d’actualisation, indiquez une valeur de 7776000 (90 jours).

    6. Dans ServiceNow, sélectionnez Submit.

      Le registre d’applications OAuth apparaît dans la liste des registres d’applications.

    7. Dans ServiceNow, sélectionnez le registre d’applications que vous venez de créer.

      Notez que ServiceNow® a généré des valeurs pour les champs Client ID et Client Secret. Vous utiliserez ces valeurs dans la section suivante lors de la création d’une intégration de sécurité.

Génération du jeton d’actualisation OAuth

Pour générer le jeton d’actualisation OAuth :

  1. Assurez-vous d’avoir effectué les tâches décrites dans Installation de l”Snowflake Connector for ServiceNow®V2.

  2. Envoyez une requête HTTP au point de terminaison /oauth_token.do de votre instance ServiceNow®, comme expliqué dans Exemple REST OAuth dans la documentation ServiceNow®.

    Par exemple, si vous utilisez curl pour envoyer la requête HTTP :

    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

    Where

    instance_name

    Spécifie le nom de votre instance ServiceNow®.

    client_id et client_secret

    Spécifiez les valeurs que vous avez obtenues lors de la configuration du point de terminaison ServiceNow®.

    username et password

    Spécifiez les identifiants de connexion de votre instance ServiceNow®.

    Note

    L’exemple ci-dessus utilise l’indicateur de ligne de commande data-urlencode dans curl pour encoder en URL le secret de client, le nom d’utilisateur et le mot de passe dans la requête HTTP envoyée à ServiceNow®.

    Si vous utilisez un autre outil pour envoyer la requête HTTP, assurez-vous que vous encodez ces valeurs en URL dans la requête.

    Le corps de la réponse HTTP contient un objet JSON. Récupérer le jeton d’actualisation du champ refresh_token de cet objet :

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

Création d’objets essentiels

Création d’une intégration de sécurité (facultatif)

Une intégration de sécurité est un objet Snowflake qui fournit une interface entre Snowflake et un service OAuth 2.0 tiers.

Utilisez la commande CREATE SECURITY INTEGRATION pour créer une intégration de sécurité comme indiqué dans l’exemple suivant :

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

Où :

name

Spécifie le nom de l’intégration de sécurité.

client_id

Spécifie la valeur du champ Client ID que vous avez obtenue auprès de ServiceNow® à la section précédente.

client_secret

Spécifie la valeur du champ Client Secret que vous avez obtenue auprès de ServiceNow® à la section précédente.

my_instance

Spécifie le nom de votre instance ServiceNow®. Il s’agit de la première partie du nom d’hôte de votre instance ServiceNow®. Par exemple, si l’URL de votre instance ServiceNow® est :

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

Le nom de votre instance serait myinstance.

Création d’un objet secret

Créez l’objet secret Snowflake que le Snowflake Connector for ServiceNow®V2 utilise pour l’authentification.

Snowflake recommande de stocker l’objet secret dans une base de données et un schéma dédiés. Notez que vous pouvez choisir n’importe quel rôle pour gérer le secret, et que vous pouvez choisir n’importe quelle base de données et n’importe quel schéma pour stocker le secret.

Pour créer un rôle personnalisé afin de gérer le secret, utilisez la commande CREATE ROLE. Pour plus d’informations sur les privilèges que vous pouvez accorder à un rôle, voir Privilèges de contrôle d’accès.

Les sections suivantes expliquent comment créer un objet secret stocké dans une base de données et un schéma distincts et géré par un rôle personnalisé.

Création d’un schéma pour les objets secrets

Tout d’abord, créez une base de données et un schéma pour stocker l’objet secret en exécutant les commandes CREATE DATABASE et CREATE SCHEMA. Les noms du schéma et de la base de données doivent être des identificateurs d’objets valides.

Par exemple, pour créer la base de données secretsdb et le schéma apiauth pour l’objet secret, exécutez les commandes suivantes :

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

Création d’un rôle personnalisé pour gérer le secret (facultatif)

Ensuite, créez un rôle personnalisé pour gérer le secret (en supposant que vous ne voulez pas utiliser un rôle existant) et accordez au rôle les privilèges nécessaires pour créer le secret.

  1. En utilisant le rôle système USERADMIN, exécutez la commande CREATE ROLE pour créer un rôle personnalisé afin de gérer le secret. Par exemple, pour créer le rôle personnalisé secretadmin pour la gestion du secret, exécutez les commandes suivantes :

    USE ROLE useradmin;
    CREATE ROLE secretadmin;
    
    Copy
  2. En utilisant le rôle système SECURITYADMIN, exécutez la commande GRANT <privilèges> TO ROLE pour accorder les privilèges suivants au rôle personnalisé :

    Par exemple :

    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. À l’aide du rôle système USERADMIN, exécutez la commande GRANT <privilèges> TO ROLE pour accorder le rôle personnalisé à l’utilisateur qui crée le secret. Par exemple, pour accorder le rôle à l’utilisateur servicenow_secret_owner, exécutez les commandes suivantes :

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

Création d’un secret

Ensuite, créez un secret pour permettre à Snowflake de s’authentifier auprès de l’instance ServiceNow® en utilisant OAuth avec le flux d’octroi de code.

Note

Si vous prévoyez d’utiliser l’authentification de base au lieu de OAuth, consultez la note ci-dessous.

Pour créer un objet secret, exécutez la commande CREATE SECRET avec les paramètres suivants :

  • Définissez TYPE sur OAUTH2.

  • Définissez OAUTH_REFRESH_TOKEN comme étant le jeton d’actualisation OAuth que vous avez récupéré dans Génération du jeton d’actualisation OAuth.

  • Définissez OAUTH_REFRESH_TOKEN_EXPIRY_TIME sur l’horodatage d’expiration du jeton d’actualisation dans le fuseau horaire UTC. Vous pouvez le calculer en ajoutant la durée de vie du jeton de ServiceNow® à la date d’émission du jeton. Par défaut, le jeton expire dans 100 jours.

  • Attribuez à API_AUTHENTICATION le nom de l’intégration de sécurité que vous avez créée dans Création d’objets essentiels :

Par exemple, pour créer un secret nommé service_now_creds_oauth_code qui utilise l’intégration de sécurité nommée servicenow_oauth, exécutez les commandes suivantes :

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

Pour modifier les propriétés d’un secret existant (par exemple, pour mettre à jour le jeton d’actualisation OAuth), utilisez la commande ALTER SECRET.

Note

Si vous prévoyez d’utiliser l’authentification de base (plutôt que OAuth), exécutez la commande CREATE SECRET pour créer un secret avec TYPE défini sur PASSWORD. Définissez USERNAME et PASSWORD comme le nom d’utilisateur et le mot de passe de l’utilisateur ServiceNow® que vous prévoyez d’utiliser pour vous authentifier auprès de l’instance ServiceNow®. Par exemple :

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

Si l’authentification multifactorielle est activée pour cet utilisateur, vous devez fournir le jeton MFA ainsi que le mot de passe comme décrit dans API REST dans la documentation ServiceNow®.

Création d’un entrepôt

Snowflake recommande de créer un entrepôt dédié au connecteur. Un entrepôt dédié permet une meilleure gestion des coûts et un meilleur suivi des ressources. Pour faciliter le suivi des ressources, vous pouvez éventuellement ajouter une ou plusieurs balises à l’entrepôt dédié.

Pour l’entrepôt du connecteur, Snowflake recommande d’utiliser un entrepôt de grande taille.

Pour créer un entrepôt de grande taille nommé servicenow_conn_warehouse, exécutez la commande suivante :

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

Attention

Assurez-vous que l’entrepôt est en mesure d’exécuter une requête pendant au moins 3 heures. Cela peut être affecté par une valeur de paramètre qui peut être définie à la fois sur l’entrepôt utilisé par le connecteur et sur le compte (la valeur du compte est prioritaire). Pour vérifier les valeurs actuelles, exécutez :

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

Si les deux valeurs sont au moins égales à 10800 (c’est-à-dire, 3 heures), aucune modification n’est nécessaire. Sinon, selon les besoins, exécutez :

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

Si le délai d’expiration approprié n’est pas fourni, cela entraînera des échecs d’ingestion de données.

Création d’une base de données et d’un schéma pour les données ServiceNow®

Ensuite, créez une base de données et un schéma pour les données ServiceNow®. Snowflake Connector for ServiceNow®V2 ingère les données ServiceNow® dans cette base de données et ce schéma.

Lors de la création de la base de données et du schéma, notez les points suivants :

Pour créer la base de données et le schéma, exécutez les commandes CREATE DATABASE et CREATE SCHEMA.

Par exemple, pour créer la base de données dest_db et le schéma dest_schema pour les données ServiceNow®, exécutez les commandes suivantes :

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

Note

Si vous réinstallez le connecteur, vous pouvez réutiliser le schéma que vous avez créé pour l’installation précédente du connecteur. Ceci est possible si l’installation précédente du connecteur a déjà chargé des données et que vous souhaitez continuer à charger des données dans les mêmes tables.

Pour continuer à charger des données, ne modifiez pas le schéma avant de réinstaller le connecteur. Ne modifiez pas les définitions des tables créées par l’installation précédente du connecteur.

Le connecteur exporte périodiquement la configuration et l’état du connecteur vers une table __CONNECTOR_STATE_EXPORT du schéma, qui peut être utilisée ultérieurement pour récupérer la configuration du connecteur lors d’une réinstallation. Par ailleurs, si la table d’exportation n’est pas présente ou si elle a été supprimée manuellement, vous pouvez toujours appeler ultérieurement la procédure stockée ENABLE_TABLES pour réactiver les tables précédemment ingérées. La procédure stockée vérifie que tous les objets requis existent déjà et ne tente pas de les recréer. Il n’y a donc aucun risque de perdre des données déjà ingérées.

Création d’une règle de réseau pour communiquer avec l’instance ServiceNow®

Ensuite, pour autoriser le trafic sortant de votre compte vers votre instance ServiceNow®, créez une règle de réseau. Exécutez la commande CREATE NETWORK RULE avec la syntaxe suivante :

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

Où :

name

Spécifie le nom de la règle de réseau. Le nom doit être un identificateur d’objet valide.

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

Spécifie la liste des instances ServiceNow® autorisées auxquelles une requête peut être envoyée.

Note

Si vous avez créé le secret avec un rôle personnalisé, vous devez en outre accorder dessus le privilège USAGE à ACCOUNTADMIN avant de créer la règle de réseau :

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

Création d’une intégration d’accès externe pour communiquer avec l’instance ServiceNow®

Ensuite, créez une intégration d’accès externe pour communiquer avec l’instance ServiceNow®. Exécutez la commande CREATE EXTERNAL ACCESS INTEGRATION avec la syntaxe suivante :

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

Où :

integration_name

Spécifie le nom de l’intégration d’accès externe. Le nom doit être un identificateur d’objet valide. Le nom doit être unique parmi les intégrations API de votre compte.

ALLOWED_NETWORK_RULES = (network_rule_name)

Spécifie la règle de réseau permettant l’accès à votre instance ServiceNow®. Cela limite l’utilisation de cette intégration aux instances avec les URLs spécifiées dans la règle de réseau.

Définissez cela sur le nom de la règle de réseau que vous avez créée dans Création d’une règle de réseau pour communiquer avec l’instance ServiceNow®.

ALLOWED_AUTHENTICATION_SECRETS = (secret_name)

Spécifie la liste des noms des secrets dont l’utilisation est autorisée dans le cadre de l’intégration d’API.

Indiquez le nom de l’objet secret que vous avez créé dans Création d’un objet secret.

ENABLED = TRUE

Spécifie si cette intégration API est activée ou désactivée. Si l’intégration API est désactivée, aucune fonction externe qui en dépend ne fonctionne.

TRUE

Permet l’exécution de l’intégration en fonction des paramètres spécifiés dans l’intégration de définition.

FALSE

Suspend l’intégration pour la maintenance. Toute intégration entre Snowflake et un service tiers échoue.

Par exemple, pour créer l’intégration d’accès externe nommée servicenow_external_access_integration, exécutez la commande suivante :

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

Configuration de la journalisation du connecteur

Le Snowflake Connector for ServiceNow®V2 utilise des tables d’événements pour stocker les journaux d’erreurs du connecteur. Pour mettre en place une table d’événement, suivez le guide Configuration d’une table d’événements.

Important

Il est vivement recommandé d’activer le partage de journaux. Cela vous sera d’une aide précieuse en cas de dépannage dans des cas difficiles.

Configuration du connecteur installé

Pour configurer le connecteur :

  1. Créez une base de données pour l’instance de connecteur en utilisant Snowsight. Pour plus d’informations sur la création de la base de données, consultez Installation et configuration du connecteur avec Snowsight.

  2. Naviguez jusqu’à la feuille de calcul SQL.

  3. Connectez-vous en tant qu’utilisateur ayant le rôle ACCOUNTADMIN. Par exemple :

    USE ROLE ACCOUNTADMIN;
    
    Copy
  4. Accordez tous les privilèges requis au connecteur à la base de données qui sert d’instance du connecteur.

    Par exemple, pour accorder les privilèges suivants au connecteur nommé my_connector_servicenow :

    • EXECUTE TASK sur le compte

    • EXECUTE MANAGED TASK sur le compte

    • USAGE sur l’entrepôt servicenow_conn_warehouse

    • USAGE sur la base de données dest_db

    • USAGE, CREATE TABLE et CREATE VIEW sur le schéma dest_db.dest_schema

    • USAGE sur l’intégration servicenow_external_access_integration

    • USAGE sur la base de données secretsdb

    • USAGE sur le schéma secretsdb.apiauth

    • READ sur le secret secretsdb.apiauth.servicenow_creds_oauth_code secret

    Exécutez les commandes suivantes :

    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. Transférer la possession des tables et des vues dans le schéma de destination (facultatif)

    Si le connecteur a été réinstallé et que le schéma de destination précédent est réutilisé, la possession de toutes les tables et vues du schéma de destination doit être transférée au connecteur. Le connecteur nécessite un privilège de possession pour gérer les droits sur les objets du schéma et pour recréer les vues aplaties lorsque le schéma de la table ingérée est modifié.

    Pour transférer la possession, appelez la fonction SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION.

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

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION est une fonction système fournie par Snowflake qui permet de transférer à l’application la possession des tables et des vues d’une base de données ou d’un schéma spécifié. Seule la possession des tables et des vues normales est transférée, c’est-à-dire que les tables dynamiques, les tables externes, les vues matérialisées, etc., ne changeront pas de propriétaire.

    Cette fonction présente la signature suivante :

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

    Où :

    to_app

    Spécifie le nom de l’application à laquelle la possession des objets doit être transférée.

    should_copy_grants

    Si TRUE, copiez les droits existants ; sinon, révoquez-les. La copie des droits nécessite l’autorisation MANAGE GRANTS sur l’appelant.

    from_database

    Nom de la base de données contenant les objets qui doivent changer de propriétaire.

    from_schema

    (Facultatif) Nom du schéma contenant les objets qui doivent changer de propriétaire. Si aucun schéma n’est spécifié, la possession est transférée sur les tables et les vues de tous les schémas de la base de données fournie. Les objets des schémas gérés sont omis lors du transfert de possession.

    Pour exécuter la fonction, l’appelant doit remplir l’une des conditions suivantes :

    • Disposer de l’autorisation MANAGE GRANTS (par exemple, du rôle ACCOUNTADMIN ou SECURITYADMIN), ou

    • Contenir le rôle de propriétaire de l’instance d’application et le rôle de propriétaire de tous les objets afin de transférer la possession. Les objets sans propriétaire sont omis par la fonction.

    Par exemple, pour transférer la possession, le connecteur qui :

    • A été installé en tant qu’application nommée my_connector_servicenow

    • Utilise le schéma nommé dest_db.dest_schema pour les données ServiceNow® dans Snowflake

    Exécutez la commande suivante :

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

    Si nécessaire, accordez le rôle d’application DATA_READER au rôle précédemment propriétaire des données afin d’éviter toute perturbation des pipelines existants qui utilisent les données :

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

    Notez que le rôle d’application DATA_READER n’aura aucun droit sur les tables et les vues du schéma de destination tant que la procédure CONFIGURE_CONNECTOR n’aura pas été exécutée.

  6. Exécutez la commande USE DATABASE pour utiliser la base de données pour le connecteur. Par exemple :

    USE DATABASE my_connector_servicenow;
    
    Copy
  7. Configurez le connecteur en utilisant la commande CALL pour appeler la procédure stockée nommée CONFIGURE_CONNECTOR :

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

    Où :

    warehouse_name

    Spécifie le nom de l’entrepôt pour le connecteur.

    Le nom de l’entrepôt doit être un identificateur d’objet valide.

    dest_db

    Spécifie le nom de la base de données des données ServiceNow® dans Snowflake (la base de données que vous avez précédemment créée).

    Le nom de la base de données doit être un identificateur d’objet valide.

    dest_schema

    Spécifie le nom du schéma des données ServiceNow® dans Snowflake (le schéma que vous avez précédemment créé).

    Le nom du schéma doit être un identificateur d’objet valide.

    Par exemple, pour configurer le connecteur qui :

    • Utilise l’entrepôt servicenow_conn_warehouse.

    • Utilise le schéma nommé dest_db.dest_schema pour les données ServiceNow® dans Snowflake

    Exécutez la commande suivante :

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

    Si le connecteur a été correctement démarré, cette procédure stockée renvoie la réponse suivante :

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

    Note

    Une fois le connecteur démarré, il n’est pas possible de renommer l’entrepôt, la base de données de destination ni le schéma de destination transmis pour le connecteur. Le connecteur les référence par leur nom. Par conséquent, toute tentative de suppression ou de modification du nom de ces objets coupe le connecteur et l’empêche de fonctionner.

    Au lieu de renommer l’entrepôt, utilisez la procédure stockée UPDATE_WAREHOUSE pour modifier l’entrepôt utilisé par le connecteur.

  8. Configurez la connexion à l’instance ServiceNow® en utilisant la commande CALL pour appeler la procédure stockée nommée SET_CONNECTION_CONFIGURATION :

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': '<servicenow_base_url>',
      'secret': '<secret_name>',
      'external_access_integration': '<external_access_integration_name>'
    })
    
    Copy

    Où :

    servicenow_base_url

    Spécifie l’URL de l’instance ServiceNow® que le connecteur doit utiliser. L’URL doit avoir le format suivant :

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

    Spécifie le nom complet de l’objet secret contenant les identifiants de connexion pour s’authentifier auprès de ServiceNow® (le secret que vous avez précédemment créé).

    Vous devez spécifier le nom complet de l’objet secret au format suivant :

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

    Les noms de la base de données, du schéma et du secret doivent être des identificateurs d’objets valides.

    external_access_integration_name

    Spécifie le nom de l”intégration d’accès externe pour ServiceNow® (l’intégration d’accès externe que vous avez précédemment créée).

    Le nom de l’intégration doit être un identificateur d’objet valide.

    Par exemple, pour configurer la connexion à une instance ServiceNow® qui :

    • Possède l’URL https://myinstance.service-now.com.

    • Utilise le secret stocké dans secretsdb.apiauth.servicenow_creds_oauth_code.

    • Utilise l’intégration d’accès externe nommée servicenow_external_access_integration.

    Exécutez la commande suivante :

    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

    Si la connexion a été correctement configurée, cette procédure stockée renvoie la réponse suivante :

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

    Note

    Une fois le connecteur configuré, il n’est pas possible de modifier le nom du secret ni de l’intégration d’accès externe transmis. Le connecteur les référence par leur nom. Par conséquent, toute tentative de suppression ou de modification du nom de ces objets coupe le connecteur et l’empêche de fonctionner.

  9. Finalisez la configuration du connecteur en utilisant la commande CALL pour appeler la procédure stockée nommée FINALIZE_CONNECTOR_CONFIGURATION :

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

    Où :

    name_of_journal_table

    Spécifie le nom de la table qui contient des informations sur les enregistrements supprimés. Reportez-vous à Préparation de votre instance ServiceNow® pour plus d’informations.

    Notez que les informations sur les enregistrements supprimés ne sont disponibles que pour les tables que vous avez configurées pour propager les enregistrements supprimés.

    Pour empêcher la propagation des enregistrements supprimés, spécifiez null pour cet argument.

    name_of_audited_table

    (facultatif) Spécifie le nom de la table auditée qui doit être présente dans la table de journal et à laquelle le connecteur doit avoir accès. Lors de la validation de l’accès à la table de journal, le connecteur recherche les entrées d’audit liées à cette table. Fournissez cette option lorsqu’une requête auprès de ServiceNow® aboutit, mais ne donne aucun résultat, faisant échouer la procédure. Assurez-vous que l’utilisateur ServiceNow® du connecteur a accès à toutes les entrées de la table spécifiée.

    Cette option ne peut pas être utilisée avec le paramètre sys_id.

    sys_id_of_audited_entry

    (facultatif) Spécifie la valeur sys_id de l’entrée d’une table auditée qui doit être présente dans la table de journal et à laquelle le connecteur doit avoir accès. Lors de la validation de l’accès à la table de journal, le connecteur recherche les entrées d’audit liées à cette valeur sys_id. Fournissez cette option lorsqu’une requête auprès de ServiceNow® aboutit, mais ne donne aucun résultat, faisant échouer la procédure. Assurez-vous que l’utilisateur ServiceNow® du connecteur a accès à l’entrée spécifiée.

    Cette option ne peut pas être utilisée avec le paramètre table_name.

    Si le connecteur a été correctement démarré, cette procédure stockée renvoie la réponse suivante :

    {
        "responseCode": "OK",
    }
    
    Copy

    Lors de la finalisation de la configuration du connecteur, ce dernier tentera de vérifier si un état de connecteur précédemment exporté est présent dans le schéma de destination. Si la table __CONNECTOR_STATE_EXPORT est présente et accessible par le connecteur, ce dernier tentera d’importer l’état. Lorsque l’importation se termine correctement, la table d’exportation est supprimée. Si une erreur se produit lors de l’importation, il est possible de réexécuter la procédure FINALIZE_CONNECTOR_CONFIGURATION après avoir corrigé l’erreur. Si vous ne souhaitez pas importer l’état ou si vous ne voulez pas corriger l’erreur d’importation, transférez la possession de la table depuis le connecteur et supprimez la table.

La base de données nouvellement créée est une instance du connecteur et contient les éléments suivants :

Rôles d’application du connecteur

En tant qu’application native, Snowflake Connector for ServiceNow®V2 définit des rôles d’application. Ils peuvent être consultés à la section Contrôle d’accès basé sur les rôles des connecteurs.

Prochaines étapes

Après avoir installé et configuré le connecteur, effectuez les étapes décrites dans Configuration de l’ingestion de données pour vos données ServiceNow®.