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>' ]
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>' ]
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
Où
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;