AWS-VPC-Schnittstellenendpunkte für interne Stagingbereiche¶
Unter diesem Thema werden Konzepte und detaillierte Anweisungen für die Verbindung zu internen Snowflake-Stagingbereichen über private AWS VPC-Schnittstellenendpunkte bereitgestellt.
Unter diesem Thema:
Übersicht¶
AWS VPC-Schnittstellenendpunkte und AWS PrivateLink für Amazon S3 können kombiniert werden, um eine sichere Konnektivität zu internen Snowflake-Stagingbereichen bereitzustellen. Diese Einrichtung stellt sicher, dass die Operationen zum Laden von Daten in interne Snowflake-Stagingbereiche und das Entladen von Daten aus internen Snowflake-Stagingbereichen das interne AWS-Netzwerk verwenden und nicht über das öffentliche Internet erfolgen.
Bevor AWS VPC-Schnittstellenendpunkte für den Zugriff auf interne Stagingbereiche unterstützt wurden, war es notwendig, eine Proxy-Farm innerhalb der AWS VPC zu erstellen, um den sicheren Zugriff auf interne Snowflake-Stagingbereich zu ermöglichen. Mit der zusätzlichen Unterstützung von VPC-Schnittstellenendpunkten für interne Snowflake-Stagingbereiche können Benutzer und Clientanwendungen jetzt über das private AWS-Netzwerk auf interne Snowflake-Stagingbereiche zugreifen. Die folgende Abbildung fasst diese neue Funktion zusammen:
Beachten Sie Folgendes in Bezug auf die Zahlen in der Abbildung für BEFORE:
Benutzer haben zwei Optionen, um eine Verbindung zu einem internen Snowflake-Stagingbereich herzustellen:
Option A ermöglicht eine direkte lokale (On-premises) Verbindung mit dem internen Stagingbereich, was mit Nummer 1 gekennzeichnet ist.
Option B ermöglicht eine Verbindung zum internen Stagingbereich über eine Proxy-Farm, was mit den Nummern 2 und 3 gekennzeichnet ist.
Wenn Sie die Proxy-Farm verwenden, können Benutzer auch direkt eine Verbindung zu Snowflake herstellen, was mit Nummer 4 gekennzeichnet ist.
Beachten Sie Folgendes in Bezug auf die Zahlen in der Abbildung für AFTER:
Durch die Aktualisierungen an diesem Feature ist es nicht mehr erforderlich, für die Verbindung zu Snowflake oder zu einem internen Snowflake-Stagingbereich eine Proxy-Farm zu verwenden.
Ein lokaler Benutzer kann eine direkte Verbindung zu Snowflake herstellen, was mit Nummer 5 gekennzeichnet ist.
Um eine Verbindung zu einem internen Snowflake-Stagingbereich herzustellen, verbinden sich lokale Benutzer mit einem Schnittstellenendpunkt, Nummer 6, und verwenden dann AWS PrivateLink für Amazon S3, um sich mit dem internen Snowflake-Stagingbereich zu verbinden, wie durch Nummer 7 gekennzeichnet.
Für jeden bereitgestellten internen Stagingbereich gibt es einen eigenen Amazon S3-Bucket. Um die Daten jedes Snowflake-Kontos zu organisieren, wird ein Präfix im Amazon S3-Bucket des internen Stagingbereichs verwendet. Die Endpunkt-URLs der Amazon S3-Buckets sind unterschiedlich, je nachdem, ob für die Verbindung zum Bucket private Konnektivität (d. h. AWS PrivateLink für Amazon S3) verwendet wird.
- Öffentliche globale Amazon S3-Endpunkt-URL:
<Bucketname>.s3.region.amazonaws.com/prefix
- Private Amazon S3-Endpunkt-URL:
<Bucketname>.<vpceID>.s3.<Region>.vpce.amazonaws.com/prefix
Vorteile¶
Die Implementierung von VPC-Schnittstellenendpunkten für den Zugriff auf interne Snowflake-Stagingbereiche bietet die folgenden Vorteile:
Daten in internen Stagingbereichen werden nicht über das öffentliche Internet übertragen.
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 die Daten in den internen Stagingbereichen zugreifen zu können.
Administratoren können konsistente Sicherheit und Überwachung hinsichtlich der Art und Weise implementieren, wie sich Benutzer mit Speicherkonten verbinden.
Einschränkungen¶
Weitere Informationen zu Einschränkungen von AWS PrivateLink finden Sie in der AWS-Dokumentation.
Erste Schritte¶
Bevor Sie AWS und Snowflake so konfigurieren, dass Anforderungen auf einen interne Snowflake-Stagingbereich über AWS PrivateLink zugreifen können, müssen Sie Folgendes tun:
Wählen Sie die Implementierungsstrategie aus, die zu Ihrer Umgebung passt.
Voraussetzungen¶
Setzen Sie den Parameter ENABLE_INTERNAL_STAGES_PRIVATELINK, um die Unterstützung für die Verbindung mit einem internen Stagingbereich über AWS PrivateLink zu aktivieren. Bei beiden unter diesem Thema erörterten Implementierungsstrategien muss der Kontoadministrator die Ausführung übernehmen:
use role accountadmin; alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
-
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.
Beachten Sie, dass bei Verwendung der SnowSQL-Option
--noup
das automatische Upgrade von SnowSQL deaktiviert ist und keine neue SnowSQL-Version heruntergeladen werden kann. Um ein Upgrade durchzuführen, deaktivieren Sie die Option--noup
, und aktivieren Sie diese nach Abschluss des Upgrades wieder.
Auswählen einer Implementierungsstrategie¶
Die Wahl der passenden Implementierungsstrategie hängt davon ab, ob Ihre Organisation AWS PrivateLink für den Zugriff auf einen einzelnen internen Stagingbereich oder für mehrere interne Stagingbereiche verwendet.
Wenn Ihre Organisation auf den internen Stagingbereich eines einzelnen Kontos zugreift, finden Sie entsprechende Informationen unter Zugriff auf einen internen Stagingbereich mit einem Schnittstellenendpunkt.
Wenn Ihre Organisation auf die internen Stagingbereiche mehrerer Konten zugreift, finden Sie entsprechende Informationen unter Zugriff auf interne Stagingbereiche mit dedizierten Schnittstellenendpunkten. Bei dieser Strategie werden mehrere Schnittstellenendpunkte für die Verbindung verwendet, einer für jeden internen Stagingbereich.
Zugriff auf einen internen Stagingbereich mit einem Schnittstellenendpunkt¶
Die folgende Implementierungsstrategie wird empfohlen, wenn Ihre Organisation auf den internen Stagingbereich eines Einzelkontos zugreift. Wenn Sie von Ihrem VPC auf mehrere interne Stagingbereiche zugreifen, finden Sie entsprechende Informationen unter Zugriff auf interne Stagingbereiche mit dedizierten Schnittstellenendpunkten.
Um einen VPC-Schnittstellenendpunkt für den Zugriff auf einen internen Snowflake-Stagingbereich zu konfigurieren, ist die Unterstützung der folgenden drei Rollen in Ihrer Organisation erforderlich:
Snowflake-Kontoadministrator (d. h. ein Benutzer mit der Snowflake-Systemrolle ACCOUNTADMIN)
AWS-Administrator
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.
Verfahren¶
Führen Sie die folgenden Schritte aus, um den sicheren Zugriff auf einen internen Snowflake-Stagingbereich über einen VPC-Endpunkt zu konfigurieren und zu implementieren:
Führen Sie als Snowflake-Kontoadministrator die folgenden Anweisungen in Ihrem Snowflake-Konto aus, und notieren Sie sich den durch den Schlüssel
privatelink_internal_stage
definierten Wert. Beachten Sie, dass der Name des Amazon S3-Buckets im ersten URL-Segment von links definiert ist. Weitere Informationen dazu finden Sie unter ENABLE_INTERNAL_STAGES_PRIVATELINK und SYSTEM$GET_PRIVATELINK_CONFIG.use role accountadmin; alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true; select key, value from table(flatten(input=>parse_json(system$get_privatelink_config())));
Erstellen Sie als AWS-Administrator mit der AWS Console einen VPC-Endpunkt für AWS PrivateLink 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.
In diesem Beispiel wird ein Platzhalter (d. h.
*
) als führendes Zeichen im VPCE-DNS-Namen aufgeführt. Ersetzen Sie den führenden Platzhalter durch den Namen des Amazon S3-Buckets aus dem vorherigen Schritt. Beispiel:- Ersetzen Sie:
*.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com
- durch:
<Bucketname>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com
Ändern Sie als Netzwerkadministrator die DNS-Einstellungen wie folgt, um die folgende URL aufzulösen:
<Name_des_Buckets>.s3.<Region>.amazonaws.com
zum VPCE-DNS-Namen, nachdem der führende Platzhalter durch den Amazon S3-Bucketnamen ersetzt wurde.In diesem Beispiel wird
<Name_des_Buckets>.s3.<Region>.amazonaws.com
in<Name_des_Buckets>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com
aufgelöst.Tipp
Verwenden Sie keine Platzhalterzeichen (d. h.
*
) bei der DNS-Zuordnung, da dies möglicherweise Auswirkungen auf den Zugriff auf andere Amazon S3-Buckets außerhalb von Snowflake hat.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.
Wenn die Verwendung eines separaten Snowflake-Kontos nicht möglich ist, verwenden Sie einen Testbenutzer für den Zugriff auf Snowflake von einer Test-VPC aus, in der die DNS-Änderungen vorgenommen werden.
Um von lokalen Anwendungen aus zu testen, verwenden Sie die DNS-Weiterleitung, um Anforderungen an die private AWS-Zone in der VPC weiterzuleiten, in der die DNS-Einstellungen vorgenommen werden. Wenn es Clientanwendungen sowohl in der VPC als auch lokal gibt, verwenden Sie AWS Transit Gateway.
Führen Sie den folgenden Befehl auf dem Clientcomputer aus, um zu überprüfen, ob die zurückgegebene IP-Adresse die private IP-Adresse des Speicherkontos ist:
dig <bucket_name>.s3.<region>.amazonaws.com
Überprüfen Sie für Snowflake-Konten in
us-east-1
, ob Ihre Snowflake-Clients die neueste Version aufweisen.
Zugriff auf interne Stagingbereiche mit dedizierten Schnittstellenendpunkten¶
Die folgende Implementierungsstrategie wird empfohlen, wenn Ihre Organisation auf die internen Stagingbereiche mehrerer Konten zugreift.
Der Parameter S3_STAGE_VPCE_DNS_NAME ermöglicht es Benutzern, ein Snowflake-Konto mit dem DNS-Namen eines Amazon S3-Schnittstellenendpunkts zu verknüpfen. Dadurch können Organisationen mit mehreren Snowflake-Konten in einer AWS-Bereitstellung jeden internen Stagingbereich mit einem anderen Schnittstellenendpunkt verknüpfen. Wenn jeder interne Stagingbereich über einen eigenen Schnittstellenendpunkt verfügt, wird der Netzwerkdatenverkehr zu einem bestimmten internen Stagingbereich vom Netzwerkdatenverkehr zu anderen internen Stagingbereichen isoliert.
Bevor Sie fortfahren, vergewissern Sie sich, dass Sie die Voraussetzungen erfüllt haben.
Vorteile¶
Die Strategie, bei der ein interner Stagingbereich innerhalb einer AWS-Bereitstellung über einen dedizierten Amazon S3-Schnittstellenendpunkt verfügt, hat die folgenden Vorteile:
- Sicherheit:
Jedes Konto kann eine andere Sicherheitsstrategie haben, da einzelne Schnittstellenendpunkte unterschiedliche Sicherheitskonfigurationen haben können.
- Chargeback-Modelle:
Unternehmen können den Netzwerkdatenverkehr je nach Kontotyp isolieren (z. B. Produktion vs. Entwicklung) und die Kosten, die mit den über einen Endpunkt übertragenen Daten verbunden sind, dem passenden Konto zuordnen.
- DNS-Verwaltung:
Der DNS-Name eines Amazon S3 Schnittstellenendpunkts ist ein global eindeutiger Name, der den spezifischen Endpunkt innerhalb einer bestimmten Region lokalisiert. AWS registriert diesen DNS-Namen automatisch in seinem öffentlichen DNS-Dienst, sodass dieser öffentlich auflösbar ist. Aus diesen Gründen muss ein Administrator keine zusätzliche DNS-Konfiguration vornehmen, um den Datenverkehr über einen Amazon S3-Schnittstellenendpunkt zu einem internen Stagingbereich zu leiten. So muss der Administrator beispielsweise bei der Konfiguration des Amazon Route 53-DNS-Dienstes keine private gehostete Zone (PHZ) einrichten oder einen DNS-Namen registrieren, der auf einen Endpunkt verweist.
Konfiguration¶
Die Strategie zur Isolation des Netzwerks umfasst die folgenden Elemente:
In AWS erstellt ein Administrator für jedes Snowflake-Konto in der Organisation einen neuen Amazon S3-Schnittstellenendpunkt. Wenn eine Organisation beispielsweise zwei Konten in der Snowflake-Bereitstellung hat, erstellt der Administrator zwei Schnittstellenendpunkte.
In Snowflake verwendet ein Administrator den Parameter S3_STAGE_VPCE_DNS_NAME, um jedes Snowflake-Konto mit dem DNS-Namen seines dedizierten Schnittstellenendpunkts zu verknüpfen. Der gesamte Datenverkehr zum internen Stagingbereich des Kontos wird über diesen Schnittstellenendpunkt geleitet.
AWS-Konfiguration¶
In Ihrer VPC als AWS-Administrator:
Erstellen Sie einen separaten Amazon S3-Schnittstellenendpunkt für jedes Ihrer Snowflake-Konten.
Verwenden Sie für jeden dieser Endpunkte die AWS VPC Management Console, um Folgendes zu tun:
Öffnen Sie den Endpunkt, um seine Details anzuzeigen.
Suchen Sie das Feld DNS Names, und kopieren Sie den regionsspezifischen DNS-Namen in dieses Feld. Der Parameter Snowflake S3_STAGE_VPCE_DNS_NAME wird später auf diesen Wert gesetzt.
Das Format des regionsspezifischen DNS-Namens sieht wie folgt aus:
*.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com
. Obwohl AWS auch einen auf die Verfügbarkeitszonen bezogenen DNS-Namen bereitstellt, empfiehlt Snowflake den regionsspezifischen DNS-Namen, da dieser hohe Verfügbarkeit mit Failover-Funktionen bietet.
Snowflake-Konfiguration¶
Nachdem der AWS-Administrator den Schnittstellenendpunkt für den internen Stagingbereich eines Snowflake-Kontos erstellt hat, kann der Snowflake-Administrator den Parameter S3_STAGE_VPCE_DNS_NAME verwenden, um den DNS-Namen dieses Endpunkts mit dem Konto zu verknüpfen.
Der Parameter S3_STAGE_VPCE_DNS_NAME muss auf den regionsspezifischen DNS-Name des Schnittstellenendpunkts gesetzt sein, der mit einem bestimmten internen Stagingbereich verknüpft ist. Das Standardformat beginnt mit einem Sternchen (*
) und endet mit vpce.amazonaws.com
(z. B. *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com
).
Der Kontoadministrator kann zum Beispiel Folgendes ausführen, um einen Endpunkt mit dem aktuellen Konto zu verknüpfen:
alter account set S3_STAGE_VPCE_DNS_NAME='*.vpce-sd98fs0d9f8g.s3.us-west2.vpce.amazonaws.com';
Endgültiger DNS-Wert¶
Der endgültige DNS-Name, der mit einem Konto verknüpft ist, hat das Format: <bucketname>.bucket.vpce-<vpceid>.s3.<region>.vpce.amazonaws.com
Wobei:
<bucketname>
ist der Name des Amazon S3-Buckets des internen Stagingbereichs.<vpceid>
ist der eindeutige Bezeichner des mit dem Konto verknüpften Amazon S3-Schnittstellenendpunkts.<region>
ist die Cloudregion, in der Ihr Snowflake-Konto gehostet wird.
Der endgültige DNS-Name wird in den Protokollen jedes Treibers angezeigt, der eine Verbindung zu dem internen Stagingbereich herstellt.