Externes Volume für Azure konfigurieren

Gewähren Sie Snowflake eingeschränkten Zugriff auf Ihren eigenen Microsoft Azure Container über ein externes Volume. Snowflake unterstützt die folgenden Azure-Cloudspeicherdienste für externe Volumes:

  • Blob-Speicher

  • Data Lake Storage Gen2

  • General Purpose v1

  • General Purpose v2

  • Microsoft Fabric OneLake

Bemerkung

Um Ihre Sicherheitslage zu verbessern, können Sie ein externes Volume so konfigurieren, dass es für den Netzwerkdatenverkehr private Konnektivität und nicht das öffentliche Internet verwendet. Weitere Informationen dazu finden Sie unter Private Konnektivität zu externen Volumes für Microsoft Azure.

Verwenden Sie zum Konfigurieren eines externen Volumes für Azure :ref:` SQL <label-configure_external_volume_azure_create_sql>` oder :ref:` Snowsight <label-configure_external_volume_azure_create_snowsight>`.

Voraussetzungen

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

  • Ein Azure-Speichercontainer.

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

Wenn Sie eine Azure-Speicher-Firewall verwenden, um nicht autorisierten Datenverkehr zu Ihrem Speicherkonto zu blockieren, folgen Sie den Anweisungen unter Allow the VNet subnet IDs, um Snowflake explizit Zugriff auf Ihr Azure-Speicher-Konto zu gewähren.

Ein externes Volume mit SQL konfigurieren

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 einen Azure-Speicherort mit Verschlüsselung definiert:

CREATE EXTERNAL VOLUME exvol
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-azure-northeurope'
        STORAGE_PROVIDER = 'AZURE'
        STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
        AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
      )
    );
Copy

Bemerkung

  • Verwenden Sie bei der Angabe eines Wertes für STORAGE_BASE_URL das Präfix azure:// und nicht das Präfix https://.

  • Informationen über die Angabe eines OneLake-Speicherorts (Vorschau-Feature) finden Sie auf der Referenzseite CREATE EXTERNAL VOLUME.

  • Wenn Sie einen regionalen Endpunkt für einen Microsoft Fabric OneLake-Speicherort nutzen, verwenden Sie die gleiche Region wie Ihre Microsoft Fabric-Kapazität. Dies muss auch die Region sein, in der sich Ihr Snowflake-Konto befindet.

Schritt 2: Snowflake Zugriff auf den Speicherort gewähren

  1. Verwenden Sie den Befehl DESCRIBE EXTERNAL VOLUME, um eine URL abzurufen, die auf die Seite der Microsoft-Berechtigungsanforderung führt. Geben Sie den Namen des externen Volumes an, das Sie zuvor erstellt haben.

    DESC EXTERNAL VOLUME exvol;
    
    Copy

    Notieren Sie sich die Werte der folgenden Eigenschaften:

    Eigenschaft

    Beschreibung

    AZURE_CONSENT_URL

    URL der Microsoft-Berechtigungsanforderungsseite.

    AZURE_MULTI_TENANT_APP_NAME

    Name der Snowflake-Clientanwendung, die für Ihr Konto erstellt wurde. In einem späteren Schritt in dieser Anleitung müssen Sie dieser Anwendung die Berechtigung erteilen, ein Zugriffstoken für Ihren zulässigen Speicherort zu erhalten.

    Sie verwenden diese Werte in den folgenden Schritten.

  2. Rufen Sie in einem Webbrowser die Seite der Microsoft-Berechtigungsanforderung auf (die AZURE_CONSENT_URL).

  3. Wählen Sie Accept aus. Mit dieser Aktion kann der Azure-Dienstprinzipal, der für Ihr Snowflake-Konto erstellt wurde, ein Zugriffstoken für eine bestimmte Ressource in Ihrem Mandantenbereich erhalten. Das Abrufen eines Zugriffstokens ist nur erfolgreich, wenn Sie dem Dienstprinzipal die entsprechenden Berechtigungen auf Ebene des Speicherkontos erteilen (siehe nächster Schritt).

    Die Microsoft-Berechtigungsanforderungsseite leitet auf die Snowflake-Firmenwebsite (snowflake.com) um.

  4. Melden Sie sich beim Microsoft Azure-Portal an.

  5. Rufen Sie Azure Services » Storage Accounts auf. Wählen Sie den Namen des Speicherkontos aus, auf das der Snowflake-Dienstprinzipal Zugriff benötigt.

    Bemerkung

    Sie müssen die IAM-Berechtigungen für ein externes Volume auf der Ebene des Speicherkontos festlegen, nicht auf der Ebene des Containers.

  6. Wählen Sie Access Control (IAM) » Add role assignment aus.

  7. Wählen Sie die Rolle Storage Blob Data Contributor aus, um Lese- und Schreibzugriff auf den Snowflake-Dienstprinzipal zu gewähren.

    Bemerkung

    Die Rolle Storage Blob Data Contributor gewährt Schreibzugriff auf den Speicherort des externen Volumes. Um den Schreibzugriff vollständig zu konfigurieren, setzen Sie den Parameter ALLOW_WRITES des externen Volumes auf TRUE (den Standardwert).

  1. Wählen Sie + Select members aus.

  1. Suchen Sie nach dem Snowflake-Dienstprinzipal. Dies ist die Identität in der Eigenschaft AZURE_MULTI_TENANT_APP_NAME der Ausgabe von DESC EXTERNAL VOLUME (in Schritt 1). Suchen Sie in der Eigenschaft AZURE_MULTI_TENANT_APP_NAME nach der Zeichenfolge vor dem Unterstrich.

    Wichtig

    • Es kann eine Stunde oder länger dauern, bis Azure den über die oben genannte Microsoft-Anforderungsseite angeforderten Snowflake-Dienstprinzipal erstellt hat. Wenn der Dienstprinzipal nicht sofort verfügbar ist, müssen Sie ein bis zwei Stunden warten und ihn dann erneut suchen.

    • Wenn Sie den Dienstprinzipal löschen, funktioniert das externe Volume nicht mehr.

    Rollenzuweisung über Azure Storage-Konsole hinzufügen
  2. Wählen Sie Review + assign aus.

    Bemerkung

    Beim Zuweisen einer Rolle kann es bis zu 10 Minuten dauern, bis die Änderungen wirksam werden. Weitere Informationen dazu finden Sie in der Microsoft Azure-Dokumentation unter Symptom: Änderungen bei der Rollenzuweisung werden nicht erkannt.

Schritt 3: Überprüfen des Speicherzugriffs

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_external_volume');
Copy

Bemerkung

Wenn Sie den folgenden Fehler erhalten, muss Ihr Kontoadministrator AWS STS in der Snowflake-Bereitstellungsregion aktivieren. Eine Anleitung dazu finden Sie unter Verwalten von AWS STS in einer AWS-Region in der AWS-Dokumentation.

Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.

Ein externes Volume in Snowsight konfigurieren

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie links unten Ihren Namen » Switch role und dann ACCOUNTADMIN oder eine Rolle mit der Berechtigung CREATEEXTERNAL VOLUME aus.

    Weitere Informationen dazu finden Sie unter Ihre Primärrolle wechseln.

  3. Wählen Sie im Navigationsmenü die Option Catalog » External data aus.

  4. Wählen Sie die Registerkarte External volumes aus.

  5. Wählen Sie + Create aus.

  6. Wählen Sie Microsoft Azure & OneLake und dann Next aus.

  7. Geben Sie auf der Seite Prerequisites unter Azure tenant ID die ID des Azure-Mandanten an.

    Informationen dazu, wie Sie die ID Ihres Azure-Mandanten erhalten, finden Sie unter How to find your Microsoft Entra tenant ID in der Dokumentation zu Microsoft Entra.

  8. Wählen Sie Next aus.

  9. Gehen Sie auf der Seite Grant storage access wie folgt vor, um Snowflake Zugriff auf den Speicherort zu gewähren:

    1. Damit Snowflake die Zustimmung zum Herstellen einer Verbindung mit dem Azure-Speicher oder Microsoft OneLake erteilt, wählen Sie Provide consent aus.

      Die Microsoft-Berechtigungsanforderungsseite wird auf einer neuen Browser-Registerkarte geöffnet.

    2. Wählen Sie auf der Microsoft-Seite mit der Berechtigungsanforderung Accept aus. Mit dieser Aktion kann der Azure-Dienstprinzipal, der für Ihr Snowflake-Konto erstellt wurde, ein Zugriffstoken für eine bestimmte Ressource in Ihrem Mandantenbereich erhalten. Das Abrufen eines Zugriffstokens ist nur erfolgreich, wenn Sie dem Dienstprinzipal die entsprechenden Berechtigungen auf Ebene des Speicherkontos erteilen (siehe nächster Schritt).

      Die Microsoft-Berechtigungsanforderungsseite leitet auf die Snowflake-Firmenwebsite (snowflake.com) um.

    3. Kopieren Sie in Snowflake im Feld Multi-tenant app name den Namen der Snowflake-Clientanwendung für Ihr Konto in einen Texteditor. Im nächsten Schritt erteilen Sie dieser Anwendung die Berechtigung, ein Zugriffstoken für Ihren zulässigen Speicherort abzurufen.

  10. Um Ihrer Anwendung die Berechtigung zu erteilen, ein Zugriffstoken für Ihren zulässigen Speicherort abzurufen, gehen Sie wie folgt vor:

    1. Melden Sie sich beim Microsoft Azure-Portal an.

    2. Rufen Sie Azure Services » Storage Accounts auf. Wählen Sie den Namen des Speicherkontos aus, auf das der Snowflake-Dienstprinzipal Zugriff benötigt.

      Bemerkung

      Sie müssen die IAM-Berechtigungen für ein externes Volume auf der Ebene des Speicherkontos festlegen, nicht auf der Ebene des Containers.

    3. Wählen Sie Access Control (IAM) » Add role assignment aus.

    4. Wählen Sie die Rolle Storage Blob Data Contributor aus, um Lese- und Schreibzugriff auf den Snowflake-Dienstprinzipal zu gewähren.

      Bemerkung

      Die Rolle Storage Blob Data Contributor gewährt Schreibzugriff auf den Speicherort des externen Volumes. Um den Schreibzugriff vollständig zu konfigurieren, setzen Sie den Parameter ALLOW_WRITES des externen Volumes auf TRUE (den Standardwert).

    5. Wählen Sie + Select members aus.

    6. Suchen Sie nach dem Snowflake-Dienstprinzipal.

      Dies ist der Name der mehrmandantenfähigen App, den Sie im vorherigen Schritt von Snowflake kopiert haben.

      Wichtig

      • Es kann eine Stunde oder länger dauern, bis Azure den über die oben genannte Microsoft-Anforderungsseite angeforderten Snowflake-Dienstprinzipal erstellt hat. Wenn der Dienstprinzipal nicht sofort verfügbar ist, müssen Sie ein bis zwei Stunden warten und ihn dann erneut suchen.

      • Wenn Sie den Dienstprinzipal löschen, funktioniert das externe Volume nicht mehr.

      Rollenzuweisung über Azure Storage-Konsole hinzufügen
    7. Wählen Sie Review + assign aus.

      Bemerkung

      Beim Zuweisen einer Rolle kann es bis zu 10 Minuten dauern, bis die Änderungen wirksam werden. Weitere Informationen dazu finden Sie in der Microsoft Azure-Dokumentation unter Symptom: Änderungen bei der Rollenzuweisung werden nicht erkannt.

  11. Wählen Sie in Snowflake Next.

  12. Füllen Sie in Snowflake zum Konfigurieren des externen Volumes auf der Seite Configure external volume die folgenden Felder aus:

    Feld

    Beschreibung

    External volume name

    Geben Sie einen Namen für Ihr externes Volume ein.

    Storage base URL

    Gibt die Basis-URL für Ihren Cloudspeicherort an.

    Access scope

    Gibt an, ob Schreiboperationen für das externe Volume erlaubt sind; muss bei den folgenden Tabellen auf Allow writes gesetzt werden:

    • Iceberg-Tabellen, die Snowflake als Katalog verwenden.

    • Iceberg-Tabellen, die einen externen Katalog verwenden und beschreibbar sind. Extern verwaltete Iceberg-Tabellen sind beschreibbar, wenn Sie über eine mit dem Katalog verknüpfte Datenbank auf sie zugreifen, bei der derALLOWED_WRITE_OPERATIONS-Parameter auf TRUE eingestellt ist.

    Bei Iceberg-Tabellen, die aus Delta-Tabellendateien erstellt wurden, wird Snowflake durch Festlegen dieses Parameters auf Allow writes ermöglicht, Iceberg-Metadaten in Ihren externen Speicher zu schreiben. Weitere Informationen dazu finden Sie unter Delta-basierte Tabellen.

    Der Wert dieses Parameters muss auch mit den Berechtigungen übereinstimmen, die Sie für das Cloudspeicherkonto für jeden angegebenen Speicherort festgelegt haben.

    Bemerkung

    Wenn Sie planen, das externe Volume für das Lesen von extern verwalteten Iceberg-Tabellen zu verwenden, können Sie diesen Parameter auf „Off“ festlegen. Snowflake schreibt keine Daten oder Iceberg-Metadaten-Dateien in Ihren Cloudspeicher, wenn Sie Tabellen in einem externen Iceberg-Katalog lesen.

    Scope

    Wählen Sie aus, wo dieses externe Volume zum Standardspeicherort für zukünftige Iceberg-Tabellen werden soll. Mögliche Werte sind:

    • Do not set a default: Legen Sie das externe Volume nirgendwo als Standard fest.

    • Account: Legen Sie das externe Volume als Standard für Iceberg-Tabellen fest, die unter dem gesamten Konto erstellt werden.

    • Specific database: Legen Sie das externe Volume als Standard für Iceberg-Tabellen fest, die unter der von Ihnen angegebenen Datenbank erstellt werden. Um diese Datenbank anzugeben, verwenden Sie das Dropdown-Menü Database, das angezeigt wird, wenn Sie Specific database auswählen.

    • Specific schema: Legen Sie das externe Volume als Standard für Iceberg-Tabellen fest, die unter dem von Ihnen angegebenen Schema erstellt werden. Um dieses Schema anzugeben, verwenden Sie das Dropdown-Menü Database, das angezeigt wird, um zuerst die übergeordnete Datenbank des Schemas und dann das Schema auszuwählen.

    Comment (optional)

    Gibt einen Kommentar für das externe Volume an.

    Connectivity

    Gibt an, ob Sie ausgehende private Konnektivität verwenden möchten, um Ihre Sicherheit zu verbessern. Allgemeine Informationen zur Verwendung der ausgehenden privaten Konnektivität finden Sie unter Private Konnektivität zu externen Volumes für Microsoft Azure. Mögliche Werte sind:

    • Public (default): Verwenden des öffentlichen Internets

    • Private (Azure Private Endpoint): Verwenden ausgehender privater Konnektivität

  13. Wählen Sie Next aus.

    Auf der Seite Verify connection & create volume verifiziert Snowflake Ihre Verbindung zu Azure und zeigt dann die Meldung „Successfully connected“ an.

    Bemerkung

    Wenn Snowflake Ihre Verbindung nicht verifizieren kann, überprüfen Sie Ihre Berechtigung oder die Konfiguration des externen Volumes, und wählen Sie dann Verify again aus.

  14. Wählen Sie Create aus.

Nächste Schritte

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