AWS PrivateLink und Snowflake¶
Unter diesem Thema wird beschrieben, wie Sie AWS PrivateLink so konfigurieren, dass Ihr Snowflake-Konto direkt mit einem oder mehreren AWS-VPCs verbunden wird.
Beachten Sie, dass AWS PrivateLink kein von Snowflake bereitgestellter Service ist. Es ist ein AWS-Service, dessen Verwendung Snowflake für Ihr Snowflake-Konto unterstützt.
Unter diesem Thema:
Was ist AWS PrivateLink?¶
AWS PrivateLink ist ein AWS-Dienst zum Erstellen von privaten VPC-Endpunkten, die eine direkte, sichere Konnektivität zwischen Ihren AWS-VPCs und dem Snowflake-VPC unter Umgehung des öffentlichen Internets erlauben. Diese Konnektivität ist für AWS-VPCs in derselben AWS-Region möglich.
Für Schreiben von externen Funktionen können Sie auch AWS PrivateLink mit privaten Endpunkten verwenden.
Wenn Sie zudem eine lokale Umgebung (z. B. ein nicht gehostetes Rechenzentrum) nutzen, können Sie AWS Direct Connect zusammen mit AWS PrivateLink verwenden, um alle Ihre virtuellen und physischen Umgebungen zu einem einzigen privaten Netzwerk zusammenzuschließen.
Bemerkung
AWS Direct Connect ist ein separater AWS-Service, der unabhängig von AWS PrivateLink implementiert werden muss und außerhalb des Rahmens dieses Themas liegt. Wenden Sie sich an Amazon, um Informationen zur Implementierung von AWS Direct Connect zu erhalten.
Aktivieren von AWS PrivateLink¶
Bemerkung
Derzeit unterstützt der Self-Service-Aktivierungsprozess in diesem Abschnitt nicht die Autorisierung eines AWS-Kontobezeichners von einem verwalteten Clouddienst oder einem Drittanbieter.
Um einen AWS-Kontobezeichner für diesen Anwendungsfall zu autorisieren, müssen Sie den AWS-Kontobezeichner vom Anbieter abrufen und sich dann an den Snowflake-Support wenden.
Um AWS PrivateLink für Ihr Snowflake-Konto zu aktivieren, führen Sie die folgenden Schritte aus:
Führen Sie in Ihrer Befehlszeilenumgebung den folgenden AWS CLI STS-Befehl aus, und speichern Sie die Ausgabe. Die Ausgabe wird im nächsten Schritt als Wert für das Argument
federated_token
verwendet.aws sts get-federation-token --name sam
Beachten Sie, dass
get-federation-token
entweder einen Identitäts- und Zugriffsverwaltungsbenutzer in AWS oder den Root-Benutzer des AWS-Kontos benötigt. Weitere Informationen dazu finden Sie in der AWS-Dokumentation.Extrahieren Sie die 12-stellige Nummer im
"FederatedUserId"
-Wert (abgeschnitten). Wenn Ihr Token beispielsweise wie folgt lautet:{ ... "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }
Extrahieren Sie
185...
. Diese 12-stellige Nummer wird im nächsten Schritt als Wert für dieaws_id
verwendet.Rufen Sie als Snowflake-Kontoadministrator (d. h. ein Benutzer mit der Systemrolle ACCOUNTADMIN) die Funktion SYSTEM$AUTHORIZE_PRIVATELINK auf, um AWS PrivateLink für Ihr Snowflake-Konto zu autorisieren (d. h. zu aktivieren):
select SYSTEM$AUTHORIZE_PRIVATELINK ( '<aws_id>' , '<federated_token>' );
Wobei:
'aws_id'
Der 12-stellige Bezeichner, mit dem Ihr Amazon Web Services (AWS)-Konto als Zeichenfolge eindeutig identifiziert wird.
'federated_token'
Der Wert des Verbundtokens, der die Zugriffsanmeldeinformationen für einen Verbundbenutzer als Zeichenfolge enthält.
Beispiel:
use role accountadmin; select SYSTEM$AUTHORIZE_PRIVATELINK ( '185...', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "enw...", "SessionToken": "Fwo...", "Expiration": "2021-01-07T19:06:23+00:00" }, "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }' );
Um Ihre autorisierte Konfiguration zu überprüfen, rufen Sie in Ihrem Snowflake-Konto auf AWS die Funktion SYSTEM$GET_PRIVATELINK auf. Diese Funktion verwendet dieselben Argumente für 'aws_id'
und 'federated_token'
, die zur Autorisierung Ihres Snowflake-Kontos verwendet wurden.
Snowflake gibt bei einer erfolgreichen Autorisierung den Wert Account is authorized for PrivateLink.
zurück.
Wenn es notwendig ist, AWS PrivateLink in Ihrem Snowflake-Konto zu deaktivieren, rufen Sie die Funktion SYSTEM$REVOKE_PRIVATELINK auf, wobei Sie dieselben Argumentwerte für 'aws-id'
und 'federated_token'
verwenden.
Wichtig
Der Wert von federated_token
läuft nach 12 Stunden ab.
Wenn Sie zur Autorisierung, Verifizierung oder Deaktivierung Ihres Snowflake-Kontos, das Sie für AWS PrivateLink verwenden möchten, eine der Systemfunktionen aufrufen und das Token nicht gültig ist, generieren Sie das Token mit dem AWS CLI STS-Befehl neu, der am Anfang des Verfahrens in diesem Abschnitt gezeigt wurde.
Konfigurieren der AWS-VPC-Umgebung¶
Achtung
In diesem Abschnitt werden nur die Snowflake-spezifischen Details zum Konfigurieren Ihrer VPC-Umgebung behandelt.
Beachten Sie außerdem, dass Snowflake nicht für die Konfiguration der benötigten AWS-VPC-Endpunkte, Sicherheitsgruppenregeln und DNS-Einträge verantwortlich ist. Falls Sie Probleme bezüglich dieser Konfigurationsanforderungen haben, wenden Sie sich direkt an den AWS-Support.
VPC-Endpunkt (VPCE) erstellen und konfigurieren¶
Führen Sie die folgenden Schritte aus, um einen VPC-Endpunkt zu erstellen und zu konfigurieren: In Ihrer AWS-VPC-Umgebung:
Rufen Sie als Snowflake-Kontoadministrator (d. h. ein Benutzer mit der Systemrolle ACCOUNTADMIN) die Funktion SYSTEM$GET_PRIVATELINK_CONFIG auf, und erfassen Sie den
privatelink-vpce-id
-Wert.Erstellen Sie in Ihrer AWS-Umgebung einen VPC-Endpunkt, und verwenden Sie dabei den
privatelink-vpce-id
-Wert aus dem vorherigen Schritt.Autorisieren Sie in Ihrer AWS-Umgebung eine Sicherheitsgruppe für Services, die die ausgehende Snowflake-Verbindung mit den Ports
443
und80
für VPCE CIDR (Classless Inter-Domain Routing) verbinden.
Weitere Informationen dazu finden Sie in der AWS-Dokumentation unter:
VPC-Netzwerk konfigurieren¶
Für den Zugriff auf Snowflake über einen AWS PrivateLink-Endpunkt ist es notwendig, CNAME-Datensätze in Ihrem DNS zu erstellen, um die Endpunktwert aus der SYSTEM$GET_PRIVATELINK_CONFIG-Funktion in den DNS-Namen Ihres VPC-Endpunkts auflösen zu können.
Mit diesen Endpunktwerten können Sie auf Snowflake, Snowsight und Snowflake Marketplace zugreifen und gleichzeitig OCSP verwenden, um festzustellen, ob ein Zertifikat gesperrt wurde, wenn Snowflake-Clients versuchen, über HTTPS und Verbindungs-URLs eine Verbindung zu einem Endpunkt herzustellen.
Die zu erhaltenden Funktionswerte sind:
privatelink-account-url
privatelink-connection-ocsp-urls
privatelink-connection-urls
privatelink-ocsp-url
regionless-privatelink-account-url
regionless-snowsight-privatelink-url
snowsight-privatelink-url
Beachten Sie, dass die Werte für regionless-snowsight-privatelink-url
und snowsight-privatelink-url
den Zugang zu Snowsight und Snowflake Marketplace über private Konnektivität ermöglichen. Wenn Sie URL-Umleitungen aktivieren möchten, müssen Sie jedoch weitere Konfigurationen vornehmen.
Weitere Informationen dazu finden Sie unter Snowsight und Private Konnektivität.
Weitere Unterstützung bei der DNS-Konfiguration erhalten Sie von Ihrem internen AWS-Administrator.
Wichtig
Die Struktur des Hostnamens des OCSP-Cacheservers hängt von der Version Ihrer installierten Clients ab, wie in Schritt 1 von Konfigurieren Ihrer Snowflake-Clients (unter diesem Thema) beschrieben:
Wenn Sie die aufgelisteten Versionen (oder höher) nutzen, verwenden Sie das oben beschriebene Formular. Dies ermöglicht eine bessere DNS-Auflösung, wenn Sie in derselben Region über verschiedene Snowflake-Konten (z. B. für Entwicklung, Test und Produktion) verfügen. Wenn Sie Clienttreiber aktualisieren und OCSP mit PrivateLink verwenden, aktualisieren Sie die Firewall-Regeln, um den OCSP-Hostnamen auf die Zulassungsliste zu setzen.
Wenn Sie ältere Clientversionen verwenden, hat der Hostname des OCSP-Cacheservers die Form
ocsp.<Regions-ID>.privatelink.snowflakecomputing.com
(d. h. kein Kontobezeichner).Beachten Sie, dass Ihr DNS-Datensatz in private IP-Adressen innerhalb Ihrer VPC aufgelöst werden muss. Wenn er in öffentliche IP-Adressen aufgelöst wird, ist der Datensatz nicht korrekt konfiguriert.
AWS-VPC-Schnittstellenendpunkte für Amazon S3 erstellen¶
Dieser Schritt ist erforderlich, damit Amazon S3-Datenverkehr von Snowflake-Clients auf dem AWS-Backbone verbleibt. Die Snowflake-Clients (z. B. SnowSQL, JDBC-Treiber) erfordern den Zugriff auf Amazon S3, um verschiedene Laufzeitoperationen ausführen zu können.
Ein AWS-VPC-Netzwerk erlaubt keinen Zugriff über das öffentliche Internet. Daher müssen Sie private Konnektivität zu internen Stagingbereichen oder zu mehreren Gateway-Endpunkten für die Amazon S3-Hostnamen konfigurieren, die von den Snowflake-Clients benötigt werden.
Insgesamt gibt es drei Möglichkeiten, den Zugang zu Amazon S3 zu konfigurieren. Bei den ersten beiden Optionen wird das öffentliche Internet gemieden, bei der dritten Option nicht:
Konfigurieren Sie einen AWS-VPC-Schnittstellenendpunkt für interne Schnittstellenendpunkt.
Konfigurieren Sie einen Amazon S3-Gateway-Endpunkt. Weitere Informationen finden Sie in der nachstehenden Anmerkung.
Konfigurieren Sie keinen Schnittstellenendpunkt oder einen Gateway-Endpunkt. Dies führt zu einem Zugang über das öffentliche Internet.
Achtung
Um zu verhindern, dass die Kommunikation zwischen einem Amazon S3-Bucket und einer AWS-VPC mit Snowflake über das öffentliche Internet erfolgt, können Sie in derselben AWS-Region wie der Amazon S3-Bucket einen oder mehrere Amazon S3-Gateway-Endpunkte einrichten. Dies ist erforderlich, weil AWS PrivateLink nur Kommunikation zwischen VPCs zulässt, der Amazon S3-Bucket aber nicht in der VPC enthalten ist.
Sie können den Amazon S3-Gateway-Endpunkt so konfigurieren, dass der Zugriff auf bestimmte Benutzer, S3-Ressourcen, Routen und Subnetze beschränkt wird. Für Snowflake ist diese Konfiguration aber nicht erforderlich. Weitere Informationen dazu finden Sie unter Endpunkte für Amazon S3.
Es gibt zwei Möglichkeiten, die Amazon S3-Gateway-Endpunktrichtlinien so einzurichten, dass für Snowflake nur die Amazon S3-Ressourcen verwendet werden:
Sie verwenden die spezifischen Amazon S3-Hostnamenadressen, die von Ihrem Snowflake-Konto verwendet werden. Wie Sie die vollständige Liste der von Ihrem Konto verwendeten Hostnamen anzeigen, finden Sie unter SYSTEM$ALLOWLIST.
Sie verwenden ein Amazon S3-Hostnamenmuster, das mit den Snowflake-S3-Hostnamen übereinstimmt. In diesem Szenario gibt es zwei mögliche Verbindungstypen zu Snowflake: VPC-zuVPC oder Lokal-zu-VPC.
Beachten Sie je nach Verbindungstyp Folgendes:
- VPC-zu-VPC:
Stellen Sie sicher, dass der Amazon S3-Gateway-Endpunkt vorhanden ist. Optional können Sie die S3-Gateway-Endpunktrichtlinie so ändern, dass sie mit den spezifischen Hostnamenmustern in der Tabelle Amazon S3-Hostnamen übereinstimmt.
- Lokal-zu-VPC:
Hierfür müssen Sie ein Setup definieren, das die S3-Hostnamenmuster in die Firewall- oder Proxy-Konfiguration einbezieht, falls Amazon S3-Datenverkehr über das öffentlichen Gateway nicht zulässig ist.
In der folgenden Tabelle sind die S3-Hostnamenmuster aufgeführt, für die Sie Gateway-Endpunkte erstellen können, wenn Sie nicht darauf angewiesen sind, dass diese für die von Snowflake verwalteten S3-Buckets Ihres Kontos spezifisch sind:
Amazon S3-Hostnamen
Anmerkungen
Alle Regionen
sfc-*-stage.s3.amazonaws.com:443
Alle Regionen außer US East
sfc-*-stage.s3-<Regions-ID>.amazonaws.com:443
Beachten Sie, dass im Muster vor der Regions-ID ein Bindestrich (
-
) verwendet wird.sfc-*-stage.s3.<Regions-ID>.amazonaws.com:443
Beachten Sie, dass im Muster vor der Regions-ID ein Punkt (
.
) verwendet wird.
Weitere Informationen zum Erstellen von Gateway-Endpunkten finden Sie in der Gateway-VPC-Dokumentation.
Mit Snowflake verbinden¶
Vor dem Verbinden mit Snowflake können Sie optional mithilfe von SnowCD (Snowflake Connectivity Diagnostic Tool) die Netzwerkverbindung zu Snowflake und AWS PrivateLink evaluieren.
Weitere Informationen dazu finden Sie unter SnowCD und SYSTEM$ALLOWLIST_PRIVATELINK.
Andernfalls stellen Sie eine Verbindung zu Snowflake mit der Konto-URL für private Konnektivität her.
Wenn Sie eine Verbindung zu Snowsight über AWS PrivateLink herstellen möchten, verwenden Sie die Anleitung in der Snowsight-Dokumentation.
Blockieren des öffentlichen Zugriffs – Optional¶
Nach dem Testen der privaten Konnektivität von AWS PrivateLink mit Snowflake können Sie optional den öffentlichen Zugriff auf Snowflake blockieren. Das bedeutet, dass Benutzer nur dann auf Snowflake zugreifen können, wenn ihre Verbindungsanforderung von einer IP-Adresse innerhalb eines bestimmten CIDR-Blockierbereichs stammt, der in einer Snowflake-Netzwerkrichtlinie angegeben ist.
So blockieren Sie den öffentlichen Zugriff mithilfe einer Netzwerkrichtlinie:
Erstellen Sie eine neue Netzwerkrichtlinie, oder bearbeiten Sie eine vorhandene Netzwerkrichtlinie. Fügen Sie den CIDR-Blockierbereich für Ihre Organisation hinzu.
Aktivieren Sie die Netzwerkrichtlinie für Ihr Konto.
Weitere Details dazu finden Sie unter Steuern des Netzwerkdatenverkehrs mit Netzwerkrichtlinien.
Konfigurieren Ihres Snowflake-Clients¶
Sicherstellen, dass Snowflake-Clients OCSP-Cacheserver unterstützen¶
Der Snowflake-OCSP-Cacheserver verringert Verbindungsprobleme zwischen Snowflake-Clients und dem Server. Stellen Sie sicher, dass Sie die folgenden Clientversionen verwenden, damit Ihre installierten Snowflake-Clients den OCSP-Servercache nutzen können:
SnowSQL 1.1.57 (oder höher)
Python-Konnektor 1.8.2 (oder höher)
JDBC-Treiber 3.8.3 (oder höher)
ODBC-Treiber 2.19.3 (oder höher)
Bemerkung
Der Snowflake-OCSP-Cacheserver überwacht Port 80
. Daher wurden Sie in VPC-Endpunkt (VPCE) erstellen und konfigurieren angewiesen, Ihre AWS PrivateLink-VPCE-Sicherheitsgruppe so zu konfigurieren, dass dieser Port zusammen mit Port 443
(für gesamten weiteren Snowflake-Datenverkehr) akzeptiert wird.
Hostnamen für Snowflake-Clients angeben¶
Jeder Snowflake-Client benötigt einen Hostnamen, um eine Verbindung zu Ihrem Snowflake-Konto herzustellen.
Der Hostname entspricht dem Hostnamen, den Sie in den CNAME-Datensätzen in VPC-Netzwerk konfigurieren angegeben haben.
Dieser Schritt gilt nicht für den Zugriff auf Snowflake Marketplace.
Beispiel für ein Konto mit dem Namen xy12345
:
Wenn sich das Konto in US West befindet, lautet der Hostname
xy12345.us-west-2.privatelink.snowflakecomputing.com
.Wenn sich das Konto in EU (Frankfurt) befindet, lautet der Hostname
xy12345.eu-central-1.privatelink.snowflakecomputing.com
.
Wichtig
Die Methode zur Spezifizierung des Hostnamens hängt vom jeweiligen Client ab:
Geben Sie für den Spark-Konnektor sowie für die ODBC- und JDBC-Treiber den gesamten Hostnamen an.
Bei allen anderen Clients geben Sie nicht den gesamten Hostnamen an.
Geben Sie stattdessen den Kontobezeichner mit dem
privatelink
-Segment (d. h.<Kontobezeichner>.privatelink
) an, das Snowflake mitsnowflakecomputing.com
verkettet, um den Hostnamen dynamisch zu erstellen.
Weitere Informationen zum Angeben des Kontonamens oder Hostnamens für einen Snowflake-Client finden Sie in der Dokumentation des jeweiligen Clients.
Verwenden von SSO mit AWS PrivateLink¶
Snowflake unterstützt die Verwendung von SSO mit AWS PrivateLink. Weitere Informationen dazu finden Sie unter:
Verwenden der Clientumleitung mit AWS PrivateLink¶
Snowflake unterstützt die Verwendung der Clientumleitung mit AWS PrivateLink.
Weitere Informationen dazu finden Sie unter Umleiten von Clientverbindungen.
Verwenden von Replikation und Tri-Secret Secure mit privater Konnektivität¶
Snowflake unterstützt das Replizieren Ihrer Daten vom Quellkonto in ein Zielkonto, unabhängig davon, ob Sie Tri-Secret Secure oder dieses Feature im Zielkonto aktivieren.
Weitere Informationen dazu finden Sie unter Datenbankreplikation und -verschlüsselung.
Problembehandlung¶
Beachten Sie die folgenden Artikel der Snowflake-Community: