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 }
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 }
- 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
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.
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');
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.
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".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;
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.
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;
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);
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');