Rediriger les connexions du client

La redirection des clients permet de rediriger les connexions de vos clients vers des comptes Snowflake dans différentes régions pour assurer la continuité des activités et la reprise après sinistre, ou lors de la migration de votre compte vers une autre région ou une autre plateforme Cloud.

Dans ce chapitre :

Présentation de la redirection des clients

La redirection des clients est mise en œuvre par le biais d’un objet Snowflake de connexion. L’objet de connexion stocke une URL de connexion sécurisée que les utilisateurs transmettent à un client Snowflake.

L’URL de connexion est composée du nom de votre organisation et du nom de l’objet de connexion en plus d’un nom de domaine commun :

<nom_de_l'organisation>-<nom_de_la_connexion>.snowflakecomputing.com

Un administrateur de compte fournit l’URL de connexion pour pointer vers un compte Snowflake spécifique dans votre organisation. Lorsque la situation le justifie, l’administrateur peut diriger l’URL de connexion vers un autre compte de votre organisation, dans une autre région ou sur une autre plateforme Cloud. Les connexions des utilisateurs finaux sont redirigées automatiquement.

Flux de redirection des clients

  1. Suivez les étapes de la section Configuration de la redirection des clients (dans cette rubrique) pour créer une URL de connexion pour les connexions client. Cela comprend la création d’une connexion primaire et d’une ou plusieurs connexions secondaires liées.

  2. Mettez à jour les clients Snowflake pour qu’ils se connectent en utilisant l’URL de connexion. L’utilisation d’une URL de connexion (dans cette rubrique) contient une liste des clients pris en charge et des détails de connexion.

  3. En cas de panne de service dans la région où se trouve la connexion primaire, effectuez les étapes de Rediriger les connexions du client (dans cette rubrique) pour mettre à jour l’URL de connexion afin de la rediriger vers une connexion secondaire.

  4. Lorsque la panne est résolue, effectuez les étapes de Rediriger les connexions du client pour rediriger les connexions des clients vers la connexion primaire d’origine.

Les diagrammes suivants illustrent le flux de redirection des clients pour deux comptes dans la même organisation mais dans des régions différentes (Region A et Region B) sur des plateformes Cloud identiques ou différentes.

L’URL de connexion pour les connexions clients est configurée pour un compte dans Region A :

Normal client connections

Une interruption de service dans Region A entraîne l’échec des connexions des clients :

Failed client connections

L’URL de connexion pour les connexions clients est maintenant configurée pour un compte dans Region B :

Redirected client connections

Exemple

Les instructions SQL suivantes passent par le flux de travail de redirection du client. Chaque étape est expliquée en détail dans les sections qui suivent dans cette rubrique.

Connexions normales des clients : configurer la redirection du client

Exécuter à partir du compte source
-- Create a new primary connection
CREATE CONNECTION myconnection;

-- View accounts in your organization that are enabled for replication
-- Note the account_name for the ALTER CONNECTION statement below
SHOW REPLICATION ACCOUNTS;

-- Configure failover accounts for the primary connection
ALTER CONNECTION myconnection
  ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;

-- View the details for the connection
SHOW CONNECTIONS;
Exécuté sur le compte cible
-- EXECUTED ON TARGET ACCOUNT

-- Create a secondary connection linked to the primary connection
-- The secondary connection name must be the same as the primary connection name
CREATE CONNECTION myconnection
  AS REPLICA OF myorg.myaccount1.myconnection;

-- If either AWS PrivateLink or Azure Private Link is enabled for your account, you must create
-- or update a DNS CNAME record for your connection URL. See the relevant section in this topic for details.

Une panne se produit dans la région source : basculement

Exécuté sur le compte cible
-- If an outage occurs in the region where the primary connection is located,
-- promote a secondary connection to serve as the primary connection
ALTER CONNECTION myconnection PRIMARY;

-- If either AWS PrivateLink or Azure Private Link is enabled for your account, you must
-- update the DNS CNAME record for your connection URL. See the relevant section in this topic for details.

Panne résolue : restauration

Exécuter à partir du compte source
-- Once the outage is resolved, promote the original primary connection back to primary
-- Executed from the account with the connection you want to promote to primary
ALTER CONNECTION myconnection PRIMARY;

-- If either AWS PrivateLink or Azure Private Link is enabled for your account, you must
-- update the DNS CNAME record for your connection URL. See the relevant section in this topic for details.

Configuration de la redirection des clients

Cette section décrit comment créer une connexion primaire et une ou plusieurs connexions secondaires dans un groupe de connexions.

Condition préalable

Contactez l’assistance de Snowflake pour activer la fonction de redirection des clients sur vos comptes. L’activation de cette fonction nécessite que la fonction Organisations soit également activée sur vos comptes.

Note

Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) peuvent exécuter les commandes SQL dans cette section.

Créer une connexion primaire

Prudence

Snowflake a attribué à votre organisation un nom unique et généré lors de sa création dans le système. Le nom de l’organisation est une partie de l’URL de connexion définie dans un objet de connexion et soumise par les clients Snowflake pour accéder à un compte. Avant de créer des objets de connexion, vérifiez que le nom de votre organisation dans Snowflake est satisfaisant. Pour changer le nom de votre organisation dans le système, contactez l’assistance de Snowflake.

  1. Créez une nouvelle connexion primaire en utilisant CREATE CONNECTION. Le nom de chaque connexion primaire doit être unique dans l’organisation.

    Le nom de la connexion est inclus dans l’URL de connexion utilisée pour se connecter aux comptes Snowflake.

    Par exemple, créez une connexion nommée myconnection :

    CREATE CONNECTION myconnection;
    
  2. Modifiez cette connexion primaire en utilisant une instruction ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS. Fournissez une liste, séparée par des virgules, des comptes de votre organisation qui peuvent stocker une option de basculement pour cette connexion (c’est-à-dire une connexion secondaire).

    Pour voir la liste complète des comptes de votre organisation qui sont activés pour la réplication, exécutez SHOW REPLICATION ACCOUNTS.

    Par exemple, autorisez les comptes myaccount2 et myaccount3 de l’organisation myorg à stocker chacun une connexion secondaire pour la connexion myconnection :

    ALTER CONNECTION myconnection ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
    
  3. Exécutez la commande SHOW CONNECTIONS pour visualiser les détails de la connexion.

    SHOW CONNECTIONS;
    
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------|-------------------------------------|-------------------------------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | MYORG-MYCONNECTION.snowflakecomputing.com |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+
    

Créer une connexion secondaire

Créez une connexion secondaire dans un ou plusieurs comptes, liée à une connexion primaire en utilisant CREATE CONNECTION … AS REPLICA OF. Notez que vous ne pouvez créer une base de données secondaire que dans un compte spécifié dans l’instruction ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS dans Créer une connexion primaire.

Exécutez une instruction CREATE CONNECTION … AS REPLICA OF dans chaque compte cible pour créer un réplica de la connexion primaire spécifiée.

Important

Chaque connexion secondaire doit porter le même nom que sa connexion primaire. Le nom de la connexion est inclus dans l’URL de connexion.

Exécutez les instructions SQL de cette section dans le compte où vous voulez créer une connexion secondaire.

Exemple

-- View all connections
SHOW CONNECTIONS;

+--------------------+-------------------------------+------------------+-------------------+-----------------+---------------+-------------------------------+------------------------------------+--------------------------------------------+
| snowflake_region   | created_on                    | account_name     | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts       | connection_url                             |
|--------------------+-------------------------------+------------------+-------------------+-----------------+---------------+-------------------------------|------------------------------------|--------------------------------------------|
| AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | MYORG-MYCONNECTION.snowflakecomputing.com  |
+--------------------+-------------------------------+------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+

-- Copy the PRIMARY column value: organization name, account name, and connection name of the primary connection.

-- Log into the ``aws_us_east_1`` account.
-- Create a secondary connection named ``myconnection`` that is linked to the ``myconnection`` primary connection.
-- Paste the PRIMARY column value from the SHOW CONNECTIONS output after the AS REPLICA OF clause.
CREATE CONNECTION myconnection
  AS REPLICA OF MYORG.MYACCOUNT1.MYCONNECTION;

-- Verify the secondary connection
SHOW CONNECTIONS;

+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+--------------------------------------------+
| snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                             |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------|-------------------------------------|--------------------------------------------|
| AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | MYORG-MYCONNECTION.snowflakecomputing.com  |
| AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | MYORG-MYCONNECTION.snowflakecomputing.com  |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+--------------------------------------------+

Utilisation d’une URL de connexion

Cette section fournit des instructions pour référencer une URL de connexion dans la configuration de divers clients Snowflake.

Clients Snowflake pris en charge

Les versions suivantes du client Snowflake (et plus) prennent en charge la redirection des clients :

Client Snowflake

Version (et supérieure)

SnowSQL

1.1.82

Connecteur Snowflake pour Python

1.8.3

Pilote Node.js

1.2.0

Pilote Go Snowflake

1.2.0

Pilote .NET

1.0.0

Pilote JDBC

3.8.4

Pilote ODBC

2.19.4

Configuration des clients Snowflake

Utilisez le nom d’hôte suivant pour l’URL de connexion lorsque vous vous connectez à Snowflake :

Nom d’hôte : <nom_organisation>-<nom_connexion>.snowflakecomputing.com

Où :

<nom_de_l'organisation>

Nom de votre organisation Snowflake. Les comptes Snowflake auxquels vos utilisateurs se connectent sont contenus dans cette organisation.

<nom_de_la_connexion>

Nom de l’objet de connexion.

Important

AWS PrivateLink ou Microsoft Azure Private Link

Clients utilisant AWS PrivateLink ou Microsoft Azure Private Link pour se connecter à leur compte Snowflake : ajoutez un segment privatelink à l’URL juste avant snowflakecomputing.com :

<nom_de_l'organisation>-<nom_de_la_connexion>.privatelink.snowflakecomputing.com

Interface Web classique de Snowflake

Entrez l’URL suivante dans un navigateur Web :

https://<organization_name>-<connection_name>.snowflakecomputing.com/

Par exemple :

https://MYORG-MYCONNECTION.snowflakecomputing.com/

Nouvelle interface Web de Snowflake

Entrez ce qui suit dans le champ du nom de compte sur app.snowflake.com :

<organization-name>-<connection-name>

Par exemple :

MYORG-MYCONNECTION

Lorsque vous utilisez <organisation>-<connexion> pour vous connecter, Snowsight navigue vers la région et le localisateur spécifiques de la connexion primaire actuelle. Pendant une panne, une fois la connexion redirigée, les utilisateurs doivent se reconnecter via <organisation>-<connexion> pour se connecter via la connexion primaire.

SnowSQL

Spécifiez le nom d’hôte pour l’URL de connexion dans le paramètre de connexion accountname du fichier SnowSQL config. Pour des informations sur le fichier config, voir Configuration de SnowSQL.

accountname = <organization_name>-<connection_name>
username = <username>
password = <password>

Par exemple :

accountname = MYORG-MYCONNECTION
username = jsmith
password = mySecurePassword

Connecteur Snowflake pour Python

Spécifiez le nom d’hôte de l’URL de connexion dans le paramètre de connexion account lorsque vous appelez l’objet Connection. Pour plus d’informations, voir Connecteur Python API et Utilisation du connecteur Python.

con = snowflake.connector.connect (
      account = <organization_name>-<connection_name>
      user = <username>
      password = <password>
)

Par exemple :

con = snowflake.connector.connect (
      account = MYORG-MYCONNECTION
      user = jsmith
      password = mySecurePassword
)

Pilote JDBC

Spécifiez le nom d’hôte pour l’URL de connexion dans la chaîne de connexion. Pour plus d’informations, voir Configuration du pilote JDBC.

jdbc:snowflake://<organization_name>-<connection_name>.snowflakecomputing.com/?user=<username>&password=<password>

Par exemple :

jdbc:snowflake://MYORG-MYCONNECTION.snowflakecomputing.com/?user=jsmith&password=mySecurePassword

Vous pouvez également spécifier le nom d’hôte en utilisant une chaîne de connexion et un ensemble de propriétés :

String uri = "jdbc:snowflake://<organization_name>-<connection_name>.snowflakecomputing.com";

Properties props = new Properties();
props.put("user", "<username>");
props.put("password", "<password>");

Connection conn = DriverManager.getConnection(uri, props);

Par exemple :

String uri = "jdbc:snowflake://MYORG-MYCONNECTION.snowflakecomputing.com";

Properties props = new Properties();
props.put("user", "jsmith");
props.put("password", "mySecurePassword");

Connection conn = DriverManager.getConnection(uri, props);

Pilote ODBC

Spécifiez le nom d’hôte pour l’URL de connexion dans le fichier ODBC INI. Pour plus d’informations sur les paramètres de connexion, voir Paramètres de configuration et de connexion ODBC.

[ODBC Data Sources]
<account_name> = SnowflakeDSIIDriver

[<dsn_name>]
Description     = SnowflakeDB
Driver          = SnowflakeDSIIDriver
Locale          = en-US
SERVER          = <organization_name>-<connection_name>.snowflakecomputing.com

Par exemple :

[ODBC Data Sources]
myaccount = SnowflakeDSIIDriver

[client_redirect]
Description     = SnowflakeDB
Driver          = SnowflakeDSIIDriver
Locale          = en-US
SERVER          = MYORG-MYCONNECTION.snowflakecomputing.com

Pilote Node.js

Spécifiez le nom d’hôte pour l’URL de connexion dans le paramètre account. Pour plus d’informations sur les paramètres de connexion, voir Utilisation du pilote Node.js.

var configuration = {
  username: '<username>',
  password: '<password>',
  account: <organization_name>-<connection_name>.
}

var connection = snowflake.createConnection(configuration)

Par exemple :

var configuration = {
  username: 'jsmith',
  password: 'mySecurePassword',
  account: MYORG-MYCONNECTION.
}

var connection = snowflake.createConnection(configuration)

Pilote Go Snowflake

Spécifiez le nom d’hôte pour l’URL de connexion dans le paramètre Account. Pour plus d’informations, voir Pilote Go Snowflake.

cfg := &Config{
  Account: "<organization_name>-<connection_name>",
  User: "<username>",
  Password: "<password>"
}

dsn, err := DSN(cfg)

Par exemple :

cfg := &Config{
  Account: "MYORG-MYCONNECTION",
  User: "jsmith",
  Password: "mySecurePassword"
}

dsn, err := DSN(cfg)

Authentification et redirection des clients

Les utilisateurs doivent être provisionnés dans le compte source et sur chaque compte cible.

Authentification fédérée et SSO

Configurez l’authentification fédérée séparément dans chaque compte cible. Fournissez les détails du fournisseur d’identité (IdP) en utilisant les options de configuration dans Fonctions SSO SAML avancées :

Note

Snowflake recommande de configurer votre fournisseur d’identité conforme SAML 2.0 (IdP) avec l’URL de connexion plutôt qu’une URL de compte afin que les utilisateurs soient redirigés vers le bon compte en cas de basculement.

OAuth

Configurez un objet d’intégration de sécurité pour OAuth dans chaque compte cible. L’objet de sécurité doit être identique au même objet dans le compte source. Pour obtenir des instructions, reportez-vous à la section appropriée :

Comportement de redirection OAuth

Si vous utilisez Snowflake OAuth pour authentifier une connexion client et que vous vous connectez à Snowflake à l’aide d’une URL de connexion, vous êtes invité à vous réauthentifier si l’URL de connexion est redirigée vers un autre compte (par exemple, en cas de basculement). Les jetons OAuth de Snowflake sont valables pour une utilisation dans un compte spécifique. Lorsqu’une URL de connexion est mise à jour pour pointer vers un compte dans un déploiement différent, le jeton OAuth existant devient non valide.

Dans le cas d’un basculement, lorsque l’URL de connexion est mise à jour vers le nouveau compte, le client se déconnecte avec une erreur invalid OAuth access token. Vous devez vous ré-authentifier et consentir aux autorisations pour rétablir la connexion.

Vérification de l’URL de connexion utilisée par vos utilisateurs

Interrogez la famille LOGIN_HISTORY , LOGIN_HISTORY_BY_USER de fonctions de table pour afficher l’activité de connexion de vos utilisateurs au cours des 7 derniers jours. La sortie indique quels utilisateurs et clients Snowflake ont utilisé une URL de connexion. Les colonnes REPORTED_CLIENT_TYPE et REPORTED_CLIENT_VERSION affichent le client et la version utilisés pour chaque connexion à Snowflake, et la colonne CONNECTION affiche l’URL de connexion utilisée, le cas échéant.

Par exemple, récupérez au maximum 100 événements de connexion de chaque utilisateur que votre rôle actuel est autorisé à surveiller durant les 72 dernières heures :

SELECT *
FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY(DATEADD('HOURS',-72,CURRENT_TIMESTAMP()),CURRENT_TIMESTAMP()))
ORDER BY EVENT_TIMESTAMP;

Rediriger les connexions du client

En cas de panne de service dans la région où se trouve la connexion primaire, redirigez la connexion du client vers un compte qui stocke une connexion secondaire.

Promouvoir une connexion secondaire pour servir de connexion primaire

Le lancement de la redirection implique la promotion d’une connexion secondaire dans une région disponible pour servir de connexion primaire en utilisant ALTER CONNECTION. Simultanément, l’ancienne connexion primaire devient une connexion secondaire.

Exécutez les instructions SQL de cette section dans le compte cible contenant la connexion secondaire actuelle que vous promouvez.

Exemple :

-- view all connections
SHOW CONNECTIONS;

+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+--------------------------------------------+
| snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                             |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------|-------------------------------------|--------------------------------------------|
| AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | MYORG-MYCONNECTION.snowflakecomputing.com  |
| AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | MYORG-MYCONNECTION.snowflakecomputing.com  |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+--------------------------------------------+

-- promote the secondary connection to serve as the primary connection
ALTER CONNECTION myconnection PRIMARY;

-- verify that the former secondary connection was promoted successfully
SHOW CONNECTIONS;

+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+--------------------------------------------+
| snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                             |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------|-------------------------------------|--------------------------------------------|
| AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | MYORG-MYCONNECTION.snowflakecomputing.com  |
| AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | MYORG-MYCONNECTION.snowflakecomputing.com  |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+--------------------------------------------+

Vérification de la mise à jour de l’URL de connexion

Pour vérifier que l’URL de connexion a été mise à jour, vous pouvez confirmer la région de votre connexion actuelle. Utilisez l’URL de connexion pour vous connecter à Snowflake et exécuter la fonction CURRENT_REGION.

select current_region();

Limites actuelles de la redirection des clients

  • La redirection des clients n’est actuellement pas prise en charge pour les comptes lecteurs.

  • La connectivité privée à la nouvelle interface Web via des URLs AWS PrivateLink ou Microsoft Azure Private Link n’est pas prise en charge actuellement.

  • Les connexions clients utilisant une URL de connexion et une intégration OAuth nécessitent une nouvelle authentification lorsque l’URL de connexion est mise à jour pour pointer vers un compte différent. Voir Comportement de redirection OAuth pour plus de détails.