Redirecionamento de conexões do cliente¶
O Redirecionamento do cliente permite redirecionar suas conexões de clientes para contas Snowflake em diferentes regiões para continuidade de negócios e recuperação de desastres, ou ao migrar sua conta para outra região ou plataforma de nuvem.
Neste tópico:
Introdução ao Redirecionamento do cliente¶
O Redirecionamento do cliente é implementado através de um objeto de conexão do Snowflake. O objeto de conexão armazena uma URL de conexão segura que você usa com um cliente Snowflake para se conectar ao Snowflake.
O nome de host na URL da conexão é composto pelo nome de sua organização e o nome do objeto de conexão, além de um nome de domínio comum:
organization_name-connection_name.snowflakecomputing.com
Observe que este nome de host não especifica a conta à qual você está se conectando. Um administrador de conta determina a conta a ser usada designando a conexão nessa conta para servir como a conexão primária. Quando você usa a URL da conexão para conectar-se ao Snowflake, está se conectando à conta que contém a conexão primária.
Se ocorrer uma interrupção em uma região ou plataforma de nuvem e a interrupção afetar a conta com a conexão primária, o administrador pode promover uma conexão em uma conta diferente em uma região ou plataforma de nuvem diferente para servir como a conexão primária.
Durante desta interrupção, você pode continuar a usar a mesma URL de conexão para se conectar ao Snowflake. O Snowflake resolve a URL da conexão à conta com a nova conexão promovida (a conta fora da região ou plataforma de nuvem afetada pela interrupção).
Nota
As contas Snowflake que armazenam as conexões primária e secundária devem ser hospedadas em diferentes regiões.
Fluxo do Redirecionamento do cliente¶
Complete as etapas em Configuração do Redirecionamento do cliente (neste tópico) para criar uma URL de conexão para conexões de clientes. Isto inclui a criação de uma conexão primária e conexões secundárias vinculadas.
Atualize clientes Snowflake para se conectar usando a URL de conexão. Uso de uma URL de conexão (neste tópico) contém uma lista de clientes com suporte e detalhes de conexão.
No caso de uma interrupção de serviço na região onde a conexão primária está localizada, complete as etapas em Redirecionamento de conexões do cliente (neste tópico) para atualizar a URL da conexão para redirecionar para uma conexão secundária.
Quando a interrupção for resolvida, complete as etapas em Redirecionamento de conexões do cliente para redirecionar as conexões do cliente de volta para a conexão primária original.
Os diagramas a seguir ilustram o fluxo do Redirecionamento do cliente para duas contas na mesma organização mas em regiões diferentes (Region A
e Region B
) na mesma ou em plataformas de nuvem diferentes.
A conexão primária está em Account 1
em Region A
. Clientes Snowflake usando a URL da conexão se conectam a Account 1
.
Uma interrupção de serviço em Region A
resulta em falhas nas conexões de clientes:
A conexão em Account 2
em Region B
é promovida para atuar como a conexão primária. Clientes Snowflake usando a URL da conexão agora se conectam a Account 2
.
Exemplo¶
As seguintes instruções SQL passam pelo fluxo de trabalho de redirecionamento do cliente. Cada etapa é explicada em detalhes nas seções que se seguem neste tópico.
Conexões de cliente normais: configurar o Redirecionamento do cliente¶
Executado na conta de origem¶
Crie uma nova conexão primária e permita o failover para outras contas em sua organização. Cada conta que é habilitada para failover deve estar em uma região diferente da conta com a conexão primária.
Observe a coluna account_name
na saída de SHOW REPLICATION ACCOUNTS para cada conta a ser habilitada para failover.
-- Create a new primary connection
CREATE CONNECTION myconnection;
-- View accounts in your organization that are enabled for replication
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;
Se a conectividade privada ao serviço Snowflake estiver habilitada para sua conta Snowflake, você deve criar e gerenciar um registro DNS CNAME para sua URL de conexão. Para obter mais detalhes, consulte Configuração do registro DNS CNAME para conectividade privada com o serviço do Snowflake.
Executado na conta de destino¶
Crie uma conexão secundária ligada à conexão primária. O nome da conexão secundária deve ser o mesmo nome da conexão primária.
CREATE CONNECTION myconnection
AS REPLICA OF myorg.myaccount1.myconnection;
Se a conectividade privada ao serviço Snowflake estiver habilitada para sua conta Snowflake, você deve criar ou atualizar um registro DNS CNAME para sua URL de conexão. Para obter mais detalhes, consulte Modificação do registro DNS CNAME para conectividade privada com o serviço do Snowflake.
Interrupção na região de origem: failover¶
Se ocorrer uma interrupção na região onde a conexão primária está localizada, promova uma conexão secundária em uma região diferente para servir como conexão primária.
Executado na conta de destino¶
ALTER CONNECTION myconnection PRIMARY;
Se a conectividade privada ao serviço Snowflake estiver habilitada para sua conta Snowflake, você deve criar ou atualizar um registro DNS CNAME para sua URL de conexão. Para obter mais detalhes, consulte Modificação do registro DNS CNAME para conectividade privada com o serviço do Snowflake.
Interrupção resolvida: failback¶
Uma vez resolvido o problema, promova a conexão primária original para servir novamente como a conexão primária.
Executado na conta de origem¶
Execute o seguinte comando da conta com a conexão que você deseja promover para primária:
ALTER CONNECTION myconnection PRIMARY;
Se a conectividade privada ao serviço Snowflake estiver habilitada para sua conta Snowflake, você deve criar ou atualizar um registro DNS CNAME para sua URL de conexão. Para obter mais detalhes, consulte Modificação do registro DNS CNAME para conectividade privada com o serviço do Snowflake.
Configuração do Redirecionamento do cliente¶
Esta seção descreve como criar uma conexão primária e uma ou mais conexões secundárias em um grupo de conexões.
Pré-requisito¶
Para habilitar o recurso Client Redirect para suas contas, um administrador da organização (um usuário com a função ORGADMIN) deve habilitar a replicação para duas ou mais contas. Para permitir a replicação, consulte Pré-requisito: Habilitar a replicação para contas na organização para obter instruções detalhadas.
Nota
Somente administradores de conta (usuários com a função ACCOUNTADMIN) podem executar os comandos SQL nesta seção.
Criação de uma conexão primária¶
Importante
O Snowflake atribuiu à sua organização um nome único e gerado quando ela foi criada no sistema. O nome da organização é uma parte da URL de conexão definida em um objeto de conexão e apresentada pelos clientes Snowflake para acessar uma conta. Antes de criar qualquer objeto de conexão, verifique se o nome de sua organização no Snowflake é satisfatório. Para mudar o nome de sua organização no sistema, contate o suporte Snowflake.
Crie uma nova conexão primária usando CREATE CONNECTION. O nome de cada conexão primária deve ser único em todos os nomes de conexão e conta na organização e não pode conter mais de 31 caracteres.
O nome da conexão está incluído como parte da URL de conexão usada para conectar a contas Snowflake.
Por exemplo, para criar uma conexão chamada
myconnection
:CREATE CONNECTION myconnection;
Modifique esta conexão primária usando uma instrução ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS. Forneça uma lista de contas separadas por vírgula em sua organização que possam armazenar uma opção de failover para esta conexão (ou seja, uma conexão secundária).
Qualquer conta que armazene uma conexão secundária deve ser hospedada em uma região diferente da conta que armazena a conexão primária. O Redirecionamento do cliente só opera com sucesso em diferentes regiões. Por exemplo, se você tentar redirecionar as conexões do cliente de
account1
paraaccount2
na mesma região, o redirecionamento do cliente não funciona.Para ver a lista completa das contas em sua organização que estão habilitadas para replicação, execute SHOW REPLICATION ACCOUNTS.
Por exemplo, permita que cada uma das contas
myaccount2
emyaccount3
na organizaçãomyorg
armazenem uma conexão secundária para a conexãomyconnection
:ALTER CONNECTION myconnection ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
Execute o comando SHOW CONNECTIONS para visualizar os detalhes da conexão.
SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | 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 | MYORG | MYACCOUNTLOCATOR1 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Criação de uma conexão secundária¶
Crie uma conexão secundária em uma ou mais contas, vinculada a uma conexão primária usando CREATE CONNECTION … AS REPLICA OF. Note que você só pode criar uma conexão secundária em uma conta especificada na instrução ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS em Criação de uma conexão primária.
Execute uma instrução CREATE CONNECTION … AS REPLICA OF em cada conta de destino para criar uma réplica da conexão primária especificada.
Importante
Cada conexão secundária precisa ter o mesmo nome que sua conexão primária. O nome da conexão está incluído na URL de conexão.
Execute as instruções SQL desta seção na conta de destino onde você deseja criar uma conexão secundária.
Execute o comando SHOW CONNECTIONS para visualizar todas as conexões. Copie o valor da coluna
primary
para a conexão primária. Você usará este valor ao criar a conexão secundária na próxima etapa.SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | 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 | MYORG | MYACCOUNTLOCATOR1 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Execute o comando CREATE CONNECTION … AS REPLICA OF para criar uma conexão secundária.
Por exemplo, crie uma conexão secundária chamada
myconnection
que está vinculada à conexão primáriamyorg.myaccount1.myconnection
. ApósAS REPLICA OF
, cole o nome totalmente qualificado da conexão primária (o nome que você copiou da saída SHOW CONNECTIONS na etapa anterior).CREATE CONNECTION myconnection AS REPLICA OF MYORG.MYACCOUNT1.MYCONNECTION;
Execute o comando SHOW CONNECTIONS para verificar se a conexão secundária foi criada.
SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | 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 | MYORG | MYACCOUNTLOCATOR1 | | AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Configuração do registro DNS CNAME para conectividade privada com o serviço do Snowflake¶
Se a conectividade privada ao serviço Snowflake estiver ativada para sua conta Snowflake, então seu administrador de rede deve criar e gerenciar um registro DNS CNAME para sua URL de conexão. Para todas as outras contas, o Snowflake cria e gerencia o registro CNAME.
Estas etapas usam AWS PrivateLink como exemplo, e as etapas são as mesmas se sua conta Snowflake usar o Azure Private Link ou o Google Cloud Private Service Connect:
Execute SHOW CONNECTIONS em uma de suas contas na qual o redirecionamento do cliente esteja habilitado. Por exemplo, suponha que AWS PrivateLink esteja habilitado para
myaccount1
emyaccount2
.SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | 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 | MYORG | MYACCOUNTLOCATOR1 | |--------------------|-------------------------------|---------------------|-------------------|-----------------|---------------|-------------------------------|-------------------------------------|-------------------------------------------|-------------------|-------------------| | 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 | MYORG | MYACCOUNTLOCATOR1 | | AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Observe que a saída deste comando na coluna CONNECTION_URL deve corresponder à lista
privatelink-connection-urls
ao chamar a função SYSTEM$GET_PRIVATELINK_CONFIG emmyaccount1
oumyaccount2
. Esta lista já contém a conexão URL formatada com o segmentoprivatelink
(como mostrado na próxima etapa). Opcionalmente, você pode executar o comando nesta etapa ou chamar a função. Se chamar a função, use os URLs como estão sem nenhuma outra modificação.Registre o valor da coluna CONNECTION_URL. Adicione um segmento
privatelink
à URL logo antes desnowflakecomputing.com
(myorg-myconnection.privatelink.snowflakecomputing.com
, neste exemplo).Usando uma ferramenta fornecida por seu provedor de DNS, crie um registro CNAME para a URL de conexão:
Defina o domínio (ou alias) usando o valor modificado da coluna CONNECTION_URL.
Defina o nome do host de destino como a URL completa da conta Snowflake para a conta que armazena sua conexão primária, incluindo os segmentos adicionais que identificam a região e a plataforma de nuvem onde sua conta está hospedada e o suporte para AWS PrivateLink. Este é o nome da conta para onde as conexões de cliente com a URL de conexão serão redirecionadas.
Por exemplo:
myaccount1.us-west-2.privatelink.snowflakecomputing.com.
Alternativamente, use a URL da organização e nome da conta.
Por exemplo:
myorg-myaccount1.privatelink.snowflakecomputing.com.
Observe o ponto final, que deve ser incluído.
Os usuários se conectam ao Snowflake usando o seguinte formato de URL de conexão:
organization_name-connection_name.privatelink.snowflakecomputing.com
Onde:
organization_name
Nome de sua organização no Snowflake. As contas Snowflake a que seus usuários se conectam estão contidas nesta organização.
connection_name
Nome do objeto de conexão.
Para obter mais informações, consulte:
Uso de uma URL de conexão (neste tópico).
Modificação do registro DNS CNAME para conectividade privada com o serviço do Snowflake (neste tópico).
Uso de uma URL de conexão¶
Esta seção fornece instruções para fazer referência à URL de conexão na configuração de vários clientes Snowflake.
Clientes Snowflake com suporte¶
O Redirecionamento do cliente tem suporte por Snowsight e Console clássico do Snowflake. Além disso, as seguintes versões de clientes Snowflake (e superiores) suportam o Redirecionamento do cliente:
Cliente Snowflake |
Versão mínima com suporte |
---|---|
SnowSQL |
1.1.82 |
Conector Snowflake para Python |
1.8.3 |
Driver Node.js |
1.2.0 |
Driver Go Snowflake |
1.2.0 |
Driver .NET |
1.0.0 |
Driver JDBC |
3.8.4 |
Driver ODBC |
2.19.4 |
Snowpark |
Todas as versões |
Configuração de clientes Snowflake¶
Use o seguinte nome de host para a URL de conexão quando se conectar ao Snowflake:
Nome do host:
organization_name-connection_name.snowflakecomputing.com
Onde:
organization_name
Nome de sua organização no Snowflake. As contas Snowflake a que seus usuários se conectam estão contidas nesta organização.
connection_name
Nome do objeto de conexão.
Importante
Conectividade privada com o serviço do Snowflake
Os clientes que utilizam conectividade privada ao serviço Snowflake precisam adicionar um segmento privatelink
à URL pouco antes do snowflakecomputing.com
:
organization_name-connection_name.privatelink.snowflakecomputing.com
Snowsight¶
Digite o seguinte no campo do nome da conta em app.snowflake.com:
<organization-name>-<connection-name>
Por exemplo:
myorg-myconnection
Ao usar organization-connection
para fazer login, o Snowsight navega para a região e localizador específicos da conexão primária atual. Durante uma interrupção, uma vez que a conexão tenha sido redirecionada, os usuários devem se conectar novamente via organization-connection
para se conectar à nova primária.
Console clássico do Snowflake¶
Digite a seguinte URL em um navegador da Web:
https://<organization_name>-<connection_name>.snowflakecomputing.com/
Por exemplo:
https://myorg-myconnection.snowflakecomputing.com/
SnowSQL¶
Especifique o nome do host para a URL de conexão no parâmetro de conexão accountname
no arquivo SnowSQL config
. Para obter mais informações sobre o arquivo config
, consulte Configuração do SnowSQL.
accountname = <organization_name>-<connection_name>
username = <username>
password = <password>
Por exemplo:
accountname = myorg-myconnection
username = jsmith
password = mySecurePassword
Conector Snowflake para Python¶
Especifique o nome do host para a URL de conexão no parâmetro de conexão account
ao chamar a função de conexão. Para obter mais informações, consulte API do conector Python e Uso do conector Python.
con = snowflake.connector.connect (
account = <organization_name>-<connection_name>
user = <username>
password = <password>
)
Por exemplo:
con = snowflake.connector.connect (
account = myorg-myconnection
user = jsmith
password = mySecurePassword
)
Driver JDBC¶
Especifique o nome do host para a URL de conexão na cadeia de conexão. Para obter mais informações, consulte Configuração do driver JDBC.
jdbc:snowflake://<organization_name>-<connection_name>.snowflakecomputing.com/?user=<username>&password=<password>
Por exemplo:
jdbc:snowflake://myorg-myconnection.snowflakecomputing.com/?user=jsmith&password=mySecurePassword
Driver ODBC¶
Especifique o nome do host para a URL de conexão no parâmetro de conexão de servidor. Para obter mais informações sobre os parâmetros de conexão, consulte Parâmetros de configuração e conexão do ODBC.
[ODBC Data Sources]
<account_name> = SnowflakeDSIIDriver
[<dsn_name>]
Description = SnowflakeDB
Driver = SnowflakeDSIIDriver
Locale = en-US
SERVER = <organization_name>-<connection_name>.snowflakecomputing.com
Por exemplo:
[ODBC Data Sources]
myaccount = SnowflakeDSIIDriver
[client_redirect]
Description = SnowflakeDB
Driver = SnowflakeDSIIDriver
Locale = en-US
SERVER = myorg-myconnection.snowflakecomputing.com
Driver Node.js¶
Especifique o nome do host para a URL de conexão na opção de conexão account
. Para obter mais informações sobre os parâmetros de conexão, consulte Opções de conexão do Node.js.
var configuration = {
username: '<username>',
password: '<password>',
account: <organization_name>-<connection_name>.
}
var connection = snowflake.createConnection(configuration)
Por exemplo:
var configuration = {
username: 'jsmith',
password: 'mySecurePassword',
account: myorg-myconnection.
}
var connection = snowflake.createConnection(configuration)
Driver Go Snowflake¶
Especifique o nome do host para a URL de conexão no parâmetro Account
. Para obter mais informações, consulte Driver Go Snowflake.
cfg := &Config{
Account: "<organization_name>-<connection_name>",
User: "<username>",
Password: "<password>"
}
dsn, err := DSN(cfg)
Por exemplo:
cfg := &Config{
Account: "myorg-myconnection",
User: "jsmith",
Password: "mySecurePassword"
}
dsn, err := DSN(cfg)
Snowpark¶
Snowpark Python¶
Especifique o nome do host para a URL de conexão no parâmetro de conexão account
no dicionário Python (dict
) usado para estabelecer uma sessão. Para obter mais informações sobre a criação de uma sessão, consulte Como criar uma sessão para o Snowpark Python.
connection_parameters = {
"account": "<organization_name>-<connection_name>",
"user": "<snowflake_user>",
"password": "<snowflake_password>"
}
Por exemplo:
connection_parameters = {
"account": "myorg-myconnection",
"user": "jsmith",
"password": "mySecurePassword"
}
Snowpark Java¶
Especifique a URL de conexão na propriedade URL
no arquivo de propriedades ou Map
que você usa para estabelecer a sessão. Para obter mais informações sobre a criação de uma sessão, consulte Como criar uma sessão para o Snowpark Java.
# Properties file (a text file) for establishing a Snowpark session
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com
Por exemplo:
# Properties file (a text file) for establishing a Snowpark session
URL = https://myorg-myconnection.snowflakecomputing.com
Snowpark Scala¶
Especifique a URL de conexão na propriedade URL
no arquivo de propriedades ou Map
que você usa para estabelecer a sessão. Para obter mais informações sobre a criação de uma sessão, consulte Como criar uma sessão para o Snowpark Scala.
# Properties file (a text file) for establishing a Snowpark session
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com
Por exemplo:
# Properties file (a text file) for establishing a Snowpark session
URL = https://myorg-myconnection.snowflakecomputing.com
Autenticação e redirecionamento do cliente¶
Os usuários devem ser provisionados na conta de origem e em cada conta de destino.
Autenticação federada e SSO¶
Configure a autenticação federada separadamente em cada conta de destino. Forneça os detalhes do provedor de identidade (IdP) usando as opções de configuração em Configuração do Snowflake para usar a autenticação federada:
Nota
O Snowflake recomenda configurar seu provedor de identidade compatível com SAML 2.0 (IdP) com a URL de conexão ao invés de uma URL de conta para que os usuários sejam redirecionados para a conta correta em caso de failover.
OAuth¶
Configure um objeto de integração de segurança para OAuth em cada conta de destino. O objeto de integração de segurança deve ser idêntico ao mesmo objeto na conta de origem. Para instruções, consulte o tópico apropriado:
Para recuperar as propriedades de integração de segurança, consulte o comando DESCRIBE INTEGRATION para cada integração de segurança na conta de origem. Em seguida, recrie cada integração de segurança em uma conta de destino executando o comando CREATE INTEGRATION.
Comportamento de redirecionamento do OAuth¶
Se você estiver usando o Snowflake OAuth para autenticar uma conexão de cliente e estiver se conectando ao Snowflake usando uma URL de conexão, será solicitado a se reautenticar se a URL de conexão for redirecionada para outra conta (por exemplo, em caso de failover). Os tokens Snowflake OAuth são válidos para uso em uma conta específica. Quando uma URL de conexão é atualizada para apontar para uma conta em uma implantação diferente, o token OAuth existente torna-se inválido.
Em caso de falha, quando a URL de conexão for atualizada para a nova conta, o cliente se desconectará com um erro invalid OAuth access token
. Você deve se reautenticar e consentir nas permissões para restabelecer a conexão.
Verificação da URL de conexão usada por seus usuários¶
Consulte a família LOGIN_HISTORY , LOGIN_HISTORY_BY_USER de funções de tabela para ver a atividade de login de seus usuários nos últimos 7 dias. A saída indica quais usuários e clientes Snowflake têm usado uma URL de conexão. As colunas REPORTED_CLIENT_TYPE e REPORTED_CLIENT_VERSION exibem o cliente e a versão utilizada para cada conexão ao Snowflake, e a coluna CONNECTION exibe a URL de conexão utilizada, se houver.
Nota
Se um cliente se autentica através de um provedor de identidade (IdP) que está configurado com a URL da conta em vez da URL de conexão, o IdP direciona o cliente para a URL da conta após a autenticação estar completa. A coluna CONNECTION para este evento de login é NULL. Consulte Autenticação e redirecionamento do cliente (neste tópico).
Por exemplo, recupere até 100 eventos de login de cada usuário que sua função atual pode monitorar nas últimas 72 horas:
SELECT *
FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY(DATEADD('HOURS',-72,CURRENT_TIMESTAMP()),CURRENT_TIMESTAMP()))
ORDER BY EVENT_TIMESTAMP;
Redirecionamento de conexões do cliente¶
No caso de uma interrupção de serviço na região onde a conexão primária está localizada, redirecione a conexão do cliente para uma conta que armazena uma conexão secundária.
Promoção de uma conexão secundária para servir como conexão primária¶
Iniciar o redirecionamento envolve a promoção de uma conexão secundária em uma região disponível para servir como conexão primária usando ALTER CONNECTION. Ao mesmo tempo, a conexão primária anterior torna-se uma conexão secundária.
Execute as instruções SQL desta seção na conta de destino que contém a conexão secundária atual que você está promovendo.
Exemplo:
-- view all connections
SHOW CONNECTIONS;
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| 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 | MYORG | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
-- 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 | organization_name | account_locator |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Modificação do registro DNS CNAME para conectividade privada com o serviço do Snowflake¶
Para redirecionar as conexões do cliente para uma conta secundária, seu administrador de rede deve modificar o registro DNS CNAME criado em Configuração do registro DNS CNAME para conectividade privada com o serviço do Snowflake.
Usando uma ferramenta fornecida por seu provedor de DNS, modifique o registro CNAME para a URL de conexão.
Defina o nome do host de destino como a URL completa da conta Snowflake para a conta que armazena sua nova conexão primária, incluindo os segmentos adicionais que identificam a região e a plataforma de nuvem onde sua conta está hospedada e o suporte para AWS PrivateLink, Azure Private Link ou Google Cloud Private Service Connect. Este é o nome da conta para onde as conexões do cliente com a URL de conexão serão agora redirecionadas.
Por exemplo:
myaccount1.us-east-1.privatelink.snowflakecomputing.com.
(Observe o ponto final, que deve ser incluído.)
Nota
Você pode configurar a conectividade privada e o redirecionamento do cliente para funcionar com a Snowsight. Certifique-se de que suas atualizações CNAME incluam os valores Snowsight da saída da função SYSTEM$GET_PRIVATELINK_CONFIG. Para obter mais detalhes, consulte conectividade privada e Snowsight.
Verificar se a URL de conexão está atualizada¶
Para verificar se a URL de conexão foi atualizada, você pode confirmar a região de sua conexão atual. Use a URL de conexão para se conectar ao Snowflake e execute a função CURRENT_REGION.
select current_region();
Limitações atuais do redirecionamento do cliente¶
As conexões de clientes usando uma URL de conexão e integração OAuth requerem reautenticação quando a URL de conexão é atualizada para apontar para uma conta diferente. Consulte Comportamento de redirecionamento do OAuth (neste tópico) para obter mais detalhes.
Os navegadores podem levar vários minutos para serem redirecionados devido ao cache do navegador.
Se você precisar verificar se o redirecionamento funciona, você pode se conectar ao Snowflake com um cliente diferente.
Como alternativa, abra uma nova janela privada do navegador (por exemplo, modo incógnito no Google Chrome) para evitar problemas de cache do navegador. Observe que alguns navegadores em modo privado ou incógnito ainda podem armazenar dados. Para evitar o uso do cache do navegador, feche quaisquer janelas e abas dos navegadores privados abertos antes de abrir uma nova janela de navegador privado.