Externes Volume für Google Cloud Storage konfigurieren

Gewähren Sie Snowflake eingeschränkten Zugriff auf einen Google Cloud Storage (GCS) Bucket unter Verwendung eines externen Volumes.

Voraussetzungen

Bevor Sie ein externes Volume konfigurieren, benötigen Sie Folgendes:

  • Ein Google Cloud Storage Bucket in derselben Region, in der sich Ihr Snowflake-Konto befindet.

  • Berechtigungen in Google Cloud zum Erstellen und Verwalten von IAM-Richtlinien und -Rollen. Wenn Sie kein Google Cloud-Administrator sind, bitten Sie Ihren Google Cloud-Administrator, diese Aufgaben auszuführen.

Schritt 1: Externes Volume in Snowflake erstellen

Erstellen Sie mit dem Befehl CREATE EXTERNAL VOLUME ein externes Volume.

Bemerkung

Dieser SQL-Befehl kann nur von Kontoadministratoren (d. h. Benutzer mit der Rolle ACCOUNTADMIN) ausgeführt werden.

Im folgenden Beispiel wird ein externes Volume erstellt, das genau einen GCS-Speicherort mit Verschlüsselung definiert:

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

Schritt 2: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen

Um die ID für das GCS-Dienstkonto abzurufen, die für Ihr Snowflake-Konto automatisch erstellt wurde, verwenden Sie den Befehl DESCRIBE EXTERNAL VOLUME. Geben Sie den Namen des externen Volumes an, das Sie zuvor erstellt haben.

Beispiel:

DESC EXTERNAL VOLUME my_gcs_external_volume;
Copy

Notieren Sie sich den Wert der Eigenschaft STORAGE_GCP_SERVICE_ACCOUNT in der Ausgabe (z. B. service-account-id@project1-123456.iam.gserviceaccount.com).

Snowflake stellt genau ein GCS-Dienstkonto für Ihr gesamtes Snowflake-Konto bereit. Alle externen GCS-Volumes verwenden dieses Dienstkonto.

Schritt 3: Dienstkontoberechtigungen für den Zugriff auf Bucket-Objekte erteilen

In diesem Schritt konfigurieren Sie IAM-Zugriffsberechtigungen für Snowflake in Ihrer Google Cloud Platform Console.

Kundenspezifische IAM-Rolle erstellen

Erstellen Sie eine kundenspezifische Rolle, die über die erforderlichen Berechtigungen verfügt, um auf den Bucket zuzugreifen und Objekte abzurufen.

  1. Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.

  2. Wählen Sie im Startseiten-Dashboard die Option IAM & Admin » Roles aus.

  3. Wählen Sie Create Role aus.

  4. Geben Sie unter Title einen Titel und optional unter Description eine Beschreibung für die benutzerdefinierte Rolle ein.

  5. Wählen Sie Add Permissions aus.

  6. Wählen Sie unter Filter die Option Service und dann storage aus.

  7. Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Wählen Sie Add aus.

  9. Wählen Sie Create aus.

Kundenspezifische Rolle zum GCS-Dienstkonto zuweisen

  1. Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.

  2. Wählen Sie im Startseiten-Dashboard die Option Cloud Storage » Buckets aus.

  3. Filtern Sie die Liste der Buckets, und wählen Sie den Bucket aus, den Sie beim Erstellen eines externen Volumes angegeben haben.

  4. Wählen Sie Permissions » View by principals und dann Grant access aus.

  5. Fügen Sie unter Add principals den Namen des Dienstkontos aus der Ausgabe in Schritt 2: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen ein.

  6. Wählen Sie unter Assign roles die benutzerdefinierte IAM-Rolle aus, die Sie zuvor erstellt haben, und wählen Sie dann Save aus.

GCS-Dienstkonto Berechtigungen für die Schlüssel des Google Cloud Key Management Service zuweisen

Bemerkung

Dieser Schritt ist nur erforderlich, wenn Ihr GCS-Bucket mit einem in Google Cloud Key Management Service (Cloud KMS) gespeicherten Schlüssel verschlüsselt ist.

  1. Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.

  2. Wählen Sie auf dem Home-Dashboard Security » Key Management aus.

  3. Wählen Sie den Schlüsselring aus, der Ihrem GCS-Bucket zugewiesen ist.

  4. Wählen Sie in der rechten oberen Ecke die Option SHOW INFO PANEL aus. Der Informationsbereich für den Schlüsselring wird angezeigt.

  5. Suchen Sie über das Feld Add members in der DESCRIBE EXTERNAL VOLUME-Ausgabe von Schritt 2: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen nach dem Namen des Dienstkontos:

  6. Wählen Sie in der Dropdown-Liste Select a role die Rolle Cloud KMS CryptoKey Encrypter/Decrypter aus.

  7. Wählen Sie Add aus. Der Name des Dienstkontos wird der Dropdown-Liste Cloud KMS CryptoKey Encrypter/Decrypter im Informationsbereich hinzugefügt.

Schritt 4: Überprüfen Sie den Speicherzugriff

Um zu überprüfen, ob Snowflake sich erfolgreich bei Ihrem Speicheranbieter authentifizieren kann, rufen Sie die Funktion SYSTEM$VERIFY_EXTERNAL_VOLUME auf.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

Nächste Schritte

Nachdem Sie ein externes Volume konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.