AWS VPC – Schnittstellenendpunkte für von Snowflake verwaltete Speichervolumen

Unter diesem Thema werden Konzepte und detaillierte Anweisungen für das Verbinden mit von Snowflake verwalteten Speichervolumen über AWS VPC-Schnittstellenendpunkte bereitgestellt.

Übersicht

Wenn Sie eine externe Abfrage-Engine wie Apache Spark verwenden, um aus einer Iceberg-Tabelle zu lesen oder in sie zu schreiben, die von Snowflake verwalteten Speicher nutzt, kommuniziert die Engine direkt mit dem nativen Iceberg-Volumen, das auf Amazon S3 gehostet wird. Standardmäßig kann dieser Datenverkehr das öffentliche Internet durchlaufen.

`AWS PrivateLink für Amazon S3<https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html>`_ kann mit VPC-Schnittstellenendpunkten kombiniert werden, um eine sichere Konnektivität zum verwalteten Speichervolumen bereitzustellen. Diese Konfiguration stellt sicher, dass Lese- und Schreibvorgänge Ihrer externen Abfrage-Engine auf das native Iceberg-Volumen über das AWS-interne Netzwerk und nicht über das öffentliche Internet erfolgen.

Vorteile

Die Implementierung von VPC-Schnittstellenendpunkten für den Zugriff auf von Snowflake verwaltete Speichervolumen bietet die folgenden Vorteile:

  • Daten werden nicht über das öffentliche Internet übertragen, wenn externe Abfrage-Engines vom Snowflake-verwalteten Iceberg-Volumen lesen oder darauf schreiben.

  • Client- und SaaS-Anwendungen, wie Microsoft PowerBI, die außerhalb der AWS VPC ausgeführt werden, können sich sicher mit Snowflake verbinden.

  • Administratoren müssen keine Änderung an den Firewall-Einstellungen vornehmen, um auf Volumendaten zuzugreifen.

  • Administratoren können konsistente Sicherheit und Überwachung für die Art und Weise implementieren, wie sich Abfrage-Engines mit dem Speicher verbinden.

Einschränkungen

AWS unterstützt keine regionsübergreifenden VPC-Schnittstellenendpunkte für den Amazon S3-Dienst. Daher muss sich Ihr VPC-Schnittstellenendpunkt in derselben Region wie Ihr Snowflake-Konto befinden, um eingehende Konnektivität zu Ihrem von Snowflake verwalteten Speichervolumen bereitzustellen.

Die regionsübergreifende Unterstützung von AWS PrivateLink ist in Regionen für Regierungsbehörden oder in der Volksrepublik China nicht verfügbar.

Kunden, die eine SnowGov-Region für Federal Information Processing Standard (FIPS) verwenden, sollten sich darüber im Klaren sein, dass AWS Privatelink für Amazon S3 FIPS-Endpunkte nicht unterstützt.

Weitere Informationen über die AWS-Regionen, in denen FIPS erzwungen wird, siehe Unterstützte Cloudregionen.

Weitere Informationen zum Auffinden der Regionsnamen für Ihr Konto finden Sie unter Namen des Cloudanbieters der Region für Ihr Konto suchen.

Weitere Informationen zu den Einschränkungen von AWS PrivateLink finden Sie in der AWS-Dokumentation.

Erste Schritte

Bevor Sie AWS und Snowflake so konfigurieren, dass Anfragen über AWS PrivateLink auf ein von Snowflake verwaltetes Speichervolumen zugreifen können, müssen Sie die Voraussetzungen erfüllen.

Voraussetzungen

  • AWS PrivateLink für S3.

    Wichtig

    AWS PrivateLink für S3 ist ein AWS-Dienst, der in Ihrer Cloudumgebung aktiviert werden muss.

    Weitere Unterstützung bei der Konfiguration und Implementierung dieses Dienstes erhalten Sie von Ihrem internen AWS-Administrator.

  • Aktualisieren Sie die Zulassungsliste der Firewall wie folgt:

    • Wenn Sie eine ausgehende Firewall verwenden, stellen Sie sicher, dass diese alle von Snowflake benötigten URLs zulässt. Weitere Details dazu finden Sie unter SnowCD (Connectivity Diagnostic Tool).

  • Nur für us-east-1-Kunden: Wenn Sie einen der folgenden Snowflake-Clients für die Verbindung zu Snowflake verwenden, müssen Sie ein Upgrade auf die folgende Clientversionen vornehmen:

    • JDBC-Treiber: 3.13.3 (oder höher)

    • ODBC-Treiber: 2.23.2 (oder höher)

    • Python-Konnektor für Snowflake: 2.5.1 (oder höher)

    • SnowSQL: 1.2.17 (oder höher)

      • Aktualisieren Sie SnowSQL, bevor Sie dieses Feature verwenden. Weitere Informationen dazu finden Sie unter Installieren von SnowSQL.

      • Ab Version 1.3.0 deaktiviert SnowSQL standardmäßig automatische Upgrades, um potenzielle Probleme zu vermeiden, die sich auf Produktionsumgebungen auswirken können, wenn ein automatisches Upgrade erfolgt. Um ein Upgrade durchzuführen, sollten Sie neue Versionen manuell herunterladen und installieren, vorzugsweise in einer nicht produktiven Umgebung. Snowflake empfiehlt, diese Einstellung deaktiviert zu lassen, aber Sie können das Auto-Upgrade-Verhalten manuell aktivieren, indem Sie die Option SnowSQL noup <label-snowsql_enable_auto_upgrade> konfigurieren.

Zugriff auf ein von Snowflake verwaltetes Speichervolumen mit einem Schnittstellenendpunkt

Um einen VPC-Schnittstellenendpunkt für den Zugriff auf ein von Snowflake verwaltetes Speichervolumen zu konfigurieren, müssen die folgenden Rollen in Ihrer Organisation zusammenarbeiten:

  1. Snowflake-Kontoadministrator (d. h. ein Benutzer mit der Snowflake-Systemrolle ACCOUNTADMIN).

  2. AWS-Administrator

  3. Netzwerkadministrator

Abhängig von der Organisation kann es notwendig sein, den Konfigurationsaufwand mit mehr als einer Person oder einem Team zu koordinieren, um die folgenden Konfigurationsschritte zu implementieren.

Prozedur

Führen Sie die folgenden Schritte aus, um einen sicheren Zugriff auf ein von Snowflake verwaltetes Speichervolumen über einen VPC-Endpunkt zu konfigurieren und umzusetzen:

  1. Erstellen Sie als AWS-Administrator mit der VPC Console einen AWS-Endpunkt für S3. Notieren Sie sich den VPCE-DNS-Namen zur Verwendung im nächsten Schritt. Notieren Sie sich keine VPCE DNS-Zonennamen.

    Sobald der Endpunkt erstellt ist, kann der VPCE-DNS-Name mithilfe von Beschreibung eines Schnittstellenendpunkts gefunden werden.

    Beispiel-VPCE DNS-Name: *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  2. Konfigurieren Sie Ihre externe Abfrage-Engine für die direkte Verwendung des VPCE DNS-Namen. Ersetzen Sie ` *` im VPCEDNS-Namen mit Bucket. Beispiel für Apache Spark:

    .config("spark.sql.catalog.<catalog_name>.s3.endpoint",
            "bucket.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com")
    

    Tipp

    Verwenden Sie zum Testen des Features ein separates Snowflake-Konto, und konfigurieren Sie eine private DNS-Zone in einer Test-VPC, damit die Tests isoliert sind und sich nicht auf Ihre anderen Workloads auswirken.

Sperren des öffentlichen Zugriffs

Nachdem Sie VPC-Schnittstellenendpunkte konfiguriert haben, um über AWS PrivateLink auf das verwaltete Speichervolumen zuzugreifen, können Sie den Zugriff auf das Volumen optional mithilfe von Netzwerkregeln und Netzwerkrichtlinien einschränken.

Voraussetzungen

Um Netzwerkregeln zur Beschränkung des Zugriffs auf ein von Snowflake verwaltetes Speichervolumen zu verwenden, muss der Kontoadministrator den Parameter ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME aktivieren:

USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME = true;

Erstellen einer Netzwerkregel

Erstellen Sie eine Netzwerkregel mit MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME und TYPE = AWSVPCEID, um den Zugriff auf das verwaltete Speichervolumen basierend auf VPC-Endpunktbezeichnern einzuschränken:

CREATE NETWORK RULE managed_volume_rule
  TYPE = AWSVPCEID
  VALUE_LIST = ('vpce-123abc3420c1931')
  MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME
  COMMENT = 'Allow access from Horizon and S3 VPC endpoints';

Anwenden einer Netzwerkrichtlinie

Erstellen Sie eine Netzwerkrichtlinie, die die Netzwerkregel verwendet, und wenden Sie sie auf das Konto an:

CREATE NETWORK POLICY managed_volume_policy
  ALLOWED_NETWORK_RULE_LIST = ('managed_volume_rule')
  COMMENT = 'Restrict Snowflake-managed storage volume access to specific VPC endpoints';

ALTER ACCOUNT SET NETWORK_POLICY = managed_volume_policy;