Pinning privater Konnektivitätendpunkte für eingehenden Datenverkehr¶
Für Snowflake -Konten auf Amazon Web Services (AWS) und Microsoft Azure (Azure) können Sie private Endpunkte für Konnektivität Ihrem Konto anheften (festlegen, registrieren und zuordnen). Durch das Pinning privater Endpunkte an Ihr Konto stellt Snowflake sicher, dass der eingehende Datenverkehr, der von den angehefteten Endpunkten ausgeht, nur an das Konto geht, das sie angeheftet hat. Snowflake empfiehlt die Verwendung von angehefteten Endpunkten, Netzwerkrichtlinien und Netzwerkregeln, um Ihre Sicherheitslage zu verbessern, indem Sie die Angriffsfläche für Ihr Snowflake-Konto reduzieren.
Tipp
Mit Pinning können nur autorisierte private Endpunkte verwendet werden, um Datenverkehr aus dem Kundennetzwerk an ein bestimmtes Snowflake-Konto zu senden. Wenn Sie den eingehenden Zugriff auf Snowflake-Konten aus bestimmten Listen von IPs und VPCE IDs/LinkIDs beschränken möchten, verwenden Sie Netzwerkrichtlinien und Netzwerkregeln.
Snowflake erzwingt für jede über eine private Konnektivität empfangene Anfrage eine Überprüfung des privaten Endpunkts am Eingangspunkt. Diese Überprüfung vergleicht zwei wichtige Informationen:
Die Endpunkt-ID, die im Header der Anfrage angegeben ist.
Das Konto, das den Endpunkt angeheftet hat, wie in den Metadaten von Snowflake aufgezeichnet.
Wenn diese übereinstimmen – mit anderen Worten, wenn die Anfrage von dem Konto ausgeht, das den Endpunkt registriert hat –, dann erlaubt Snowflake die Verbindung. Andernfalls blockiert Snowflake die Verbindung.
Beispiel:

Angehefteter privater Endpunkt |
Snowflake-Konto, das einen privaten Endpunkt angeheftet hat |
Angefragtes Snowflake-Zielkonto |
Entscheidung der Snowflake Pinning-Überprüfung |
---|---|---|---|
PE1 |
A1 |
A1 |
ALLOW |
PE1 |
A1 |
A2 |
DENY |
PE2 |
A2 |
A1 |
DENY |
PE2 |
A2 |
A2 |
ALLOW |
Voraussetzungen¶
Bevor Sie einen privaten Endpunkt anheften, müssen Sie Folgendes tun:
Konfigurieren Sie einen privaten Link für Ihr Snowflake-Konto auf AWS oder Azure.
Schränken Sie den Geltungsbereich des Zugriffstokens ein, mit dem Sie einen Endpunkt bei Ihrem Snowflake-Konto registrieren.
Weitere Informationen zur Konfiguration von privaten Links finden Sie unter AWS PrivateLink oder Azure Private Link.
Verwalten Sie die Durchsetzung mit dem Argument „Verzögerungszeit“¶
Nachdem Sie Ihre privaten Links konfiguriert haben, rufen Sie die Systemfunktion SYSTEM$REGISTER_PRIVATELINK_ENDPOINT auf, um einen privaten Konnektivitätsendpunkt für Ihr Snowflake-Konto zu registrieren. In diesem Funktionsaufruf können Sie optional eine Verzögerungszeit angeben. Verzögerungszeit ist die Anzahl der Minuten, die gewartet wird, bevor die Registrierung des privaten Endpunkts erzwungen wird. Der Wert für die Verzögerungszeit verhindert, dass Sie sich selbst versehentlich den Zugriff auf Snowflake verwehren, wenn Sie einen neuen privaten Endpunkt registrieren. Die maximale Verzögerungszeit beträgt 1.440 Minuten (24 Stunden), und der Standardwert ist 60 Minuten.
Der private Endpunkt, den Sie für Ihr Snowflake-Konto registrieren, kann auch für andere Snowflake-Konten registriert werden. Sie könnten beispielsweise drei Snowflake-Konten haben und sicherstellen wollen, dass die Verbindung zu jedem Snowflake-Konto nur über einen registrierten privaten Endpunkt läuft. Wenn Sie das Argument „Verzögerungszeit“ auf 60 Minuten setzen, haben Sie genügend Zeit, um den privaten Konnektivitätsendpunkt für jedes Snowflake-Konto zu registrieren.
Wenn Sie jedoch einen privaten Konnektivitätsendpunkt registrieren und eine Verzögerungszeit angeben, müssen Sie den lokalen Zeitstempel des ersten Kontos beachten, in dem Sie die Systemfunktion aufrufen. Die Durchsetzungszeit basiert auf dem lokalen Zeitstempel des ersten Kontos, wenn Sie die Systemfunktion aufrufen, plus einer von Ihnen angegebenen Verzögerungszeit, relativ zu einem bestimmten privaten Konnektivitätsendpunkt.
Nehmen wir zum Beispiel einen einzelnen privaten Konnektivitätsendpunkt mit drei Konten in derselben Zeitzone:
Wenn Sie die Systemfunktion in
account1
um 10:00 AM aufrufen und eine Verzögerungszeit von 60 Minuten angeben, ist die Durchsetzungszeit 11:00 AM.Wenn Sie die Systemfunktion in
account2
um 10:30 AM aufrufen, ist die Durchsetzungszeit 11:00 AM.Wenn Sie die Systemfunktion in
account3
um 11:01 AM aufrufen, ist die Durchsetzungszeit sofort (jetzt).
Tipp
Speichern Sie den Zeitstempel, wann Sie den privaten Endpunkt im ersten Konto registriert haben. Zeichnen Sie die Konten auf, die an einen bestimmten privaten Endpunkt gebunden sind.
Wenn Sie voraussichtlich mehrere Konten registrieren werden und eine Verzögerungszeit von 1.440 Minuten nicht ausreicht, wenden Sie sich an den Snowflake Support.
Verwalten des Geltungsbereichs von Zugriffstoken auf Microsoft Azure¶
Bevor Sie einen privaten Endpunkt an Ihr Snowflake-Konto auf Azure anheften, müssen Sie den Geltungsbereich des Zugriffstokens begrenzen, das Sie an die Systemfunktion SYSTEM$REGISTER_PRIVATELINK_ENDPOINT übergeben. Indem der Aufrufer aufgefordert wird, das Zugriffstoken auf den privaten Endpunkt zu übertragen, kann Snowflake den Zugriff des Aufrufers auf den Endpunkt autorisieren. Das bedeutet, dass das Token nur für den privaten Endpunkt und das Snowflake-Konto gültig ist, über das Sie die Systemfunktion aufrufen.
Wichtig
Verwenden Sie nicht das in der Systemfunktion SYSTEM$AUTHORIZE_PRIVATELINK verwendete Token. Die folgenden Schritte erzeugen ein eindeutiges Token für SYSTEM$REGISTER_PRIVATELINK_ENDPOINT.
Um den Geltungsbereich des Zugriffstokens für Ihren privaten Endpunkt auf Azure einzuschränken, führen Sie die folgenden Schritte in Ihrem Microsoft Azure-Konto aus:
Erstellen Sie eine kundenspezifische Rollendefinition für eine Rolle mit dem Namen
snowflake-pep-role
, und ersetzen Sie den Platzhaltersubscription_id
durch die ID Ihres Abonnements.az role definition create --role-definition '{"Name":"snowflake-pep-role","Description": "To generate advanced proof of access token for Snowflake private endpoint pinning","Actions": ["Microsoft.Network/privateEndpoints/read"],"AssignableScopes":["/subscriptions/<subscription_id>"]}'
Die Abonnement-ID muss mit dem Abonnement übereinstimmen, in dem der private Endpunkt existiert. Sie müssen die Rollendefinition nur einmal für Ihr Abonnement erstellen.
Erstellen Sie die Rollenzuweisung, und weisen Sie die Rolle
snowflake-pep-role
und den privaten Endpunktbereich einem Benutzer (oder einer Gruppe) zu. Ersetzen Sie die Platzhalter füruser
undprivate_endpoint_resource_id
.az role assignment create --assignee <user> --role snowflake-pep-role --scope <private_endpoint_resource_id>
Erzeugen Sie das Zugriffstoken zur Verwendung mit der Systemfunktion SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. Ersetzen Sie den Platzhalter
subscription_id
durch die ID Ihres Abonnements.az account get-access-token --subscription <subscription_id>
Verwalten des Geltungsbereichs von Zugriffstoken auf Amazon Web Services¶
Bevor Sie einen privaten Endpunkt an Ihr Snowflake-Konto auf AWS anheften, müssen Sie den Geltungsbereich des Zugriffstokens begrenzen, das Sie an die Systemfunktion SYSTEM$REGISTER_PRIVATELINK_ENDPOINT übergeben. Indem der Aufrufer aufgefordert wird, das Zugriffstoken auf den privaten Endpunkt zu übertragen, kann Snowflake den Zugriff des Aufrufers auf den Endpunkt autorisieren. Das bedeutet, dass das Token nur für den privaten Endpunkt und das Snowflake-Konto gültig ist, über das Sie die Systemfunktion aufrufen.
Wichtig
Verwenden Sie nicht das in der Systemfunktion SYSTEM$AUTHORIZE_PRIVATELINK verwendete Token. Die folgenden Schritte erzeugen ein eindeutiges Token für SYSTEM$REGISTER_PRIVATELINK_ENDPOINT.
Um den Geltungsbereich des Zugriffstokens für Ihren privaten Endpunkt auf AWS einzuschränken, generieren Sie ein Verbundtoken, wie im folgenden Beispiel gezeigt:
aws sts get-federation-token --name snowflake --policy
'{ "Version": "2012-10-17", "Statement":
[ {
"Effect": "Allow", "Action": ["ec2:DescribeVpcEndpoints"],
"Resource": ["*"] }
] }'
Beispiel¶
Als repräsentatives Beispiel registrieren Sie einen Endpunkt, um Ihre Verbindung zum Snowflake-Dienst zu routen.
Konfigurieren Sie AWS PrivateLink oder Azure Private Link für Ihr Snowflake-Konto. Wenn Sie diesen Dienst bereits konfiguriert haben, fahren Sie mit dem nächsten Schritt fort.
Melden Sie sich bei Snowflake über das öffentliche Internet an, d. h. über die URL, die Sie verwenden und die kein
privatelink
-Segment in der URL enthält.Rufen Sie die Systemfunktion SYSTEM$REGISTER_PRIVATELINK_ENDPOINT auf, um den VPC-Endpunkt für Ihr Snowflake-Konto zu registrieren. Die
token
-Argumente enthalten abgeschnittene Werte, und die Verzögerungszeiteinheit ist Minuten:AWS
SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT( 'vpce-0c1...', '123.....', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "alD...", "SessionToken": "IQo...", "Expiration": "2024-12-10T08:20:20+00:00" }, "FederatedUser": { "FederatedUserId": "0123...:snowflake", "Arn": "arn:aws:sts::174...:federated-user/snowflake" }, "PackedPolicySize": 9, }', 120 );
Azure
SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT( '123....', '/subscriptions/0cc51670-.../resourceGroups/dbsec_test_rg/providers/Microsoft.Network/ privateEndpoints/...', 'eyJ...', 120 );
#. Confirm the private connectivity endpoint mapping by calling the SYSTEM$GET_PRIVATELINK_ENDPOINT_REGISTRATIONS system function.
Sie können die Registrierung des privaten Konnektivitätsendpunkts von Ihrem Snowflake-Konto aufheben, indem Sie die Systemfunktion SYSTEM$UNREGISTER_PRIVATELINK_ENDPOINT aufrufen.
Wichtig
Wenn Sie einen VPC-Endpunkt oder einen privaten Endpunkt in Snowflake registrieren und den Endpunkt in Ihrem VPC oder VNet löschen, müssen Sie die Systemfunktion SYSTEM$UNREGISTER_PRIVATELINK_ENDPOINT in Ihrem Snowflake-Konto aufrufen, um die Registrierung des Endpunktes aufzuheben. Andernfalls kann Ihre Verbindung zum Snowflake-Dienst keine private Konnektivität nutzen, sondern wird über das öffentliche Internet hergestellt.