Rede do Snowflake Postgres¶
Por padrão, o Snowflake Postgres provisiona cada instância nova dentro de uma rede privada diferente na região da nuvem que você selecionou. Cada rede é separada e privada das outras redes na mesma região da nuvem.
Por padrão, as instâncias do Snowflake Postgres não permitem conexões de entrada. O tráfego de/para suas instâncias do Snowflake Postgres pode ser habilitado de uma destas duas maneiras:
Anexe uma política de redes contendo regras de rede de entrada e/ou saída do Postgres. Essa opção está disponível para todas as contas.
Configure conexões Private Link de/para redes privadas de fornecedores de nuvem. Essa opção está disponível para contas a partir da edição Business Critical.
Políticas e regras de rede do Snowflake Postgres¶
As políticas de redes e as regras de rede para instâncias do Snowflake Postgres funcionam quase da mesma forma que para outros recursos do Snowflake, com algumas diferenças importantes:
As políticas de redes não precisam ser ativadas para serem usadas com instâncias do Snowflake Postgres da mesma forma que são para contas, usuários e outras integrações de segurança do Snowflake. Em vez disso, as políticas de redes para instâncias do Snowflake Postgres são anexadas às instâncias diretamente no momento da criação da instância. As instâncias existentes também podem ter suas políticas de redes alteradas.
As instâncias do Snowflake Postgres usam apenas as propriedades ALLOWED_NETWORK_RULE_LIST e BLOCKED_NETWORK_RULE_LIST das políticas de redes. As propriedades BLOCKED_IP_LIST e ALLOWED_IP_LIST são ignoradas.
As regras de rede para instâncias do Snowflake Postgres devem usar os modos de entrada ou de saída do Postgres. Atualmente, as regras que usam esses modos estão limitadas ao tipo IPv4.
As regras de rede que usam modos diferentes dos de entrada ou saída do Postgres em uma política de redes são ignoradas pelas instâncias do Snowflake Postgres que as utilizam.
Privilégios¶
Para criar novas políticas de redes, os usuários do Snowflake devem ter o privilégio CREATE NETWORK POLICY ON ACCOUNT.
Para criar novas regras de rede, os usuários do Snowflake devem ter o privilégio CREATE NETWORK RULE ON SCHEMA.
Para anexar uma política de redes existente a uma instância do Snowflake, os usuários do Snowflake devem ser proprietários da política de redes ou o proprietário da política deve GRANT o uso dela.
Exemplo de política e regras de rede do Snowflake Postgres¶
Vamos supor que:
Você queira permitir o tráfego de entrada para uma nova instância do Postgres do seu escritório, e o endereço IP público do roteador de rede do seu escritório é
23.206.171.35.Você também quer permitir o tráfego de saída da nova instância do Postgres para o servidor Postgres do seu escritório através de uma conexão Foreign Data Wrapper do Postgres.
Para isso, criaremos uma nova política com uma regra de rede de entrada e outra de saída do Postgres.
Crie duas novas regras de rede. Use
23.206.171.35/32como o único identificador de rede para ambas e use «Postgres Ingress» como Mode para uma e «Postgres Egress» como Mode para a outra.Crie uma nova política de redes com as duas novas regras incluídas na lista Allowed.
No menu de navegação, selecione Postgres.
Selecione + Create.
Ao selecionar os detalhes de configuração da instância desejados, certifique-se de selecionar sua nova política na caixa de seleção Network policy. Na imagem abaixo, selecionamos a política chamada
OFFICE POLICY EXAMPLE.
-- Create the ingress rule
CREATE NETWORK RULE PG_INGRESS_FROM_OFFICE
TYPE = IPV4
VALUE_LIST = ('23.206.171.35/32')
MODE = POSTGRES_INGRESS;
-- Create the egress rule
CREATE NETWORK RULE PG_EGRESS_TO_OFFICE
TYPE = IPV4
VALUE_LIST = ('23.206.171.35/32')
MODE = POSTGRES_EGRESS;
-- Create a new policy using both rules in its allowed list
CREATE NETWORK POLICY "OFFICE POLICY EXAMPLE"
ALLOWED_NETWORK_RULE_LIST = ('PG_INGRESS_FROM_OFFICE', 'PG_EGRESS_TO_OFFICE')
COMMENT = 'Traffic to/from the office.';
-- Create a new Snowflake Postgres instance that uses the new policy
CREATE POSTGRES INSTANCE SNOWFLAKE_POSTGRES_DEMO
COMPUTE_FAMILY = 'STANDARD_L'
STORAGE_SIZE_GB = 50
AUTHENTICATION_AUTHORITY = POSTGRES
POSTGRES_VERSION = 17
NETWORK_POLICY = '"OFFICE POLICY EXAMPLE"';
Criando regras de entrada no momento da criação da instância¶
Em vez de criar a política e as regras de rede antes de criar sua instância do Snowflake Postgres, você pode criar uma política com regras de entrada do Postgres quando criar as instâncias do Snowflake Postgres no Snowsight.
No menu de navegação, selecione Postgres.
Na página Postgres Instances, selecione o botão Create no canto superior direito.
Escolha a configuração da instância, mas deixe a opção Network policy em branco.
Depois que você selecionar Create, uma nova caixa de diálogo exibirá as
:doc:`credenciais de conexão do usuário do Postgres </user-guide/snowflake-postgres/connecting-to-snowflakepg>snowflake_admin. Depois de salvar essas credenciais em um local seguro, selecione Continue to network settings.Na caixa de diálogo Network Settings (mostrada abaixo), digite os valores de endereço IP e/ou CIDR para os quais você deseja criar regras de entrada do Postgres, pressionando Enter para adicionar cada um à lista.
Expanda a seção Details para editar os novos nomes da regra e/ou política de redes, se necessário.
Selecione Save para criar a nova política de redes de entrada do Postgres e anexá-la automaticamente à sua instância quando estiver ativa.
Private Link no Snowflake Postgres¶
O Private Link para instâncias do Snowflake Postgres está disponível para contas a partir da edição Business Critical.
Para habilitar o Private Link em uma instância do Snowflake Postgres, comece seguindo as instruções para habilitá-lo entre as suas contas de fornecedor de nuvem e Snowflake:
Privilégios¶
Para habilitar o PrivateLink para instâncias do Snowflake Postgres, os usuários do Snowflake devem ter os seguintes privilégios:
MANAGE POSTGRES PRIVATE CONNECTIVITY ON ACCOUNT
OWNERSHIP ou MANAGE para cada instância do Snowflake Postgres especificada
Configurando o Private Link para instâncias do Snowflake Postgres¶
Depois de habilitar o Private Link entre as suas contas de fornecedor de nuvem e Snowflake e os privilégios necessários, você poderá habilitá-lo em instâncias do Snowflake Postgres (por instância) da maneira a seguir.
Se você não pretende configurar uma regra de política de redes para sua instância além da conexão Private Link, selecione Private Link para Network Security option na caixa de diálogo New instance. Se você quiser configurar ou usar uma política de redes, selecione Network policy e siga as instruções anteriores sobre políticas de redes.
Quando uma instância estiver ativa, você poderá habilitar o Private Link nela:
No menu de navegação, clique em Postgres e selecione a instância.
No painel Instance details da instância, selecione o ícone de edição na seção Private Link.
Uma caixa de diálogo de confirmação é exibida solicitando que você confirme a configuração do Private Link para seu provedor de serviços de nuvem. Selecione Enable. Observe que esta etapa pode levar até 10 minutos para ser concluída.
Depois que o Private Link estiver ativo em sua instância do Snowflake Postgres, você poderá estabelecer novas conexões Private Link para ela:
No menu de navegação, selecione Postgres e clique na sua instância para ver a página de detalhes.
Selecione o ícone de edição na seção Private Link à direita para expandir o painel do Private Link (mostrado abaixo).
Use o Service address exibido para fazer uma solicitação de conexão Private Link da rede privada em sua conta de fornecedor de nuvem.
Atualize a página de detalhes da sua instância do Snowflake Postgres. O painel do Private Link agora terá uma nova entrada de conexão referente à sua solicitação sem a check mark (aceitar) nem a x mark (rejeitar) selecionada. Selecione check mark para aceitar.
Não é possível se conectar à sua instância do Snowflake Postgres de hosts na rede privada do provedor de serviços de nuvem.
Você pode habilitar o Private Link em uma instância ativa com o Snowflake SQL da seguinte maneira:
ALTER POSTGRES INSTANCE <name> ENABLE PRIVATELINK;
Essa operação assíncrona pode levar até 10 minutos. Para rastrear o status, verifique o valor do privatelink_service_identifier retornado por DESCRIBE POSTGRES INSTANCE:
DESCRIBE POSTGRES INSTANCE <name>;
O mesmo privatelink_service_identifier é mostrado para a entrada de instâncias na saída de SHOW POSTGRES INSTANCES:
SHOW POSTGRES INSTANCES;
Quando a coluna privatelink_service_identifier mostra um valor não NULL, é possível usar esse identificador para fazer uma solicitação de conexão Private Link da rede privada em sua conta de provedor de serviços de nuvem que você habilitou para conexões Private Link com a sua conta Snowflake.
Depois de fazer essa solicitação de conexão da rede privada da sua conta de provedor de nuvem, encontre a solicitação para a instância do Snowflake Postgres:
SHOW PRIVATELINK CONNECTIONS IN POSTGRES INSTANCE <name>;
Esse comando retorna as seguintes colunas:
endpointconnection_idstatus
Sua solicitação de conexão será uma entrada com o valor de endpoint do Private Link da rede privada do seu provedor de nuvem e um valor de status pending.
Você pode aceitar uma ou mais solicitações de conexão Private Link pendentes executando o comando ALTER POSTGRES INSTANCE:
ALTER POSTGRES INSTANCE [IF EXISTS] <name> AUTHORIZE PRIVATELINK CONNECTIONS = ('<connection_id' [ , ... ]);
Você pode revogar uma ou mais solicitações de conexão Private Link pendentes ou já aprovadas executando este comando:
ALTER POSTGRES INSTANCE [IF EXISTS] <name> REVOKE PRIVATELINK CONNECTIONS = ('<connection_id' [ , ... ]);