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

Voraussetzungen

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

  • Ein Azure-Speichercontainer in der gleichen Region, in der sich Ihr Snowflake-Konto befindet.

  • 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 Zulassen von VNet-Subnetz-IDs, um Snowflake explizit Zugriff auf Ihr Azure-Speicher-Konto zu gewä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 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://.

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).

  8. 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
  9. 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_s3_external_volume');
Copy

Nächste Schritte

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