Installation et configuration du connecteur via des commandes SQL¶
Le connecteur Snowflake pour ServiceNow® est soumis aux conditions de connecteur.
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 :
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 le Snowflake Connector for ServiceNow® 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® :
Le connecteur utilise une intégration de sécurité avec
TYPE = API_AUTHENTICATION
pour connecter Snowflake à l’instance ServiceNow.L’intégration de la sécurité spécifie l’ID de client ServiceNow OAuth, le secret du client et l’URL du point de terminaison pour l’authentification à 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 ServiceNow OAuth, 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® de sorte à utiliser OAuth, procédez comme suit :
Configurez votre instance ServiceNow pour utiliser OAuth avec le flux d’accord de code.
Si votre instance ServiceNow utilise déjà le flux d’octroi de code OAuth et si vous souhaitez utiliser cette instance avec le Snowflake Connector for ServiceNow®, notez l’ID du client, le secret du client et l’URL du 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’accord de code comme indiqué dans Configurer OAuth et Créer un point de terminaison pour l’accès des clients à l’instance.
Créez un registre d’applications dans ServiceNow et utilisez-le pour configurer le connecteur.
Connectez-vous à votre instance ServiceNow, puis sélectionnez Homepage.
Recherchez OAuth, puis sélectionnez Application Registry.
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 :
Dans ServiceNow, entrez un nom pour le registre d’applications OAuth dans le champ Name.
Dans ServiceNow, dans Redirect URL field, entrez ce qui suit :
https://apps-api.c1.<cloud_region_id>.<cloud>.app.snowflake.com/oauth/complete-secret
Où :
cloud_region_id
Spécifie l’identificateur de la région cloud de votre compte Snowflake.
cloud
Spécifie l’identificateur de la plate-forme Cloud (par exemple
aws
,azure
ougcp
).
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).
Dans ServiceNow, sélectionnez Submit.
Le registre d’applications OAuth apparaît dans la liste des registres d’applications.
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 :
Assurez-vous d’avoir effectué les tâches décrites dans Configuration de OAuth.
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
Where
instance_name
Spécifie le nom de votre instance ServiceNow.
client_id
etclient_secret
Spécifiez les valeurs que vous avez obtenues lors de la configuration du point de terminaison ServiceNow.
username
etpassword
Spécifiez les identifiants de connexion pour 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 du 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}
Création d’une intégration de sécurité¶
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;
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 à partir de ServiceNow dans la section précédente.
client_secret
Spécifie la valeur du champ Client Secret que vous avez obtenue à partir de ServiceNow dans 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.comLe nom de votre instance serait
myinstance
.
Création d’un objet secret¶
Créez l’objet secret Snowflake que le Snowflake Connector for ServiceNow® utilise pour l’authentification.
Snowflake recommande d’utiliser un rôle dédié pour gérer l’objet secret, distinct du rôle ACCOUNTADMIN (le rôle que vous utilisez pour installer, configurer et exécuter le connecteur). Snowflake recommande également 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;
Création d’un rôle personnalisé pour gérer le secret¶
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.
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;
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é :
USAGE sur la base de données que vous avez créée pour le secret
USAGE et CREATE SECRET sur le schéma que vous avez créé pour le secret
USAGE sur l’intégration de sécurité que vous avez créée précédemment
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;
À 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;
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’accord 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
surOAUTH2
.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’une intégration de sécurité :Par exemple, pour créer un secret nommé
service_now_creds_oauth_code
qui utilise l’intégration de sécurité nomméeservicenow_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;
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 surPASSWORD
. DéfinissezUSERNAME
etPASSWORD
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';
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é.
Note
Pour exécuter le Snowflake Connector for ServiceNow® sans entrepôt dédié, transmettez une chaîne vide lorsqu’il vous est demandé de fournir une valeur pour l’entrepôt.
Pour l’entrepôt de connecteurs, Snowflake recommande d’utiliser un entrepôt multi-cluster 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;
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. Le Snowflake Connector for ServiceNow® 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 :
Les noms du schéma et de la base de données doivent être des identificateurs d’objets valides.
Pour contrôler l’accès aux données ServiceNow ingérées dans Snowflake, vous pouvez accorder les privilèges sur le schéma aux rôles qui devraient être autorisés à accéder aux données.
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;
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.
Ultérieurement, lorsque vous appellerez la procédure stockée ENABLE_TABLES, celle-ci vérifiera que ces objets requis existent déjà et n’essaiera pas de les recréer.
Pour déterminer où reprendre l’ingestion des données, le connecteur examine la table de journal d’événements :
Si le connecteur trouve des lignes du type UPDATE ou DELETE dans la table du journal des événements, il utilise l’horodatage de la ligne la plus récente (de la colonne
sys_updated_on
ousys_created_on
) comme point de départ de l’ingestion.S’il n’y a pas de lignes de type UPDATE ou DELETE dans la table des événements, le connecteur utilise la valeur la plus ancienne de la colonne
event_date
dans la table du journal des événements.
Création d’une intégration d’API pour communiquer avec l’instance ServiceNow¶
Ensuite, créez une intégration d’API pour communiquer avec l’instance ServiceNow. Exécutez la commande CREATE API INTEGRATION avec la syntaxe suivante :
CREATE API INTEGRATION <integration_name> API_ALLOWED_PREFIXES = ('https://<servicenow_instance_name>.service-now.com') ALLOWED_AUTHENTICATION_SECRETS = (<secret_name>) ENABLED = TRUE
Où :
integration_name
Spécifie le nom de l’intégration API. Le nom doit être un identificateur d’objet valide. Le nom doit être unique parmi les intégrations API de votre compte.
API_ALLOWED_PREFIXES = ('https://servicenow_instance_name.service-now.com')
Spécifie l’URL de votre instance ServiceNow. Cela limite l’utilisation de cette intégration d’API à l’instance avec l’URL spécifiée.
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’API nommée servicenow_api_integration
pour l’instance ServiceNow nommée myinstance
, exécutez la commande suivante :
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
Note
Il n’est pas nécessaire de définir d’autres paramètres dans l’instruction CREATE API INTEGRATION.
Configuration de la journalisation pour le connecteur¶
Le Snowflake Connector for ServiceNow® 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. Si la table des événements n’est pas configurée, les informations relatives aux journaux et aux événements sont ignorées.
Création d’un rôle personnalisé pour le connecteur¶
Ensuite, créez un rôle personnalisé pour le connecteur et accordez-lui les privilèges nécessaires à l’exécution du connecteur.
Ce rôle permet au connecteur d’effectuer les opérations suivantes :
Créer et gérer des tâches pour l’ingestion des données.
Utiliser l’entrepôt dédié.
Accéder au secret et à l’intégration d’API pour vous connecter à l’instance ServiceNow.
Le rôle est également le propriétaire des tables et des vues contenant les données ServiceNow ingérées par le connecteur.
Pour créer ce rôle et accorder les privilèges :
En utilisant le rôle système USERADMIN, exécutez la commande CREATE ROLE pour créer un rôle personnalisé qui détiendra les données. Par exemple, pour créer le rôle personnalisé
connector_resources_provider
pour la possession des données, exécutez les commandes suivantes :USE ROLE useradmin; CREATE ROLE connector_resources_provider;
En utilisant le rôle ACCOUNTADMIN, exécutez la commande GRANT <privilèges> to ROLE pour accorder les privilèges suivants au rôle personnalisé :
EXECUTE TASK sur le compte
L’un des éléments suivants, mais pas les deux :
EXECUTE MANAGED TASK
Accordez ce privilège si vous avez configuré le connecteur sans entrepôt dédié.
USAGE sur l’entrepôt que vous avez créé pour le connecteur.
Accordez ce privilège si vous utilisez un entrepôt dédié pour le connecteur.
USAGE sur la base de données que vous avez créée pour les données ServiceNow
USAGE, CREATE TABLE, et CREATE VIEW sur le schéma que vous avez créé pour les données ServiceNow
USAGE sur l’intégration d’API que vous avez créée pour ServiceNow
USAGE sur la base de données que vous avez créée pour le secret
USAGE sur le secret que vous avez créé
Par exemple, pour accorder les privilèges suivants au rôle nommé
connector_resources_provider
: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_api_integration
USAGE sur la base de données
secretsdb
USAGE sur le schéma
secretsdb.apiauth
USAGE sur le secret
secretsdb.apiauth.servicenow_creds_oauth_code secret
Exécutez les commandes suivantes :
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;
Après avoir installé le Snowflake Connector for ServiceNow®, vous accordez ce rôle au connecteur.
Bien qu’il soit recommandé de créer des rôles distincts et plus affinés pour accéder aux données ingérées après le début de l’ingestion, vous pouvez utiliser ce rôle pour interroger les données ingérées et vous pouvez l’étendre avec des privilèges supplémentaires. Inversement, la révocation des privilèges des rôles pour les objets requis par le connecteur ou la modification de la propriété des rôles sur les tables et les vues contenant des données ingérées n’est pas autorisée et entraînera l’interruption du connecteur.
Installation de l”Snowflake Connector for ServiceNow®¶
Pour installer le connecteur :
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.
Naviguez jusqu’à la feuille de calcul SQL.
Connectez-vous en tant qu’utilisateur ayant le rôle ACCOUNTADMIN. Par exemple :
USE ROLE ACCOUNTADMIN;
Attribuez le rôle personnalisé du connecteur (le rôle que vous avez créé précédemment) à la base de données qui sert d’instance au connecteur.
Par exemple, pour accorder le rôle nommé
connector_resources_provider
à la base de donnéesmy_connector_servicenow
, exécutez la commande suivante :GRANT ROLE connector_resources_provider TO DATABASE my_connector_servicenow;
Définir la propriété de la base de données
FIREWALL_CONFIGURATION
sur la base de données installée. Inclure le préfixe d’URL pour votre instance ServiceNow.Par exemple, si votre base de données s’appelle
my_connector_servicenow
et que le nom de l’instance ServiceNow estmy-instance
, exécutez la commande suivante :ALTER DATABASE my_connector_servicenow SET FIREWALL_CONFIGURATION = ('https://my-instance.service-now.com')
Exécutez la commande USE DATABASE pour utiliser la base de données pour le connecteur. Par exemple :
USE DATABASE my_connector_servicenow;
Configurez la connexion à l’instance ServiceNow en utilisant la commande CALL pour appeler la procédure stockée nommée
CONFIGURE_CONNECTION
:CALL CONFIGURE_CONNECTION({ 'serviceNowUrl': '<servicenow_base_url>', 'secret': '<secret_name>', 'apiIntegrationName': '<api_integration_name>' })
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
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 créé précédemment).
Vous devez spécifier le nom complet de l’objet secret au format suivant :
<database_name>.<schema_name>.<secret_name>
Les noms de la base de données, du schéma et du secret doivent être des identificateurs d’objets valides.
api_integration_name
Spécifie le nom de l’intégration d’API pour ServiceNow (l’intégration d’API que vous avez créée précédemment).
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’API nommée
servicenow_api_integration
.
Exécutez la commande suivante :
CALL CONFIGURE_CONNECTION({ 'serviceNowUrl': 'https://myinstance.service-now.com', 'secret': 'SECRETSDB.APIAUTH.SERVICENOW_CREDS_OAUTH_CODE', 'apiIntegrationName': 'SERVICENOW_API_INTEGRATION' });
Si la connexion a été configurée avec succès, cette procédure stockée affiche le message suivant :
Connection configured successfully
Note
Une fois le connecteur configuré, il n’est pas possible de modifier le nom du secret transmis ni de l’intégration API. 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.
Démarrez le connecteur comme décrit dans Démarrage du Snowflake Connector for ServiceNow®.
La base de données nouvellement créée est une instance du connecteur et contient les éléments suivants :
Procédures stockées que vous utilisez pour configurer le connecteur. Voir Configuration de l’ingestion de données à l’aide d’instructions SQL pour plus d’informations.
Vues contenant les messages enregistrés et les statistiques pour le connecteur. Voir À propos de la surveillance du connecteur pour plus d’informations.
Démarrage et arrêt du Snowflake Connector for ServiceNow®¶
Les sections suivantes décrivent comment démarrer, arrêter et reprendre le connecteur.
Démarrage du Snowflake Connector for ServiceNow®¶
Démarrez le connecteur en appelant la procédure nommée START_CONNECTOR
. Les arguments de cette procédure stockée sont décrits ci-dessous :
CALL START_CONNECTOR(
'<warehouse_name>',
'<dest_db_schema>',
'<name_of_journal_table>',
'<connector_role>',
);
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.
Pour configurer le connecteur afin qu’il fonctionne sans utiliser d’entrepôt dédié, saisissez une chaîne vide pour le nom de l’entrepôt.
dest_db_schema
Spécifie le nom entièrement qualifié du schéma pour les données ServiceNow dans Snowflake (le schéma que vous avez créé précédemment).
Vous devez spécifier le nom pleinement qualifié du schéma dans le format suivant :
<database_name>.<schema_name>Les noms de la base de données et du schéma doivent être des identificateurs d’objets valides.
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 une chaîne vide pour cet argument.
connector_role
Spécifie le nom du rôle personnalisé pour le rôle du connecteur que vous avez créé précédemment.
Le nom du rôle doit être un identificateur d’objet valide.
Par exemple, pour démarrer le connecteur nommé
my_connector_servicenow
qui utilise ce qui suit :
l’entrepôt dénommé
servicenow_conn_warehouse
le schéma nommé
dest_db.dest_schema
pour les données ServiceNow dans Snowflakela table ServiceNow nommée
sys_audit_delete
pour le suivi des enregistrements supprimésle rôle personnalisé nommé
connector_resources_provider
Exécutez les commandes suivantes :
CALL START_CONNECTOR( 'SERVICENOW_CONN_WAREHOUSE', 'DEST_DB.DEST_SCHEMA', 'sys_audit_delete', 'CONNECTOR_RESOURCES_PROVIDER', );
Si le connecteur a été démarré avec succès, cette procédure stockée affiche le message suivant :
Successfully started the |SNC|. The connector can be configured now.
Note
Une fois le connecteur démarré, il n’est pas possible de renommer l’entrepôt, la base de données de destination, le schéma de destination ni le rôle personnalisé 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 CONFIGURE_WAREHOUSE pour modifier l’entrepôt utilisé par le connecteur.
Arrêt du Snowflake Connector for ServiceNow®¶
Pour arrêter toutes les tâches lancées par le connecteur, appelez la procédure stockée STOP_CONNECTOR
:
CALL STOP_CONNECTOR();
Note
La procédure stockée STOP_CONNECTOR
n’est pas disponible tant que vous n’avez pas repris le connecteur en appelant la procédure stockée START_CONNECTOR
.
L’arrêt du connecteur empêche toute interaction avec celui-ci (par exemple, l’activation/désactivation des tables ou la configuration du connecteur) jusqu’à ce que le connecteur soit repris en appelant la procédure stockée RESUME_CONNECTOR
.
L’arrêt du connecteur met également fin à toute génération de coûts pour le connecteur.
Reprise du Snowflake Connector for ServiceNow®¶
Pour reprendre toutes les tâches arrêtées par la procédure stockée STOP_CONNECTOR
appelez la procédure stockée RESUME_CONNECTOR
:
CALL RESUME_CONNECTOR();
Note
La procédure stockée RESUME_CONNECTOR
n’est pas disponible tant que vous n’avez pas repris le connecteur en appelant la procédure stockée START_CONNECTOR
.
Délégation de privilèges pour la configuration et la surveillance du Snowflake Connector for ServiceNow®¶
Après avoir installé le connecteur, seul le rôle ACCOUNTADMIN peut exécuter les procédures de configuration et accéder aux vues utilisées pour surveiller le connecteur.
Note
Le rôle personnalisé que vous avez créé dans Création d’un rôle personnalisé pour le connecteur ne dispose pas des privilèges nécessaires pour exécuter les procédures de configuration ou accéder aux vues de surveillance.
Pour déléguer ces privilèges à un autre rôle, exécutez la commande GRANT IMPORTED PRIVILEGES ON DATABASE ... TO ROLE ...
. Cette commande utilise la syntaxe suivante :
GRANT IMPORTED PRIVILEGES ON DATABASE <connector_name> TO ROLE <connector_config_role>;
Où :
connector_name
Spécifie le nom de la base de données qui sert d’instance au connecteur.
connector_config_role
Spécifie le nom du rôle auquel doivent être accordés les privilèges de configuration et de surveillance du connecteur.
Note
Cela n’accorde pas au rôle les privilèges de supprimer la base de données connector_name
ou d’accéder au schéma contenant les données ServiceNow dans Snowflake.
Par exemple, pour créer un rôle personnalisé nommé connector_config_role
et lui accorder les privilèges nécessaires pour configurer et surveiller l’instance de connecteur nommée my_connector_servicenow
, exécutez la commande suivante :
USE ROLE useradmin;
CREATE ROLE connector_config_role;
USE ROLE securityadmin;
GRANT IMPORTED PRIVILEGES ON DATABASE my_connector_servicenow TO ROLE connector_config_role;
Modification de l’entrepôt utilisé par le connecteur (facultatif)¶
Si vous souhaitez modifier l’entrepôt utilisé par le connecteur ou ajouter un entrepôt dédié, vous pouvez le faire en appelant :
CALL CONFIGURE_WAREHOUSE('<warehouse_name>');
Où :
warehouse_name
Spécifie le nom de l’entrepôt que le connecteur doit utiliser.
Pour configurer le connecteur afin qu’il fonctionne sans utiliser d’entrepôt dédié, saisissez une chaîne vide pour le nom de l’entrepôt.
Note
Avant de configurer le connecteur pour utiliser un entrepôt différent, vérifiez que le rôle personnalisé utilisé par le connecteur dispose du privilège USAGE pour le nouvel entrepôt.
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®.