CREATE SECURITY INTEGRATION (authentification API externe)

Crée une nouvelle intégration de sécurité pour l’authentification API externe dans le compte ou remplace une intégration existante.

Pour des informations sur la création d’autres types d’intégrations de sécurité (par exemple, OAuth externe), voir CREATE SECURITY INTEGRATION.

Voir aussi :

ALTER SECURITY INTEGRATION (authentification API externe) , DESCRIBE INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS

Syntaxe

OAuth : identifiants de connexion client

CREATE SECURITY INTEGRATION <name>
  TYPE = API_AUTHENTICATION
  AUTH_TYPE = OAUTH2
  ENABLED = { TRUE | FALSE }
  [ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
  [ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
  [ OAUTH_CLIENT_ID = '<string_literal>' ]
  [ OAUTH_CLIENT_SECRET = '<string_literal>' ]
  [ OAUTH_GRANT = 'CLIENT_CREDENTIALS']
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_ALLOWED_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] ) ]
  [ COMMENT = '<string_literal>' ]
Copy

OAuth : flux d’accord de code d’autorisation

CREATE SECURITY INTEGRATION <name>
  TYPE = API_AUTHENTICATION
  AUTH_TYPE = OAUTH2
  ENABLED = { TRUE | FALSE }
  [ OAUTH_AUTHORIZATION_ENDPOINT = '<string_literal>' ]
  [ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
  [ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
  [ OAUTH_CLIENT_ID = '<string_literal>' ]
  [ OAUTH_CLIENT_SECRET = '<string_literal>' ]
  [ OAUTH_GRANT = 'AUTHORIZATION_CODE']
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ COMMENT = '<string_literal>' ]
Copy

OAuth : JWT flux du porteur

CREATE SECURITY INTEGRATION <name>
  TYPE = API_AUTHENTICATION
  AUTH_TYPE = OAUTH2
  ENABLED = { TRUE | FALSE }
  [ OAUTH_AUTHORIZATION_ENDPOINT = '<string_literal>' ]
  [ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
  [ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
  [ OAUTH_CLIENT_ID = '<string_literal>' ]
  [ OAUTH_CLIENT_SECRET = '<string_literal>' ]
  [ OAUTH_GRANT = 'JWT_BEARER']
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ COMMENT = '<string_literal>' ]
Copy

Paramètres requis

name

Spécifie l’identificateur (c’est-à-dire le nom) de l’intégration. Cette valeur doit être unique dans votre compte.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. « Mon objet »). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

TYPE = API_AUTHENTICATION

Spécifie que vous créez une interface de sécurité entre Snowflake et un service externe qui utilise OAuth 2.0 avec une authentification API externe.

AUTH_TYPE = OAUTH2

Spécifie que l’intégration utilise OAuth 2.0 pour s’authentifier auprès du service externe.

ENABLED = { TRUE | FALSE }

Spécifie si cette intégration de sécurité est activée ou désactivée.

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.

Paramètres facultatifs

Notez qu’il s’agit d’une liste exhaustive de paramètres que vous pouvez configurer. Configurez les paramètres dans l’intégration pour qu’ils correspondent aux paramètres que vous configurez lors de la création d’un secret en fonction du flux OAuth que vous choisissez.

OAUTH_AUTHORIZATION_ENDPOINT = 'string_literal'

Spécifie l’URL pour l’authentification auprès du service externe. Par exemple, pour se connecter à l’instance ServiceNow, l’URL doit être au format suivant :

https://<instance_name>.service-now.com/oauth_token
Copy

instance_name est le nom de votre instance ServiceNow.

OAUTH_TOKEN_ENDPOINT = 'string_literal'

Spécifie le point de terminaison du jeton utilisé par le client pour obtenir un jeton d’accès en présentant son jeton d’attribution ou d’actualisation d’autorisation. Le point de terminaison du jeton est utilisé avec chaque autorisation accordée, à l’exception du type d’autorisation implicite (puisqu’un jeton d’accès est délivré directement).

OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST

Spécifie que POST est utilisé comme méthode d’authentification pour le service externe.

OAUTH_CLIENT_ID = 'string_literal'

Spécifie l’ID client pour l’application OAuth dans le service externe.

OAUTH_CLIENT_SECRET = 'string_literal'

Spécifie le secret client pour l’application OAuth dans l’instance ServiceNow de l’étape précédente. Le connecteur l’utilise pour demander un jeton d’accès à l’instance ServiceNow.

OAUTH_GRANT = 'string_literal'

Spécifie le type de flux OAuth. Un des éléments suivants :

  • 'CLIENT_CREDENTIALS' lorsque l’intégration utilise les identifiants de connexion client.

  • 'AUTHORIZATION_CODE' lorsque l’intégration utilise un code d’autorisation.

  • 'JWT_BEARER' quand l’intégration utilise un jeton du porteur de type JWT (JSON Web Token).

OAUTH_ACCESS_TOKEN_VALIDITY = integer

Spécifie la durée de vie par défaut du jeton d’accès OAuth (en secondes) émis par un serveur OAuth.

La valeur définie dans cette propriété est utilisée si la durée de vie du jeton d’accès n’est pas renvoyée en tant que partie de la réponse du jeton OAuth. Lorsque les deux valeurs sont disponibles, la plus petite des deux valeurs sera utilisée pour actualiser le jeton d’accès.

OAUTH_REFRESH_TOKEN_VALIDITY = integer

Spécifie la valeur pour déterminer la validité du jeton d’actualisation obtenu à partir du serveur OAuth.

OAUTH_ALLOWED_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] )

Spécifie une liste de champs d’application séparés par des virgules, avec des guillemets simples entourant chaque champ d’application, à utiliser lors de la conception d’une requête à partir de OAuth par un rôle avec USAGE sur l’intégration pendant le flux d’identifiants de connexion client OAuth.

Cette liste doit être un sous-ensemble des champs d’application définis dans la propriété OAUTH_ALLOWED_SCOPES de l’intégration de sécurité. Si les valeurs de propriété OAUTH_SCOPES ne sont pas spécifiées, le secret hérite de tous les champs d’application spécifiés dans l’intégration de sécurité.

Pour le connecteur ServiceNow, la seule valeur de champ d’application possible est 'useraccount'.

Par défaut : liste vide (c’est-à-dire []).

COMMENT = 'string_literal'

Spécifie un commentaire pour l’intégration.

Par défaut : aucune valeur

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

CREATE INTEGRATION

Compte

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

Exemples

Créez une intégration de sécurité nommée servicenow_oauth pour connecter Snowflake à l’instance ServiceNow nommée myinstance à l’aide de OAuth avec le flux d’accord de code :

CREATE SECURITY INTEGRATION servicenow_oauth
  TYPE = api_authentication
  AUTH_TYPE = oauth2
  OAUTH_CLIENT_AUTH_METHOD = client_secret_post
  OAUTH_CLIENT_ID = 'sn-oauth-134o9erqfedlc'
  OAUTH_CLIENT_SECRET = 'eb9vaXsrcEvrFdfcvCaoijhilj4fc'
  OAUTH_TOKEN_ENDPOINT = 'https://myinstance.service-now.com/oauth_token.do'
  ENABLED = true;
Copy