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 o catálogo REST deve ter permissão para ler em todos os locais que contêm os arquivos de tabela em seu bucket.

  • 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 as credenciais fornecidas, use o comando CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) com o parâmetro ACCESS_DELEGATION_MODE definido 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

Para obter mais informações sobre como criar uma integração de catálogo REST, consulte Configurar uma integração de catálogo para catálogos Apache Iceberg™ REST ou Configurar uma integração de catálogo para o Snowflake Open Catalog.

Exemplo: Snowflake Open Catalog

O exemplo a seguir cria uma integração de catálogo para o Snowflake Open Catalog usando as credenciais fornecidas:

CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int_vended_credentials
  CATALOG_SOURCE = POLARIS
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'my-namespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://myrestapi.com/polaris/api/catalog'
    CATALOG_NAME = 'my_catalog_name'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_CLIENT_ID = 'my_client_id'
    OAUTH_CLIENT_SECRET = 'my_client_secret'
    OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
  )
  ENABLED = TRUE;
Copy

Exemplo: SigV4 e Amazon API Gateway

Este exemplo cria uma integração de catálogo que usa a autenticação SigV4 com as credenciais fornecidas:

CREATE OR REPLACE CATALOG INTEGRATION my_rest_catalog_integration
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'my_namespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://asdlkfjwoalk-execute-api.us-west-2-amazonaws.com/MyApiStage'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = SIGV4
    SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
  )
  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 de AWS Glue Iceberg REST.

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.

Quando você cria uma tabela Iceberg que usa as credenciais fornecidas, deve especificar uma integração de catálogo configurada com ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS e omitir 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.