Conectividade privada com estágios externos para Google Cloud

Este tópico descreve como configurar a conectividade privada de saída para um estágio externo no Google Cloud. A principal diferença entre a conectividade pública de saída e a conectividade privada de saída é como a integração ou o estágio de armazenamento é configurado. Por exemplo, é possível especificar a propriedade USE_PRIVATELINK_ENDPOINT para a integração de armazenamento e, em seguida, fazer referência a essa integração de armazenamento no estágio externo. O estágio externo herda a configuração do ponto de extremidade privado da integração de armazenamento. Posteriormente, sua conexão com o estágio do Google Cloud passa pela rede interna do Google Cloud. Ao configurar a integração e o estágio de armazenamento para usar a conectividade privada de saída, você acrescenta segurança adicional às operações de descarregamento de dados, bloqueando o acesso público à conta de armazenamento.

Custos de conectividade privada de saída

Você paga por cada ponto de extremidade de conectividade privada, juntamente com o total de dados processados. Para ver o preço desses itens, consulte a Tabela de consumo do serviço Snowflake.

Você pode explorar o custo desses itens filtrando os seguintes tipos de serviço ao consultar as exibições de faturamento nos esquemas ACCOUNT_USAGE e ORGANIZATION_USAGE:

  • OUTBOUND_PRIVATELINK_ENDPOINT

  • OUTBOUND_PRIVATELINK_DATA_PROCESSED

Por exemplo, você pode consultar a exibição USAGE_IN_CURRENCY_DAILY e filtrar por esses tipos de serviço.

Considerações

É possível configurar a conectividade pública de saída e a conectividade privada de saída para a mesma conta de armazenamento. Se quiser fazer isso, crie uma integração de armazenamento dedicada para a conectividade pública de saída e especifique USE_PRIVATELINK_ENDPOINT = FALSE.

Limitações

A conectividade privada de saída para um estágio do Google Cloud não oferece suporte a buckets multirregionais.

Especificação da conectividade privada para uma integração de armazenamento

Para especificar a conectividade privada ao criar, substituir ou modificar uma integração de armazenamento, inclua a propriedade USE_PRIVATELINK_ENDPOINT, conforme mostrado nos exemplos a seguir. Para usar a conectividade privada, defina USE_PRIVATELINK_ENDPOINT = TRUE para a integração.

Integração de armazenamento

Os exemplos a seguir mostram como especificar a propriedade USE_PRIVATELINK_ENDPOINT ao criar uma integração de armazenamento com um ou mais locais:

CREATE OR REPLACE STORAGE INTEGRATION my_int
  TYPE=EXTERNAL_STAGE
  STORAGE_PROVIDER='gcs'
  STORAGE_ALLOWED_LOCATIONS=('gcs://<bucket>/<prefix>/')
  USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy

O exemplo a seguir mostra como modificar uma integração de armazenamento e definir a propriedade USE_PRIVATELINK_ENDPOINT:

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy
Estágios externos

Atualizações da sintaxe USE_PRIVATELINK_ENDPOINT não são suportadas quando você cria ou modifica o estágio. O exemplo a seguir mostra como alterar a integração de armazenamento para usar o URL do estágio novo ou modificado:

CREATE OR REPLACE STAGE my_gcs_stage
  URL = 'gcs://<bucket>/<prefix>/'
  STORAGE_INTEGRATION=my_int
Copy

Configuração do acesso ao estágio externo

Essas etapas são exclusivas do uso da conectividade privada de saída com uma integração de armazenamento para descarregar dados em um estágio externo no Google Cloud.

  1. No Snowflake, chame a função de sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT. Forneça como argumentos um ponto de extremidade regional da API Storage e um nome de host. Por exemplo:

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
      'storage.us-east4.rep.googleapis.com',
      'storage.us-east4.rep.googleapis.com');
    
    Copy

    Nota

    O Snowflake oferece suporte apenas aos pontos de extremidade regionais da API Storage do Google Cloud. Os buckets multirregionais do|google-cloud| não são compatíveis.

    Ao usar SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade privado em sua do Snowflake VNet, o ponto de extremidade privado é vinculado ao nome do host. Isso permite que a integração de armazenamento se conecte ao estágio externo do Google Cloud usando conectividade privada.

  2. No Snowflake, chame a função SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.

    Quando a saída de SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO inclui “status”: “APPROVED”, sua conexão do Snowflake com a conta de armazenamento poderá usar a conectividade privada (depois que os outros objetos Snowflake necessários estiverem habilitados para conectividade privada de saída).

    É possível continuar com as próximas etapas enquanto aguarda o status "APPROVED".

  3. Crie uma integração de armazenamento e certifique-se de especificar TRUE como o valor da propriedade USE_PRIVATELINK_ENDPOINT. Por exemplo:

    CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'gcs'
      STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/'')
      USE_PRIVATELINK_ENDPOINT = true
      ENABLED = true;
    
    Copy

    Para informações sobre a criação de uma função para a integração de armazenamento, consulte Configuração de uma integração para o Google Cloud Storage.

  4. Crie um estágio externo que faça referência à integração de armazenamento. Por exemplo:

    CREATE OR REPLACE STAGE my_gcs_stage
      URL = 'gcs://mybucket1/path1/'
      STORAGE_INTEGRATION = outbound_private_link_int;
    
    Copy
  5. Depois que o ponto de extremidade privado tiver o status «APPROVED», faça um teste descarregando dados do Snowflake para o estágio externo. Por exemplo:

    COPY INTO @my_gcs_stage
      FROM mytable
      FILE_FORMAT = (FORMAT_NAME = my_csv_format);
    
    Copy
  6. Visualize o resultado em seu estágio Google Cloud.

Desativação da conectividade privada

Se você não precisar mais de conectividade privada para o estágio externo, poderá definir a propriedade USE_PRIVATELINK_ENDPOINT na integração de armazenamento comoFALSEe, em seguida, chamar a função SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT do sistema para desprovisionar o ponto de extremidade. Por exemplo:

USE ROLE ACCOUNTADMIN;

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = false;

SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');
Copy