Catégories :

Utilisateur et sécurité DDL (Intégrations de services tiers)

ALTER SECURITY INTEGRATION (OAuth externe)

Modifie les propriétés d’une intégration de sécurité existante créée pour OAuth externe. Pour des informations sur la modification d’autres types d’intégrations de sécurité (par exemple Snowflake OAuth), voir ALTER SECURITY INTEGRATION.

Voir aussi :

CREATE SECURITY INTEGRATION (External OAuth) , DROP INTEGRATION , SHOW INTEGRATIONS , DESCRIBE INTEGRATION

Dans ce chapitre :

Syntaxe

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
  [ TYPE = EXTERNAL_OAUTH ]
  [ ENABLED = { TRUE | FALSE } ]
  [ EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM } ]
  [ EXTERNAL_OAUTH_ISSUER = '<string_literal>' ]
  [ EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = '<string_literal>' | ('<string_literal>', '<string_literal>' [ , ... ] ) ]
  [ EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS' ]
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' ] -- For OKTA | PING_FEDERATE | CUSTOM
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' | ('<string_literal>' [ , '<string_literal>' ... ] ) ] -- For Azure
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY = <public_key1> ]
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( '{role_name}' [ , '{role_name}' , ... ] ) ]
  [ EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( '{role_name}' [ , '{role_name}' , ... ] ) ]
  [ EXTERNAL_OAUTH_AUDIENCE_LIST = ('<string_literal>') ]
  [ EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE ]
  [ EXTERNAL_OAUTH_SCOPE_DELIMITER = '<string_literal>' ] -- Only for EXTERNAL_OAUTH_TYPE = CUSTOM

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name>  UNSET {
                                                            ENABLED                      |
                                                            EXTERNAL_OAUTH_AUDIENCE_LIST |
                                                            }
                                                            [ , ... ]

ALTER [ SECURITY ] INTEGRATION <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER [ SECURITY ] INTEGRATION <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

Paramètres

name

Identificateur pour l’intégration à modifier. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

SET ...

Spécifie un(e) ou plusieurs paramètre(s)/propriété(s) à définir pour l’intégration (séparés par des espaces, des virgules ou de nouvelles lignes) :

TYPE = EXTERNAL_OAUTH

Distingue l’intégration OAuth externe d’une intégration Snowflake OAuth.

ENABLED = TRUE | FALSE

Spécifie s’il faut initier le fonctionnement de l’intégration ou le suspendre.

  • TRUE permet l’exécution de l’intégration en fonction des paramètres spécifiés dans la définition de canal.

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

EXTERNAL_OAUTH_TYPE = OKTA | AZURE | PING_FEDERATE | CUSTOM

Indique que le serveur d’autorisation OAuth 2.0 doit être Okta, Microsoft Azure AD, Ping Identity PingFederate ou un serveur d’autorisation personnalisé OAuth 2.0.

EXTERNAL_OAUTH_ISSUER = 'string_literal'

Spécifie l’URL pour définir le serveur d’autorisation OAuth 2.0.

EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'string_literal' | ('string_literal', 'string_literal' [ , ... ] )

Spécifie la ou les revendications de jeton d’accès qui peuvent être utilisées pour mapper le jeton d’accès à un enregistrement utilisateur Snowflake.

Le type de données de la revendication doit être une chaîne ou une liste de chaînes.

EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS'

Indique quel attribut d’enregistrement utilisateur Snowflake doit être utilisé pour mapper le jeton d’accès à un enregistrement utilisateur Snowflake.

EXTERNAL_OAUTH_JWS_KEYS_URL = 'string_literal'

Spécifie le point de terminaison à partir duquel télécharger les clés publiques ou les certificats pour valider un jeton d’accès External OAuth.

Cette syntaxe s’applique aux intégrations de sécurité où EXTERNAL_OAUTH_TYPE = OKTA | PING_FEDERATE | CUSTOM

EXTERNAL_OAUTH_JWS_KEYS_URL = 'string_literal' | ('string_literal' [ , 'string_literal' ... ] )

Spécifie le point de terminaison ou une liste de points de terminaison à partir desquels télécharger les clés publiques ou les certificats pour valider un jeton d’accès External OAuth. Le nombre maximum d’URLs qui peuvent être spécifiées dans la liste est 3.

Cette syntaxe s’applique aux intégrations de sécurité où EXTERNAL_OAUTH_TYPE = AZURE

EXTERNAL_OAUTH_RSA_PUBLIC_KEY = public_key1

Spécifie une clé publique RSA d’encodage Base64, sans les en-têtes -----BEGIN PUBLIC KEY----- et -----END PUBLIC KEY-----.

EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = public_key2

Spécifie une deuxième clé publique RSA, sans les en-têtes -----BEGIN PUBLIC KEY----- et -----END PUBLIC KEY-----. Utilisée pour la rotation des clés.

EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

Spécifie la liste des rôles qu’un client ne peut pas définir comme rôle principal. Un rôle de cette liste ne peut pas être utilisé lors de la création d’une session Snowflake basée sur le jeton d’accès du serveur d’autorisation External OAuth.

Par défaut, cette liste comprend les rôles ACCOUNTADMIN et SECURITYADMIN. Pour supprimer ces rôles à hauts privilèges de la liste, utilisez la commande ALTER ACCOUNT pour définir le paramètre de compte EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST sur FALSE.

EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

Spécifie la liste des rôles que le client peut définir comme rôle principal.

Un rôle de cette liste peut être utilisé lors de la création d’une session Snowflake basée sur le jeton d’accès du serveur d’autorisation External OAuth.

Prudence

Ce paramètre prend en charge les rôles système ACCOUNTADMIN et SECURITYADMIN.

Faites preuve de prudence lorsque vous créez une session Snowflake avec ces rôles à hauts privilèges définis comme rôle principal.

EXTERNAL_OAUTH_AUDIENCE_LIST = ('string_literal')

Spécifie des valeurs supplémentaires qui peuvent être utilisées pour la validation de l’audience du jeton d’accès en plus de l’utilisation de l’URL du compte Snowflake du client (c’est-à-dire, <identificateur_de_compte>.snowflakecomputing.com). Pour plus d’informations, voir Identificateurs de compte.

Pour plus de détails sur cette propriété lorsque vous utilisez Power BI SSO, reportez-vous à Intégrations de sécurité Power BI SSO.

Actuellement, plusieurs URLs d’audience ne peuvent être spécifiées que pour les clients personnalisés External OAuth. Chaque URL doit être placée entre guillemets simples, avec une virgule séparant chaque URL. Par exemple :

external_oauth_audience_list = ('https://example.com/api/v2/', 'https://example.com')
EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE

Spécifie si le client ou l’utilisateur OAuth peut utiliser un rôle qui n’est pas défini dans le jeton d’accès OAuth. Notez qu’avec une intégration Power BI à Snowflake, l’utilisateur PowerBI ne peut pas changer de rôle même si ce paramètre est activé.

  • DISABLE n’autorise pas le client ou l’utilisateur OAuth à changer de rôle (c’est-à-dire use role <rôle>;). Par défaut.

  • ENABLE permet au client ou à l’utilisateur OAuth de changer de rôle.

  • ENABLE_FOR_PRIVILEGE permet au client ou à l’utilisateur OAuth de changer de rôle uniquement pour un client ou un utilisateur avec le privilège USE_ANY_ROLE. Ce privilège peut être accordé et révoqué à un ou plusieurs rôles disponibles pour l’utilisateur. Par exemple :

Notez que la valeur peut éventuellement être placée entre guillemets simples (par exemple, DISABLE ou 'DISABLE').

grant USE_ANY_ROLE on integration external_oauth_1 to role1;
revoke USE_ANY_ROLE on integration external_oauth_1 from role1;
EXTERNAL_OAUTH_SCOPE_DELIMITER = 'string_literal'

Spécifie le délimiteur de champ d’application dans le jeton d’autorisation.

Le délimiteur peut être un caractère unique quelconque, tel qu’une virgule (',') ou un espace (' ').

Cette propriété d’intégration de la sécurité est facultative et peut être utilisée pour remplacer la virgule de délimitation par défaut. Notez que cette propriété n’est prise en charge que pour les intégrations External OAuth personnalisées, où :

EXTERNAL_OAUTH_TYPE = CUSTOM

Contactez le support Snowflake pour activer cette propriété dans votre compte Snowflake.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

UNSET ...

Spécifie un(e) ou plusieurs paramètre(s)/propriété(s) à désactiver pour l’intégration de sécurité, ce qui les réinitialise à leurs valeurs par défaut :

  • ENABLED

  • EXTERNAL_OAUTH_AUDIENCE_LIST

  • TAG tag_name [ , tag_name ... ]

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.

Exemples

L’exemple suivant lance l’opération d’une intégration suspendue :

ALTER SECURITY INTEGRATION myint SET ENABLED = TRUE;
Revenir au début