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

Using catalog-vended credentials is supported for externally managed Iceberg tables that use a REST catalog integration. To use this feature, your external catalog must also support credential vending.

Considerações

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

  • This feature is supported for tables that store their data and metadata in Amazon S3, Azure Storage, or Google Cloud Storage.

  • 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 dos seguintes tokens, com base em seu provedor de armazenamento em nuvem:

    • AWS: An expiration time for the AWS session token. Snowflake searches for a key-value pair where the key is s3.session-token-expires-at-ms, and the value is a timestamp that specifies the expiration time in milliseconds.

    • Azure: An expiration time for the SAS token. Snowflake searches for a key-value pair where the key is adls.sas-token-expires-at-ms, and the value is a timestamp that specifies the expiration time in milliseconds.

    • Google Cloud Storage: An expiration time for the OAuth 2.0 access token. Snowflake searches for a key-value pair where the key is gcs.oauth2.token-expires-at, and the value is a timestamp that specifies the expiration time in milliseconds.

    If your catalog doesn’t provide a token, Snowflake expects your catalog to provide an expiration time for vended credentials, and searches for a key-value pair where the key is expiration-time, and the value is a timestamp that specifies the expiration time in milliseconds; for example, 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.

  • Table creation fails if your catalog provides credentials that aren’t valid.

  • O comando CREATE ICEBERG TABLE … AS SELECT não é compatível.

  • Conectividade privada não é suportada; para usar a conectividade privada, é necessário configurar um volume externo.

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

You can specify the ACCESS_DELEGATION_MODE property in the list of REST_CONFIG properties in any CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) statement.

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.