Use as credenciais fornecidas pelo catálogo para tabelas Apache Iceberg™

O suporte a credenciais fornecidas para tabelas Iceberg permite que você conceda ao Snowflake acesso aos dados e metadados de sua tabela no armazenamento em nuvem sem usar um volume externo.

Em vez disso, você configura e delega o controle de acesso com o catálogo Iceberg REST de terceiros (como o Snowflake Open Catalog) e, em seguida, cria uma integração de catálogo no Snowflake configurada para credenciais fornecidas. Para qualquer tabela Iceberg associada à integração do catálogo, o Snowflake usa as credenciais fornecidas pelo provedor do catálogo para se conectar com segurança ao seu armazenamento em nuvem externo.

Nota

O uso de credenciais fornecidas de catálogo é compatível com tabelas Iceberg gerenciadas externamente que usam uma integração de catálogo REST e armazenam seus arquivos no Amazon S3. Para usar esse recurso, seu catálogo externo também deve oferecer suporte à venda automática de credenciais.

Considerações

Considere o seguinte quando você usar credenciais fornecidas pelo catálogo para tabelas Iceberg:

  • Esse recurso é compatível somente para tabelas que armazenam seus dados e metadados no Amazon S3.

  • Os arquivos de tabela devem ser armazenados em um único bucket; eles não podem ser distribuídos em vários buckets.

  • A entidade de serviço configurada com seu catálogo REST deve ter permissão para ler todos os locais que contêm seus arquivos de tabela no seu bucket. Se você usar o AWS Lake Formation com o AWS Glue, talvez seja necessário executar etapas adicionais para ativar esse acesso. Para obter mais informações, consulte (Opcional) Configurar o controle de acesso do Lake Formation.

  • O Snowflake espera que seu catálogo forneça um tempo de expiração para as credenciais fornecidas e procura um par chave-valor em que a chave é expiration-time e o valor é um carimbo de data/hora que especifica o tempo de expiração em milissegundos (por exemplo, 1730234407000).

    Se seu catálogo não fornecer um tempo de expiração, o Snowflake presumirá que as credenciais expiram 60 minutos após o recebimento.

  • A criação da tabela falhará se o catálogo fornecer credenciais inválidas.

  • O compartilhamento de dados não é compatível.

Crie uma integração de catálogo para as credenciais fornecidas

Para criar uma integração de catálogo para credenciais fornecidas, use o comando CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) com a propriedade ACCESS_DELEGATION_MODE definida como VENDED_CREDENTIALS.

Onde:

ACCESS_DELEGATION_MODE = {VENDED_CREDENTIALS | EXTERNAL_VOLUME_CREDENTIALS}

Especifica o modo de delegação de acesso a ser usado para acessar os arquivos da tabela Iceberg em seu armazenamento em nuvem externo.

  • VENDED_CREDENTIALS especifica que o Snowflake deve usar credenciais fornecidas.

  • EXTERNAL_VOLUME_CREDENTIALS especifica que o Snowflake deve usar um volume externo.

Padrão: EXTERNAL_VOLUME_CREDENTIALS

Você pode especificar a propriedade ACCESS_DELEGATION_MODE na lista de propriedades REST_CONFIG em qualquer instrução CREATE CATALOG INTEGRATION (Apache Iceberg™ REST). Os tópicos a seguir fornecem exemplos para os casos de uso mais comuns:

Importante

Se você usar o AWS Lake Formation para controle de acesso, certifique-se de que o Snowflake possa acessar o catálogo AWS Glue ou a tabela do Amazon S3. Para obter mais informações, consulte (Opcional) Configurar o controle de acesso do Lake Formation.

Exemplo: AWS Glue

O exemplo a seguir cria uma integração de catálogo para o AWS Glue que usa credenciais fornecidas. Para obter mais informações, consulte Configure uma integração de catálogo para AWS Glue Iceberg REST.

CREATE CATALOG INTEGRATION glue_rest_catalog_int
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'rest_catalog_integration'
  REST_CONFIG = (
    CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
    CATALOG_API_TYPE = AWS_GLUE
    CATALOG_NAME = '123456789012'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = SIGV4
    SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
    SIGV4_SIGNING_REGION = 'us-west-2'
  )
  ENABLED = TRUE;
Copy

Exemplo: Tabelas Amazon S3

Este exemplo cria uma integração de catálogo para tabelas Amazon S3 com a venda automática de credenciais SigV4 ativada usando o Lake Formation.

CREATE OR REPLACE CATALOG INTEGRATION my_s3_tables_catalog_integration
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'my_namespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
    CATALOG_API_TYPE = AWS_GLUE
    CATALOG_NAME = '123456789012:S3tablescatalog/my_table_bucket'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = SIGV4
    SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
  )
  ENABLED = TRUE;
Copy

Onde:

CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'

Especifica o ponto de extremidade Iceberg REST do AWS Glue.

CATALOG_NAME = 'aws_account_id:s3tablescatalog/s3_table_bucket

Especifica um bucket de tabela S3 em sua conta AWS.

Crie uma tabela Iceberg que use as credenciais fornecidas

Após configurar o controle de acesso com o catálogo Iceberg REST de terceiros e criar uma integração de catálogo para as credenciais fornecidas, você pode criar uma tabela Iceberg.

Ao criar uma tabela Iceberg que usa credenciais fornecidas, você especifica uma integração de catálogo configurada com ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS e exclui o parâmetro EXTERNAL_VOLUME da instrução CREATE ICEBERG TABLE (catálogo REST Iceberg).

Por exemplo:

CREATE ICEBERG TABLE my_iceberg_table
  CATALOG = open_catalog_int_vended_credentials
  CATALOG_TABLE_NAME = 'my_table'
  AUTO_REFRESH = TRUE;
Copy

Nota

Se você tiver definido um volume externo padrão no nível da conta, banco de dados ou esquema, o Snowflake ignorará o volume externo padrão durante a criação da tabela, desde que você especifique uma integração de catálogo configurada para usar as credenciais fornecidas.