Replicação de integrações de segurança e políticas de redes em múltiplas contas¶
Este tópico fornece informações sobre como replicar integrações de segurança, juntamente com o uso de failover/failback com cada um desses objetos, e presume familiaridade com replicação e failover/failback com outros objetos em nível de conta (por exemplo, usuários, funções, warehouses).
Para obter mais detalhes, consulte Introdução à replicação e failover em várias contas.
Esses objetos e serviços têm suporte para regiões e para plataformas de nuvem.
Neste tópico:
Visão geral¶
O Snowflake oferece suporte à replicação de políticas de rede e integrações de segurança para SSO federado (isto é, SAML2), OAuth e SCIM, além de habilitar o failover/failback para cada integração e política de redes.
A abordagem geral para testar replicação e failover/failback com cada política de redes e integração de segurança é a seguinte:
Identificar a conta de origem e a conta de destino para replicação, bem como identificar a URL de conexão.
Concluir as etapas na conta de origem.
Concluir as etapas na conta de destino.
Testar o failover/failback.
Observe que, como as políticas de redes e as integrações de segurança têm casos de uso diferentes, as etapas exatos para a conta de origem e a conta de destino com relação a cada objeto podem ter algumas diferenças.
Para obter mais detalhes, consulte:
Replicação de integrações de segurança SAML2¶
A replicação de uma integração de segurança SAML2 vincula a conta de origem e a conta de destino ao provedor de identidade, especificando a URL de conexão na definição de integração de segurança SAML2.
É importante atualizar o provedor de identidade para especificar a URL de conexão e é importante que os usuários existam na conta de origem. Sem essas atualizações, a verificação do usuário não ocorre, o que resultará na incapacidade do usuário de acessar a conta de destino.
- Limitações atuais:
Para SSO de SAML para o Snowflake, só há suporte para replicar uma integração de segurança SAML2 que especifica a URL de conexão na conexão primária atual, e não há suporte na conexão secundária. Observe que, para failover, o resultado promove uma conexão secundária para servir como conexão primária. Após o failover, o SSO de SAML trabalha na nova conexão primária.
Se o SSO de SAML for necessário tanto para conexões primárias quanto secundárias, então crie e gerencie integrações de segurança SAML2 independentemente em ambas as contas Snowflake.
Para esse procedimento, considere o seguinte:
Conta de origem:
https://example-northamericawest.snowflakecomputing.com/
Conta de destino:
https://example-northamericaeast.snowflakecomputing.com/
URL de conexão:
https://example-global.snowflakecomputing.com
Não existe uma conexão secundária na conta de destino.
Este procedimento é um exemplo representativo para fazer o seguinte:
Replicar uma integração de segurança SAML2 da conta de origem para a conta de destino.
Testar o failover.
Promover a conexão secundária na conta de origem para servir como conexão primária.
Etapas da conta de origem (inclui etapas de IdP):
Se a conta de origem já estiver configurada para Failover/failback do banco de dados e redirecionamento do cliente, pule para a próxima etapa.
Caso contrário, habilite o failover usando um comando ALTER CONNECTION:
alter connection global enable failover to accounts example.northamericaeast;
Usando Okta como exemplo representativo do provedor de identidade, crie um Aplicativo Snowflake no Okta que especifique a URL de conexão. Atualize os campos Okta da seguinte forma:
Label:
Snowflake
Subdomain:
example-global
Browser plugin auto-submit: marque a caixa para ativar o login automático quando um usuário chega à página de login.
Na conta de origem, atualizar a integração de segurança SAML2 para especificar a URL de conexão para as propriedades de integração de segurança
saml2_snowflake_issuer_url
esaml2_snowflake_acs_url
.create or replace security integration my_idp type = saml2 enabled = true saml2_issuer = 'http://www.okta.com/exk6e8mmrgJPj68PH4x7' saml2_sso_url = 'https://example.okta.com/app/snowflake/exk6e8mmrgJPj68PH4x7/sso/saml' saml2_provider = 'OKTA' saml2_x509_cert='MIIDp...' saml2_sp_initiated_login_page_label = 'OKTA' saml2_enable_sp_initiated = true saml2_snowflake_issuer_url = 'https://example-global.snowflakecomputing.com' saml2_snowflake_acs_url = 'https://example-global.snowflakecomputing.com/fed/login';
No Okta, atribua o aplicativo Snowflake aos usuários. Para obter mais detalhes, consulte Atribuir uma integração de aplicativo a um usuário.
Verifique se o SSO para a conta de origem funciona para usuários especificados no aplicativo Snowflake no Okta e usuários na conta de origem.
Note que o SSO deve funcionar tanto para os fluxos SSO iniciados por IdP e iniciados pelo Snowflake. Para obter mais detalhes, consulte Fluxos de trabalho SSO suportados.
Na conta de origem, se ainda não existir um grupo de failover, crie um grupo de failover para incluir integrações de segurança. Observe que esse exemplo é representativo e inclui outros objetos de conta que podem ou não ser necessários para replicar.
Se já existir um grupo de failover, altere o grupo de failover para incluir integrações.
create failover group FG object_types = users, roles, warehouses, resource monitors, integrations allowed_integration_types = security integrations allowed_accounts = example.northamericaeast replication_schedule = '10 MINUTE';
Etapas da conta de destino:
Antes da replicação, verifique o número de usuários e integrações de segurança presentes na conta de destino executando os comandos SHOW USERS e SHOW INTEGRATIONS, respectivamente.
Crie uma conexão secundária. Para obter mais detalhes, consulte CREATE CONNECTION.
create connection GLOBAL as replica of example.northamericawest.global;
Crie um grupo secundário de failover na conta de destino. Para obter mais detalhes, consulte CREATE FAILOVER GROUP.
create failover group fg as replica of example.northamericawest.fg;
Ao criar um grupo secundário de failover, uma atualização inicial é executada automaticamente.
Para atualizar manualmente um grupo secundário de failover na conta de destino, execute a seguinte instrução. Para obter mais detalhes, consulte o comando ALTER FAILOVER GROUP.
alter failover group fg refresh;
Se a operação de atualização for bem-sucedida, a conta de destino deve incluir novos usuários que foram adicionados à conta de origem e não estavam anteriormente presentes na conta de destino. Da mesma forma, a conta de destino deve incluir a integração de segurança SAML2 que especifica a URL de conexão.
Verifique se a operação de atualização foi bem-sucedida executando os seguintes comandos:
SHOW INTEGRATIONS (deve incluir 1 nova integração)
SHOW USERS (deve incluir o número de novos usuários adicionados)
DESCRIBE INTEGRATION (para a integração
myidp
)
Promova a conexão secundária na conta de destino para servir como conexão primária. Após executar o seguinte comando, os usuários podem usar o SSO de SAML para se autenticar na nova conta de destino.
alter connection global primary;
Replicação de integrações de segurança SCIM¶
A replicação de uma integração de segurança SCIM permite que a conta de destino incorpore atualizações SCIM que são feitas na conta de origem (por exemplo, adição de novos usuários, adição de novas funções) após a atualização da conta de destino.
Depois de replicar a integração de segurança SCIM, ambas as contas Snowflake têm a capacidade de receber atualizações SCIM do provedor de identidade. Entretanto, o Snowflake permite especificar apenas uma conta como primária (ou seja, de origem) e é a conta primária que recebe atualizações SCIM do provedor de identidade.
Opcionalmente, você pode designar uma conta diferente como a conta primária para receber atualizações SCIM após a replicação da integração SCIM. Observe que a conta de destino só pode receber atualizações SCIM da conta de origem depois de atualizar a conta de destino.
Para esse procedimento, considere o seguinte:
Conta de origem:
https://example-northamericawest.snowflakecomputing.com/
Conta de destino:
https://example-northamericaeast.snowflakecomputing.com/
URL de conexão:
https://example-global.snowflakecomputing.com
Existe uma conexão secundária na conta de destino (ou seja, só são necessárias operações de atualização).
Este procedimento é um exemplo representativo para fazer o seguinte:
Replique uma integração de segurança SCIM da conta de origem para a conta de destino.
Adicione um novo usuário no Okta, mova o novo usuário para a conta de origem e replique o novo usuário para a conta de destino.
Atualize o grupo de failover.
Promova a conexão secundária na conta de destino para servir como conexão primária.
Etapas da conta de origem:
Execute SHOW CONNECTIONS para verificar se a conexão na conta de origem é a conexão primária. Se não for a conexão primária, use o comando ALTER CONNECTION para promover a conexão na conta de origem para servir como a conexão primária.
Se uma integração de segurança SCIM no Okta já estiver configurada na conta de origem, pule para a próxima etapa.
Caso contrário, configure uma integração de segurança Okta SCIM na conta de origem.
create role if not exists okta_provisioner; grant create user on account to role okta_provisioner; grant create role on account to role okta_provisioner; grant role okta_provisioner to role accountadmin; create or replace security integration okta_provisioning type = scim scim_client = 'okta' run_as_role = 'OKTA_PROVISIONER'; select system$generate_scim_access_token('OKTA_PROVISIONING');
Certifique-se de atualizar o aplicativo Okta SCIM para o Snowflake. Para obter mais detalhes, consulte Configuração do Okta.
No Okta, crie um novo usuário no aplicativo Okta para o Snowflake.
Verifique se o usuário foi movido para Snowflake executando um comando SHOW USERS no Snowflake.
Se o grupo de failover já especificar
security integrations
, pule para a próxima etapa. Esse é o caso se você já tiver configurado o grupo de failover para as finalidades do SSO de SAML na conta de destino (neste tópico).Caso contrário, modifique o grupo de failover existente usando um comando ALTERFAILOVERGROUP para especificar
security integrations
.alter failover group fG set object_types = users, roles, warehouses, resource monitors, integrations allowed_integration_types = security integrations;
Neste ponto, você pode opcionalmente atualizar o grupo secundário de failover como mostrado nas etapas da conta de destino para SCIM a fim de garantir que o novo usuário na conta de origem esteja na conta de destino.
A escolha de atualizar o grupo secundário de failover agora permite uma verificação fácil para garantir que a alteração na conta de origem, acrescentando um novo usuário nessa sequência, seja visível na conta de destino.
Entretanto, se você precisar ou preferir fazer o trabalho adicional no provedor de identidade, como modificar outros usuários ou atualizar atribuições de funções, você pode continuar a fazer esse trabalho agora e depois atualizar o grupo secundário de failover em uma operação posterior.
Etapas da conta de destino:
Antes da replicação, verifique o número de usuários e integrações de segurança presentes na conta de destino executando os comandos SHOW USERS e SHOW INTEGRATIONS, respectivamente.
Atualize o grupo secundário de failover para atualizar a conta de destino para incluir o novo usuário (e quaisquer outras alterações que foram feitas no Okta e na conta de origem).
alter failover group fg refresh;
Verifique se o novo usuário foi adicionado à conta de destino executando um comando SHOW USERS.
Opcionalmente, promova o grupo secundário de failover e a conexão secundária na conta de destino para primário. Isso promoverá a conta de destino para servir como a nova conta de origem.
Grupo de failover:
alter failover group fg primary;
Conexão:
alter connection global primary;
Replicação de integrações de segurança OAuth¶
A replicação das integrações de segurança OAuth inclui tanto as integrações de segurança Snowflake OAuth quanto as integrações de segurança OAuth externo.
Observe o seguinte:
- Snowflake OAuth:
Após a replicação e configuração do failover/failback, um usuário conectado à conta de origem ou à conta de destino por meio de um cliente OAuth não precisa se autenticar novamente na conta de destino.
- OAuth externo:
Após a replicação e configuração do failover/failback, um usuário conectado à conta de origem ou à conta de destino por meio de um cliente OAuth pode precisar se autenticar novamente na conta de destino.
A reautenticação provavelmente será necessária se o servidor de autorização OAuth não estiver configurado para emitir um token de atualização. Portanto, certifique-se de que o servidor de autorização OAuth emite tokens de atualização para que o cliente OAuth possa se conectar às contas Snowflake de origem e destino.
Para esse procedimento, considere o seguinte:
Conta de origem:
https://example-northamericawest.snowflakecomputing.com/
Conta de destino:
https://example-northamericaeast.snowflakecomputing.com/
URL de conexão:
https://example-global.snowflakecomputing.com
Existe uma conexão secundária na conta de destino (ou seja, só são necessárias operações de atualização).
As integrações de segurança Snowflake OAuth ou OAuth externo já existem na conta de origem.
Este procedimento é um exemplo representativo para fazer o seguinte:
Replique uma integração de segurança OAuth.
Atualize o grupo de failover.
Promova a conexão secundária na conta de destino para servir como conexão primária.
Etapas da conta de origem:
Se o grupo de failover já especificar
security integrations
, pule para a próxima etapa. Esse é o caso se você já tiver configurado o grupo de failover para as finalidades do SSO de SAML na conta de destino (neste tópico) ou SCIM (também neste tópico).Caso contrário, modifique o grupo de failover existente usando um comando ALTERFAILOVERGROUP para especificar
security integrations
.alter failover group fG set object_types = users, roles, warehouses, resource monitors, integrations allowed_integration_types = security integrations;
Etapas da conta de destino:
Atualize o grupo secundário de failover para atualizar a conta de destino para incluir os objetos de integração de segurança OAuth.
alter failover group fg refresh;
Verifique a conexão com cada conta Snowflake usando o cliente OAuth de sua escolha.
Opcionalmente, promova o grupo secundário de failover e a conexão secundária na conta de destino para primário. Isso promoverá a conta de destino para servir como a nova conta de origem.
Grupo de failover:
alter failover group fg primary;
Conexão:
alter connection global primary;
Se você concluiu a etapa anterior, verifique novamente se você consegue se conectar com cada conta Snowflake usando o cliente OAuth de sua escolha.
Replicação de políticas de redes¶
A replicação de uma política de redes da conta de origem para a conta de destino permite aos administradores restringir o acesso à conta de destino com base no identificador de rede da origem de uma solicitação recebida.
Replicação de referências e atribuições de políticas de redes¶
A replicação de uma política de redes replica o objeto da política de redes e quaisquer referências/atribuições da política de redes. Por exemplo, se uma política de redes fizer referência a uma regra de rede na conta de origem e ambos os objetos existirem na conta de destino, a política de redes usará a mesma regra de rede na conta de destino. De forma semelhante, se uma política de redes for atribuída a um usuário e o usuário existir tanto na conta de origem quanto na conta de destino, a replicação da política de redes atribui a política de redes ao usuário na conta de destino.
A replicação de referências e atribuições de política de redes pressupõe que os objetos referenciados e os objetos aos quais a política de redes está atribuída também sejam replicados. Se você não replicar os tipos de objeto de suporte corretamente, o Snowflake falhará na operação de atualização na conta de destino.
Se um objeto referenciado ou objeto ao qual a política de redes está atribuída ainda não existir na conta de destino, inclua seu tipo de objeto no mesmo grupo de replicação ou failover que a política de redes. Os exemplos a seguir demonstram as configurações necessárias se os objetos de suporte ainda não existirem na conta de destino.
- Políticas de rede que usam regras de rede
O grupo de replicação ou failover deve incluir
network policies
edatabases
. As regras de rede são objetos no nível do esquema e são replicadas com o banco de dados no qual estão contidas. Por exemplo:CREATE FAILOVER GROUP fg OBJECT_TYPES = network policies, databases ALLOWED_DATABASES = testdb2 ALLOWED_ACCOUNTS = myorg.myaccount2;
- Políticas de rede atribuídas a uma conta
O grupo de replicação ou failover deve incluir
network policies
eaccount parameters
. Se a política de redes usar regras de rede, você também deverá incluirdatabases
. Por exemplo:CREATE FAILOVER GROUP fg OBJECT_TYPES = network policies, account parameters, databases ALLOWED_DATABASES = testdb2 ALLOWED_ACCOUNTS = myorg.myaccount2;
- Políticas de redes atribuídas a um usuário
O grupo de replicação ou failover deve incluir
network policies
eusers
. Se a política de redes usar regras de rede, você também deverá incluirdatabases
. Por exemplo:CREATE FAILOVER GROUP fg OBJECT_TYPES = network policies, users, databases ALLOWED_DATABASES = testdb2 ALLOWED_ACCOUNTS = myorg.myaccount2;
- Políticas de redes atribuídas a uma integração de segurança
A replicação de política de redes se aplica a políticas de redes especificadas no Snowflake OAuth e integrações de segurança de SCIM, desde que o grupo de replicação ou failover inclua
integrations
,security integrations
enetwork policies
. Se a política de redes usar regras de rede, você também deverá incluirdatabases
.CREATE FAILOVER GROUP fg OBJECT_TYPES = network policies, integrations, databases ALLOWED_DATABASES = testdb2 ALLOWED_INTEGRATION_TYPES = security integrations ALLOWED_ACCOUNTS = myorg.myaccount2;
Exemplo¶
Para este exemplo, suponha o seguinte:
Conta de origem:
https://example-northamericawest.snowflakecomputing.com/
Conta de destino:
https://example-northamericaeast.snowflakecomputing.com/
URL de conexão:
https://example-global.snowflakecomputing.com
Existe uma conexão secundária na conta de destino (ou seja, só são necessárias operações de atualização).
As políticas de redes existem na conta de origem.
As integrações de segurança Snowflake OAuth e/ou SCIM já existem na conta de origem, e a integração especifica uma política de redes.
Este exemplo processual faz o seguinte:
Replica políticas de redes junto com as regras de rede usadas para restringir o tráfego de rede.
Replica uma integração de segurança à qual a política de redes está atribuída.
Atualiza o grupo de failover.
Verifica a ativação da política de redes.
Promove a conexão secundária na conta de origem para servir como conexão primária.
Etapas da conta de origem:
Verificar se existem políticas de redes na conta Snowflake de origem, executando um comando SHOW NETWORK POLICIES.
Verificar se as integrações de segurança Snowflake OAuth e/ou SCIM incluem uma política de redes executando um comando SHOW INTEGRATIONS para identificar a integração de segurança e depois executar um comando DESCRIBE INTEGRATION na integração de segurança Snowflake OAuth.
Atualize o grupo de failover para incluir
network policies
eaccount parameters
usando um comando ALTERFAILOVERGROUP.alter failover group fG set object_types = users, roles, warehouses, resource monitors, integrations, network policies, account parameters allowed_integration_types = security integrations;
Etapas da conta de destino:
Atualizar o grupo secundário de failover para atualizar a conta de destino para incluir os objetos da política de redes e a integração de segurança Snowflake OAuth que especifica a política de redes.
alter failover group fg refresh;
Verificar a existência do objeto de política de redes executando um comando SHOW NETWORK POLICIES, e verificar se a integração de segurança Snowflake OAuth especifica a política de redes replicada executando um comando DESCRIBE SECURITY INTEGRATION na integração de segurança.
Verificar a ativação da política de redes, como mostrado em Identificação de uma política de redes ativada no nível da conta ou do usuário.
Verificar a conexão com cada conta Snowflake usando o cliente Snowflake OAuth de sua escolha.
Opcionalmente, promover o grupo secundário de failover e a conexão secundária na conta de destino para primário. Isso promoverá a conta de destino para servir como a nova conta de origem.
Grupo de failover:
alter failover group fg primary;
Conexão:
alter connection global primary;
Se você concluiu a etapa anterior, verifique novamente se você consegue se conectar com cada conta Snowflake usando o cliente Snowflake OAuth de sua escolha.
Replicação de integrações e objetos do Conector Snowflake para ServiceNow¶
O Conector Snowflake para ServiceNow permite que o Snowflake faça a ingestão de dados do ServiceNow. O conector exige os seguintes objetos em sua conta Snowflake:
Segredo.
Integração de segurança de
type = api_authentication
.Integração de API.
Banco de dados para armazenar os dados ingeridos.
Warehouse para o conector a ser utilizado.
Funções de conta para gerenciar o acesso a esses objetos.
Você cria estes objetos antes de instalar o conector e pode replicar estes objetos para a conta de destino. Depois de replicar estes objetos, você pode instalar o conector na conta de destino. O conector deve ser instalado na conta de destino porque a instalação depende de um compartilhamento que o Snowflake fornece. Você precisa criar um banco de dados a partir do compartilhamento durante a instalação do conector e não pode replicar um banco de dados que seja criado a partir de um compartilhamento.
Dependendo de como você deseja gerenciar a replicação de objetos de conta, você pode ter um ou mais grupos de replicação ou failover. Um único grupo de replicação centraliza o gerenciamento da replicação dos objetos e evita cenários onde alguns objetos são replicados e outros não. Caso contrário, você deve coordenar cuidadosamente a operação de replicação para garantir que todos os objetos sejam replicados para a conta de destino.
Por exemplo, você pode ter um grupo de replicação para bancos de dados. Este grupo de replicação (por exemplo, rg1
) especifica o banco de dados que contém o segredo e o banco de dados para armazenar os dados ServiceNow. O outro grupo de replicação (por exemplo, rg2
) especifica o usuário, a função e os objetos de integração e as concessões dessas funções aos usuários. Neste cenário, se você replicar as integrações primeiro e depois decidir atualizar a conta de destino para incluir o banco de dados do segredo, usuários e funções, a operação de atualização da replicação será bem-sucedida.
No entanto, se você replicar os usuários e funções e o banco de dados que contém o segredo em um grupo antes de replicar a integração, um segredo de espaço reservado será usado até que a integração de segurança seja replicada; o segredo do espaço reservado evita uma referência pendente. Depois que a integração de segurança for replicada, o segredo do espaço reservado será substituído pelo segredo real.
Este procedimento é um exemplo representativo para fazer o seguinte:
Replique as integrações e os bancos de dados que contêm o segredo e os dados ingeridos.
Atualize o grupo de failover.
Promover a conexão secundária na conta de origem para servir como conexão primária.
Instale e use o conector após a replicação.
Para esse procedimento, considere o seguinte:
Conta de origem:
https://example-northamericawest.snowflakecomputing.com/
Conta de destino:
https://example-northamericaeast.snowflakecomputing.com/
URL de conexão:
https://example-global.snowflakecomputing.com
Existe uma conexão secundária na conta de destino (ou seja, só são necessárias operações de atualização).
Outras integrações de segurança para políticas de autenticação e rede para restringir o acesso já estão replicadas.
Etapas da conta de origem:
Verifique se os objetos para o conector existem na conta Snowflake de origem executando comandos SHOW em cada um desses tipos de objetos.
show secrets in database secretsdb; show security integrations; show api integrations; show tables in database destdb; show warehouses; show roles;
Observe que
secretsdb
é o nome do banco de dados que contém o segredo edestdb
é o nome do banco de dados que contém os dados ingeridos do ServiceNow.Atualize o grupo de failover para incluir integrações de API e os bancos de dados contendo o segredo e os dados ingeridos usando um comando ALTER FAILOVER GROUP.
alter failover group fg set object_types = databases, users, roles, warehouses, resource monitors, integrations, network policies, account parameters allowed_databases = secretsdb, destdb allowed_integration_types = security integrations, api integrations;
Etapas da conta de destino:
Atualize o grupo secundário de failover para replicar as integrações e bancos de dados para a conta de destino.
alter failover group fg refresh;
Verifique a existência dos objetos replicados usando os seguintes comandos SHOW.
show secrets; show security integrations; show api integrations; show database; show tables in database destdb; show roles;
Verifique a conexão com cada conta Snowflake usando o método de sua escolha (por exemplo, navegador, SnowSQL).
Opcionalmente, promover o grupo secundário de failover e a conexão secundária na conta de destino para primário. Isso promoverá a conta de destino para servir como a nova conta de origem.
Grupo de failover:
alter failover group fg primary;
Conexão:
alter connection global primary;
Se você tiver concluído a etapa anterior, verifique novamente se você consegue se conectar com cada conta Snowflake.
Neste ponto, a conta de destino contém os objetos replicados e os usuários podem fazer o login. No entanto, há etapas adicionais na conta de destino para usar o conector.
Atualize o serviço remoto associado com a integração de API na plataforma de nuvem que hospeda sua conta Snowflake.
Para obter mais detalhes, consulte Atualização do serviço remoto para integrações de API.
Instale o conector manualmente ou com Snowsight. Para obter mais detalhes, consulte: