Configuração de um volume externo para o Google Cloud Storage¶
Conceda acesso restrito do Snowflake a um bucket do Google Cloud Storage (GCS) usando um volume externo. Para configurar um volume externo para o Google Cloud Storage, você pode usar o SQL ou usar o Snowsight.
Pré-requisitos¶
Antes de configurar um volume externo, você precisa do seguinte:
Um bucket do Google Cloud Storage.
Para usar o volume externo para tabelas Iceberg gerenciadas externamente, todos os dados da tabela e arquivos de metadados devem estar localizados no bucket.
Para oferecer suporte à recuperação de dados, ative o controle de versão para seu local de armazenamento em nuvem externo.
Permissões no Google Cloud para criar e gerenciar políticas e funções IAM. Se você não for administrador do Google Cloud, peça ao administrador do Google Cloud para realizar essas tarefas.
Para configurar um volume externo, você pode usar o SQL ou o Snowsight:
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 único local de armazenamento GCS com criptografia:
CREATE EXTERNAL VOLUME my_gcs_external_volume
STORAGE_LOCATIONS =
(
(
NAME = 'my-us-west-2'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
)
);
Etapa 2: Recupere a conta de serviço GCS para sua conta Snowflake¶
Para recuperar o ID da conta de serviço GCS criado automaticamente para sua conta Snowflake, use o comando DESCRIBE EXTERNAL VOLUME. Especifique o nome do volume externo criado anteriormente.
Por exemplo:
DESC EXTERNAL VOLUME my_gcs_external_volume;
Registre o valor da propriedade STORAGE_GCP_SERVICE_ACCOUNT na saída (por exemplo, service-account-id@project1-123456.iam.gserviceaccount.com).
O Snowflake fornece uma única conta de serviço GCS para toda a sua conta Snowflake. Todos volumes externos GCS usam essa conta de serviço.
Etapa 3: conceder as permissões da conta de serviço para acessar os objetos do bucket¶
Nesta etapa, você configura as permissões de acesso IAM para o Snowflake em seu Google Cloud console.
Criação de uma função IAM personalizada¶
Crie uma função personalizada que tenha as permissões necessárias para acessar o bucket e obter objetos.
Faça login no Google Cloud console como editor de projeto.
No painel inicial, selecione IAM & Admin » Roles.
Selecione Create Role.
Insira um Title e uma Description opcional para a função personalizada.
Selecione Add Permissions.
Em Filter, selecione Service e depois escolha storage.
Filtre a lista de permissões e adicione o seguinte da lista:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
Selecione Add.
Selecione Create.
Atribuição da função personalizada à conta de serviço GCS¶
Faça login no Google Cloud console como editor de projeto.
No painel inicial, selecione Cloud Storage » Buckets.
Filtre a lista de buckets e selecione o bucket que você especificou ao criar um volume externo.
Selecione Permissions » View by principals e depois selecione Grant access.
Em Add principals, cole o nome da conta de serviço da saída em Etapa 2: Recupere a conta de serviço GCS para sua conta Snowflake.
Em Assign roles, selecione a função IAM personalizada que você criou anteriormente e selecione Save.
Concessão de permissões de conta de serviço do GCS nas chaves do Google Cloud Key Management Service¶
Nota
Esta etapa é necessária apenas se seu bucket GCS estiver criptografado usando uma chave armazenada no Google Cloud Key Management Service (Cloud KMS).
Faça login no Google Cloud console como editor de projeto.
No painel inicial, pesquise e selecione Security » Key Management.
Selecione o chaveiro que é atribuído ao seu bucket GCS.
No canto superior direito, selecione SHOW INFO PANEL. O painel de informações do chaveiro é exibido.
No campo Add members, procure pelo nome da conta de serviço da saída DESCRIBE EXTERNAL VOLUME em Etapa 2: Recupere a conta de serviço GCS para sua conta Snowflake.
A partir do menu suspenso Select a role, selecione a função Cloud KMS CryptoKey Encrypter/Decrypter.
Selecione Add. O nome da conta de serviço é adicionado ao menu suspenso da função Cloud KMS CryptoKey Encrypter/Decrypter no painel de informações.
Etapa 4: 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¶
Etapa 1: recuperar a conta de serviço do GCS para sua conta Snowflake¶
Faça login no Snowsight.
No canto inferior esquerdo, selecione seu nome » Switch role e, em seguida, ACCOUNTADMIN ou uma função com o privilégio CREATEEXTERNAL VOLUME.
Para obter mais informações, consulte Mudar sua função primária.
No menu de navegação, selecione Catalog » External data.
Selecione a guia External volumes.
Selecione + Create.
Selecione Google Cloud Storage e depois selecione Next.
Na página Grant storage access, copie o valor de GCS service account em um editor de texto.
O Snowflake fornece uma única conta de serviço GCS para toda a sua conta Snowflake. Todos volumes externos GCS usam essa conta de serviço.
Etapa 2: conceder as permissões da conta de serviço para acessar os objetos do bucket¶
Nesta etapa, você configura as permissões de acesso IAM para o Snowflake em seu Google Cloud console.
Criação de uma função IAM personalizada¶
Crie uma função personalizada que tenha as permissões necessárias para acessar o bucket e obter objetos.
Faça login no Google Cloud console como editor de projeto.
No painel inicial, selecione IAM & Admin » Roles.
Selecione Create Role.
Insira um Title e uma Description opcional para a função personalizada.
Selecione Add Permissions.
Em Filter, selecione Service e depois escolha storage.
Filtre a lista de permissões e adicione o seguinte da lista:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
Selecione Add.
Selecione Create.
Atribuição da função personalizada à conta de serviço GCS¶
Faça login no Google Cloud console como editor de projeto.
No painel inicial, selecione Cloud Storage » Buckets.
Filtre a lista de buckets e selecione o bucket que você especificou ao criar um volume externo.
Selecione Permissions » View by principals e depois selecione Grant access.
Em Add principals, cole o nome da conta de serviço da saída em Etapa 1: recuperar a conta de serviço do GCS para sua conta Snowflake.
Em Assign roles, selecione a função IAM personalizada que você criou anteriormente e selecione Save.
Etapa 3: criar um volume externo¶
Para criar um volume externo no Snowflake usando o Snowsight, siga estas etapas:
Faça login no Snowsight.
No canto inferior esquerdo, selecione seu nome » Switch role e, em seguida, ACCOUNTADMIN ou uma função com o privilégio CREATEEXTERNAL VOLUME.
Para obter instruções, consulte Mudar sua função primária.
No menu de navegação, selecione Catalog » External data.
Selecione a guia External volumes.
Selecione + Create.
Selecione Google Cloud Storage e depois selecione Next.
Selecione Next.
Nota
Você já concedeu acesso ao armazenamento quando recuperou a conta de serviço do GCS para sua conta Snowflake e atribuiu a função personalizada à conta de serviço do GCS.
Para configurar o volume externo, na página Configure external volume, preencha os campos:
Campo
Descrição
External volume name
Insira um nome para seu volume externo.
Storage base URL
Especifica o URL base para seu local de armazenamento em nuvem.
Encryption (optional)
Especifica o tipo de criptografia utilizado. Os valores possíveis são:
None (default): sem criptografia.
SSE-KMS (enter key): criptografia do lado do servidor usando chaves armazenadas em KMS. Para obter mais informações, consulte chaves de criptografia gerenciadas pelo cliente.
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 campo 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 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 como usar esse parâmetro, consulte Conectividade privada com volumes externos para Google Cloud. Os valores possíveis são:
Public (default): usar a internet pública.
Private (Private Service Connect): usar a conectividade privada de saída.
Selecione Next.
Na página Verify connection & create volume, o Snowflake verifica sua conexão com o Google Cloud Storage e exibe uma mensagem de «conexão 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.
Selecione Create.
Próximos passos¶
Depois de configurar um volume externo, você poderá criar uma tabela Iceberg.
Para criar uma tabela Iceberg somente leitura que usa um catálogo externo, consulte Configurar uma integração de catálogo.
Para criar uma tabela Iceberg com suporte completo à plataforma Snowflake, consulte Criar uma tabela gerenciada pelo Snowflake.