Configuração de um volume externo para o Azure

Conceda ao Snowflake acesso restrito ao seu próprio contêiner do Microsoft Azure usando um volume externo. Snowflake oferece suporte aos seguintes serviços de armazenamento em nuvem do Azure para volumes externos:

  • Armazenamento de blobs

  • Data Lake Storage Gen2

  • Uso geral v1

  • Uso geral v2

  • Microsoft Fabric OneLake

Importante

Para habilitar a interoperabilidade entre o Snowflake e os catálogos remotos que estão configurados apenas para usar o Data Lake Storage, você deve configurar seu volume externo para se conectar ao Data Lake Storage. Para obter mais informações, consulte Habilitar a interoperabilidade com catálogos remotos que usam o Data Lake Storage.

Nota

Para reforçar sua postura de segurança, é possível configurar um volume externo para usar a conectividade privada em vez da Internet pública para o tráfego de rede. Para obter mais informações, consulte Conectividade privada com volumes externos para Microsoft Azure.

Para configurar um volume externo para o Azure, você pode usar o SQL ou o Snowsight.

Pré-requisitos

Antes de configurar um volume externo, você precisa do seguinte:

  • Um contêiner de armazenamento do Azure.

  • Permissões no Azure para criar e gerenciar políticas e funções IAM. Se você não é um administrador Azure, peça a seu administrador Azure para realizar essas tarefas.

Se você usar um firewall de armazenamento do Azure para bloquear tráfego não autorizado para sua conta de armazenamento, siga as instruções em Allow the VNet subnet IDs para conceder explicitamente acesso do Snowflake à sua conta de armazenamento do Azure.

Habilitar a interoperabilidade com catálogos remotos que usam o Data Lake Storage

Esta seção descreve como configurar o Snowflake para que as tabelas Iceberg que você grava usando o Snowflake sejam interoperáveis com os catálogos remotos que estão configurados apenas para usar o Data Lake Storage. Por exemplo, o Unity Catalog está configurado para usar apenas o Data Lake Storage.

Para habilitar a interoperabilidade com esses catálogos, o Snowflake deve gravar arquivos de dados das tabelas Iceberg no Data Lake Storage. Para permitir que o Snowflake grave arquivos de dados no Data Lake Storage, você deve configurar um volume externo que conecte o Snowflake ao Data Lake Storage, que usa o ponto de extremidade dfs.core.windows.net.

Quando você usa o Snowflake para gravar em tabelas Iceberg que são interoperáveis com um catálogo remoto que usa o Data Lake Storage, os seguintes cenários são compatíveis:

  • Use o Snowflake para criar tabelas Iceberg gerenciadas pelo Snowflake que o mecanismo de consulta do catálogo remoto tem permissão de leitura e gravação.

    Nota

    Para habilitar a interoperabilidade com suas tabelas Iceberg gerenciadas pelo Snowflake existentes armazenadas no Armazenamento de Blobs, migre-as para o Data Lake Storage. Para obter instruções, consulte Migrar uma tabela Iceberg para o Azure Data Lake Storage.

  • Use o Snowflake para ler e gravar em tabelas remotas no catálogo remoto.

Configurar um volume externo que conecte o Snowflake ao Data Lake Storage

Para configurar um volume externo que conecte o Snowflake ao Data Lake Storage, quando você criar um volume externo no Snowflake, deve especificar um STORAGE_BASE_URL que aponte para o ponto de extremidade dfs.core.windows.net.

O exemplo a seguir cria um volume externo chamado exvoldfs configurado com um STORAGE_BASE_URL que aponta para o ponto de extremidade dfs.core.windows.net.

CREATE EXTERNAL VOLUME exvoldfs
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-azure-northeurope'
        STORAGE_PROVIDER = 'AZURE'
        STORAGE_BASE_URL = 'azure://exampleacct.dfs.core.windows.net/my_container_northeurope/'
        AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
      )
    );

Configurar um volume externo usando SQL

Etapa 1: criar um volume externo no Snowflake

Crie um volume externo usando o comando CREATE EXTERNAL VOLUME.

Nota

Somente administradores de conta (usuários com a função ACCOUNTADMIN) podem executar este comando SQL.

O exemplo a seguir cria um volume externo que define um local de armazenamento do Azure com criptografia:

CREATE EXTERNAL VOLUME exvol
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-azure-northeurope'
        STORAGE_PROVIDER = 'AZURE'
        STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
        AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
      )
    );

Nota

  • Use o prefixo azure:// e não https:// ao especificar um valor para STORAGE_BASE_URL.

  • Para obter informações sobre a especificação de um local OneLake (recurso em versão preliminar), consulte a página de referência CREATE EXTERNAL VOLUME.

  • Se você usar um ponto de extremidade regional para um local de armazenamento do Microsoft Fabric OneLake, use a mesma região que a capacidade do Microsoft Fabric. Essa também deve ser a mesma região que hospeda sua conta Snowflake.

Etapa 2: conceder ao Snowflake acesso aos locais de armazenamento

  1. Para recuperar um URL para a página de solicitação de permissões da Microsoft, use o comando DESCRIBE EXTERNAL VOLUME. Especifique o nome do volume externo criado anteriormente.

    DESC EXTERNAL VOLUME exvol;
    

    Registre os valores para as seguintes propriedades:

    Propriedade

    Descrição

    AZURE_CONSENT_URL

    URL para a página de solicitação de permissões da Microsoft.

    AZURE_MULTI_TENANT_APP_NAME

    Nome do aplicativo cliente do Snowflake criado para sua conta. Em uma etapa posterior desta seção, você concede a este aplicativo a permissão para obter um token de acesso em seus locais de armazenamento permitidos.

    Você usa esses valores nas etapas a seguir.

  2. Em um navegador da Web, navegue até a página de solicitação de permissões da Microsoft (o AZURE_CONSENT_URL).

  3. Selecione Accept. Essa ação permite que a entidade do serviço Azure criada para sua conta Snowflake obtenha um token de acesso a um recurso especificado dentro de seu locatário. A obtenção de um token de acesso só tem sucesso se você conceder à entidade de serviço as permissões apropriadas no nível da conta de armazenamento (consulte a próxima etapa).

    A página de solicitações de permissão da Microsoft é redirecionada para o site corporativo da Snowflake (snowflake.com).

  4. Entre no portal do Microsoft Azure.

  5. Vá para Azure Services » Storage Accounts. Selecione o nome da conta de armazenamento que a entidade de serviço Snowflake precisa acessar.

    Nota

    Você deve definir as permissões IAM para um volume externo no nível da conta de armazenamento, não no nível do container.

  6. Selecione Access Control (IAM) » Add role assignment.

  7. Selecione a função Storage Blob Data Contributor para conceder acesso de leitura e gravação à entidade de segurança de serviço Snowflake.

    Nota

    A função Storage Blob Data Contributor concede acesso de gravação ao local do volume externo. Para configurar completamente o acesso de gravação, você deve definir o parâmetro ALLOW_WRITES do volume externo como TRUE (o valor padrão).

  1. Selecione + Select members.

  1. Pesquise a entidade de segurança do serviço Snowflake. Esta é a identidade na propriedade AZURE_MULTI_TENANT_APP_NAME na saída DESC EXTERNAL VOLUME (na Etapa 1). Pesquise a cadeia de cadeia de caracteres antes do sublinhado na propriedade AZURE_MULTI_TENANT_APP_NAME.

    Importante

    • Pode levar uma hora ou mais para que o Azure crie a entidade de segurança do serviço Snowflake solicitada por meio da página de solicitação da Microsoft nesta seção. Se a entidade de segurança de serviço não estiver disponível imediatamente, aguarde uma ou duas horas e depois procure novamente.

    • Se você excluir a entidade de segurança de serviço, o volume externo deixa de funcionar.

    Adição da atribuição de função no console de armazenamento do Azure
  2. Selecione Review + assign.

    Nota

    Pode levar até 10 minutos para que as alterações entrem em vigor quando você atribui uma função. Para obter mais informações, consulte Sintoma – não estão sendo detectadas alterações de atribuição de função na documentação do Microsoft Azure.

Etapa 3: verificar o acesso ao armazenamento

Para verificar se o Snowflake pode se autenticar com sucesso no seu provedor de armazenamento, chame a função SYSTEM$VERIFY_EXTERNAL_VOLUME.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_external_volume');

Nota

Se você receber o seguinte erro, o administrador da sua conta deverá ativar o AWS STS na região de implantação do Snowflake. Para obter instruções, consulte Gerenciamento do AWS STS em um região da AWS na documentação da AWS.

Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.

Configurar um volume externo no Snowsight

  1. Faça login no Snowsight.

  2. No canto inferior esquerdo, selecione seu nome » Switch role e, em seguida, selecione ACCOUNTADMIN ou uma função que tenha o privilégio CREATE EXTERNAL VOLUME.

    Para obter mais informações, consulte Mudar sua função primária.

  3. No menu de navegação, selecione Catalog » External data.

  4. Selecione a guia External volumes.

  5. Selecione + Create.

  6. Selecione Microsoft Azure & OneLake e depois selecione Next.

  7. Na página Prerequisites, em Azure tenant ID, especifique seu ID de locatário do Azure.

    Para encontrar seu ID de locatário do Azure, consulte Como localizar seu ID de locatário do Microsoft Entra na documentação do Microsoft Entra.

  8. Selecione Next.

  9. Na página Grant storage access, para conceder ao Snowflake acesso ao local de armazenamento, siga estas etapas:

    1. Para fornecer consentimento para que o Snowflake se conecte ao seu armazenamento Azure ou Microsoft OneLake, selecione Provide consent.

      A página de solicitação de permissões da Microsoft será aberta em uma nova guia do navegador.

    2. Na página de solicitação de permissões da Microsoft, selecione Accept. Essa ação permite que a entidade do serviço Azure criada para sua conta Snowflake obtenha um token de acesso a um recurso especificado dentro de seu locatário. A obtenção de um token de acesso só tem sucesso se você conceder à entidade de serviço as permissões apropriadas no nível da conta de armazenamento (consulte a próxima etapa).

      A página de solicitações de permissão da Microsoft é redirecionada para o site corporativo da Snowflake (snowflake.com).

    3. No Snowflake, no campo Multi-tenant app name, copie o nome do aplicativo cliente do Snowflake criado para sua conta em um editor de texto. Na próxima etapa, você concederá permissão a este aplicativo para obter um token de acesso em seu local de armazenamento permitido.

  10. Para conceder permissão ao seu aplicativo para obter um token de acesso em seu local de armazenamento permitido, siga estas etapas:

    1. Entre no portal do Microsoft Azure.

    2. Vá para Azure Services » Storage Accounts. Selecione o nome da conta de armazenamento que a entidade de serviço Snowflake precisa acessar.

      Nota

      Você deve definir as permissões IAM para um volume externo no nível da conta de armazenamento, não no nível do container.

    3. Selecione Access Control (IAM) » Add role assignment.

    4. Selecione a função Storage Blob Data Contributor para conceder acesso de leitura e gravação à entidade de segurança de serviço Snowflake.

      Nota

      A função Storage Blob Data Contributor concede acesso de gravação ao local do volume externo. Para configurar completamente o acesso de gravação, você deve definir o parâmetro ALLOW_WRITES do volume externo como TRUE (o valor padrão).

    5. Selecione + Select members.

    6. Pesquise a entidade de segurança do serviço Snowflake.

      Este é o Nome do app multilocatário que você copiou do Snowflake na etapa anterior.

      Importante

      • Pode levar uma hora ou mais para que o Azure crie a entidade de segurança do serviço Snowflake solicitada por meio da página de solicitação da Microsoft nesta seção. Se a entidade de segurança de serviço não estiver disponível imediatamente, aguarde uma ou duas horas e depois procure novamente.

      • Se você excluir a entidade de segurança de serviço, o volume externo deixa de funcionar.

      Adição da atribuição de função no console de armazenamento do Azure
    7. Selecione Review + assign.

      Nota

      Pode levar até 10 minutos para que as alterações entrem em vigor quando você atribui uma função. Para obter mais informações, consulte Sintoma – não estão sendo detectadas alterações de atribuição de função na documentação do Microsoft Azure.

  11. No Snowflake, selecione Next.

  12. No Snowflake, para configurar seu volume externo, na página Configure external volume, preencha os campos:

    Campo

    Descrição

    External volume name

    Insira um nome para o seu volume externo.

    Storage base URL

    Especifica o URL base para seu local de armazenamento em nuvem.

    Access scope

    Especifica se as operações de gravação são permitidas para o volume externo. Deve ser definido como Allow writes para as seguintes tabelas:

    • Tabelas Iceberg que usam o Snowflake como catálogo.

    • Tabelas Iceberg que usam um catálogo externo e são graváveis. As tabelas Iceberg gerenciadas externamente são graváveis quando você as acessa por meio de um banco de dados vinculado a catálogo que tem o parâmetro ALLOWED_WRITE_OPERATIONS definido como TRUE.

    Para tabelas Iceberg criadas de arquivos de tabela Delta, definir esse parâmetro como Allow writes permite que o Snowflake grave metadados Iceberg em seu armazenamento externo. Para obter mais informações, consulte Tabelas baseadas em Delta.

    O valor deste parâmetro também deve corresponder às permissões definidas na conta de armazenamento em nuvem para cada local de armazenamento especificado.

    Nota

    Se você planeja usar o volume externo para ler tabelas Iceberg gerenciadas externamente, pode definir este campo como Desativado. O Snowflake não grava dados ou arquivos de metadados do Iceberg no seu armazenamento em nuvem quando você lê tabelas em um catálogo Iceberg externo.

    Scope

    Escolha onde este volume externo deve se tornar o local padrão para futuras tabelas Iceberg. Os valores possíveis são:

    • Do not set a default: não defina o volume externo como padrão em nenhum lugar.

    • Account: defina o volume externo como padrão para tabelas Iceberg criadas no âmbito da conta.

    • Specific database: defina o volume externo como padrão para tabelas Iceberg criadas no banco de dados que você especificar. Para especificar esse banco de dados, use o menu suspenso Database que aparece quando você seleciona Specific database.

    • Specific schema: defina o volume externo como padrão para tabelas Iceberg criadas no esquema que você especificar. Para especificar esse esquema, use o menu suspenso Database que aparece para selecionar primeiro o banco de dados pai do esquema e, em seguida, o esquema.

    Comment (optional)

    Especifica um comentário para o volume externo.

    Connectivity

    Especifica se a conectividade privada de saída deve ser usada para reforçar sua postura de segurança. Para obter informações sobre o uso da conectividade privada de saída, consulte Conectividade privada com volumes externos para Microsoft Azure. Os valores possíveis são:

    • Public (default): usar a internet pública.

    • Private (Azure Private Endpoint): usar a conectividade privada de saída.

  13. Selecione Next.

    Na página Verify connection & create volume, o Snowflake verifica sua conexão com o Azure e exibe uma mensagem informando que a conexão foi bem-sucedida.

    Nota

    Se o Snowflake não puder verificar a conexão, confira sua permissão ou a configuração de volume externo e selecione Verify again.

  14. Selecione Create.

Próximos passos

Depois de configurar um volume externo, você poderá criar uma tabela Iceberg.