Verwenden Sie vom Katalog automatisch erzeugte Anmeldeinformationen für Apache Iceberg™-Tabellen

Mit der Unterstützung von automatisch erzeugten Anmeldeinformationen für Iceberg-Tabellen können Sie Snowflake Zugriff auf Ihre Tabellendaten und Metadaten im Cloud-Speicher geben, ohne ein externes Volume zu verwenden.

Stattdessen konfigurieren und delegieren Sie die Zugriffssteuerung mit dem Iceberg REST-Katalog eines Drittanbieters (z. B. Snowflake Open Catalog) und erstellen dann eine Katalogintegration in Snowflake, die für automatisch erzeugte Anmeldeinformationen konfiguriert ist. Für jede Iceberg-Tabelle, die mit der Katalogintegration verknüpft ist, verwendet Snowflake die von Ihrem Kataloganbieter bereitgestellten Anmeldeinformationen, um eine sichere Verbindung zu Ihrem externen Cloud-Speicher herzustellen.

Bemerkung

Die Verwendung von im Katalog automatisch erzeugten Anmeldeinformationen wird für extern verwaltete Iceberg-Tabellen unterstützt, die eine REST-Katalogintegration verwenden und ihre Dateien in Amazon S3 speichern. Um dieses Feature nutzen zu können, muss Ihr externer Katalog auch die automatische Erzeugung von Anmeldeinformationen unterstützen.

Hinweise

Beachten Sie Folgendes, wenn Sie im Katalog automatisch erzeugte Anmeldeinformationen für Iceberg-Tabellen verwenden:

  • Dieses Feature wird nur für Tabellen unterstützt, die ihre Daten und Metadaten in Amazon S3 speichern.

  • Tabellendateien müssen in einem einzigen Bucket gespeichert werden; sie können nicht auf mehrere Buckets verteilt werden.

  • Der Dienstprinzipal, der mit Ihrem REST-Katalog konfiguriert ist, muss die Berechtigung haben, aus allen Speicherorten zu lesen, die Ihre Tabellendateien in Ihrem Bucket enthalten.

  • Snowflake erwartet, dass Ihr Katalog eine Ablaufzeit für automatisch erzeugte Anmeldeinformationen angibt, und sucht nach einem Schlüssel-Wert-Paar, bei dem der Schlüssel expiration-time und der Wert ein Zeitstempel ist, der die Ablaufzeit in Millisekunden angibt (zum Beispiel 1730234407000).

    Wenn Ihr Katalog keine Ablaufzeit angibt, geht Snowflake davon aus, dass die Anmeldeinformationen 60 Minuten nach Erhalt ablaufen.

  • Die Tabellenerstellung schlägt fehl, wenn Ihr Katalog ungültige Anmeldeinformationen angibt.

  • Die Datenfreigabe wird nicht unterstützt.

Katalogintegration für automatisch erzeugte Anmeldeinformationen erstellen

Um eine Katalogintegration für automatisch erzeugte Anmeldeinformationen zu erstellen, verwenden Sie den Befehl CREATE CATALOG INTEGRATION (Apache Iceberg™ REST), wobei der Parameter ACCESS_DELEGATION_MODE auf VENDED_CREDENTIALS gesetzt ist.

Wobei:

ACCESS_DELEGATION_MODE = {VENDED_CREDENTIALS | EXTERNAL_VOLUME_CREDENTIALS}

den Zugriffsdelegierungsmodus angibt, der für den Zugriff auf Iceberg-Tabellendateien in Ihrem externen Cloud-Speicher verwendet werden soll.

  • VENDED_CREDENTIALS festlegt, dass Snowflake automatisch erzeugte Anmeldeinformationen verwenden soll.

  • EXTERNAL_VOLUME_CREDENTIALS festlegt, dass Snowflake ein externes Volume verwenden soll.

Standard: EXTERNAL_VOLUME_CREDENTIALS

Weitere Informationen zur Erstellung einer REST-Katalogintegration finden Sie unter Konfigurieren Sie eine Katalogintegration für Apache Iceberg™ REST-Kataloge oder Katalogintegration für Snowflake Open Catalog.

Beispiel: Snowflake Open Catalog

Das folgende Beispiel erstellt eine Katalogintegration für Snowflake Open Catalog unter Verwendung von automatisch erzeugten Anmeldeinformationen:

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

Beispiel: SigV4 und Amazon API Gateway

In diesem Beispiel wird eine Katalogintegration erstellt, die SigV4-Authentifizierung mit automatisch erzeugten Anmeldeinformationen verwendet:

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

Beispiel: Amazon S3-Tabellen

In diesem Beispiel wird eine Katalogintegration für Amazon S3-Tabellen mit in SigV4 aktivierter automatischer Erzeugung von Anmeldeinformationen unter Verwendung von Lake Formation erstellt.

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

Wobei:

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

Gibt den AWS Glue Iceberg REST-Endpunkt an.

CATALOG_NAME = 'aws_account_id:s3tablescatalog/s3_table_bucket

Gibt einen S3-Tabellen-Bucket in Ihrem AWS-Konto an.

Iceberg-Tabelle erstellen, die automatisch erzeugte Anmeldeinformationen verwendet

Nachdem Sie die Zugriffssteuerung mit dem Iceberg REST-Katalog eines Drittanbieters eingerichtet und eine Katalogintegration für automatisch erzeugte Anmeldeinformationen erstellt haben, können Sie eine Iceberg-Tabelle erstellen.

Wenn Sie eine Iceberg-Tabelle erstellen, die automatisch erzeugte Anmeldeinformationen verwendet, müssen Sie eine mit ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS konfigurierte Katalogintegration angeben und den Parameter EXTERNAL_VOLUME in der Anweisung CREATE ICEBERG TABLE (Iceberg REST Katalog) weglassen.

Beispiel:

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

Bemerkung

Wenn Sie ein externes Standardvolumen auf Konto-, Datenbank- oder Schemaebene festgelegt haben, ignoriert Snowflake das externe Standardvolumen bei der Tabellenerstellung, solange Sie eine Katalogintegration angeben, die für die Verwendung von automatisch erzeugten Anmeldeinformationen konfiguriert ist.