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.

Pré-requisitos

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

  • Um bucket do Google Cloud Storage na mesma região que hospeda sua conta Snowflake.

  • 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.

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')
      )
    );
Copy

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;
Copy

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 Snowflake no console do Google Cloud Platform.

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.

  1. Entre no console do Google Cloud Platform como editor de projeto.

  2. No painel inicial, selecione IAM & Admin » Roles.

  3. Selecione Create Role.

  4. Insira um Title e uma Description opcional para a função personalizada.

  5. Selecione Add Permissions.

  6. Em Filter, selecione Service e depois escolha storage.

  7. Filtre a lista de permissões e adicione o seguinte da lista:

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Selecione Add.

  9. Selecione Create.

Atribuição da função personalizada à conta de serviço GCS

  1. Entre no console do Google Cloud Platform como editor de projeto.

  2. No painel inicial, selecione Cloud Storage » Buckets.

  3. Filtre a lista de buckets e selecione o bucket que você especificou ao criar um volume externo.

  4. Selecione Permissions » View by principals e depois selecione Grant access.

  5. 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.

  6. 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).

  1. Entre no console do Google Cloud Platform como editor de projeto.

  2. No painel inicial, pesquise e selecione Security » Key Management.

  3. Selecione o chaveiro que é atribuído ao seu bucket GCS.

  4. No canto superior direito, selecione SHOW INFO PANEL. O painel de informações do chaveiro é exibido.

  5. 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.

  6. A partir do menu suspenso Select a role, selecione a função Cloud KMS CryptoKey Encrypter/Decrypter.

  7. 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_s3_external_volume');
Copy

Próximos passos

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