Verwalten Sie private Konnektivitäts-Endpunkte für Snowflake Open Catalog: AWS¶
Wenn die Daten für Ihre Kataloge in Ihrem Snowflake Open Catalog-Konto in Amazon Simple Storage Service (Amazon S3)-Buckets gespeichert sind, befolgen Sie diese Schritte, um eine private Konnektivität für den ausgehenden Netzwerkverkehr einzurichten.
Um die private Konnektivität für Ihr Open Catalog-Konto zu aktivieren, müssen Sie in der Regel nur einmal die Einrichtungsschritte in diesem Thema durchführen. Danach aktivieren Sie die ausgehende private Konnektivität für jeden Katalog in Ihrem Open Catalog-Konto.
Wenn Sie zum Beispiel die Einrichtungsschritte abgeschlossen haben und später einen neuen catalog1
-Katalog erstellen, müssen Sie in der Regel nur die ausgehende private Konnektivität für catalog1
aktivieren. Anleitungen zum Aktivieren der privaten Konnektivität für einen Katalog finden Sie unter Private Konnektivität für einen Katalog im Ausgang aktivieren. Wenn catalog1
jedoch einen Speicher-Bucket verwendet, für den Sie die Bucket-Richtlinie nicht aktualisiert haben, müssen Sie auch die Bucket-Richtlinie für den Bucket aktualisieren. Wenn Sie eine Bucket-Richtlinie aktualisieren, beschränken Sie den Netzwerkzugriff für den Bucket auf einen privaten Konnektivitätsendpunkt.
Voraussetzungen¶
Ihr Open Catalog-Konto und Ihr externer Cloud-Speicher müssen beide in der gleichen AWS-Region gehostet werden.
Sie benötigen die IAM-Berechtigungen in AWS, die es Ihnen erlauben, die Bucket-Richtlinie für Ihren AWS-Storage-Bucket zu ändern, in dem Ihre Iceberg-Tabellen gespeichert sind. Einzelheiten finden Sie unter Bucket-Richtlinien für Amazon S3 in der AWS-Dokumentation.
Ihre Abfrage-Engine eines Drittanbieters oder die Snowflake-Engine muss über AWS PrivateLink oder den S3 Gateway-Endpunkt Zugriff auf Ihren Storage-Bucket haben. Einzelheiten finden Sie unter Konfigurieren eines Schnittstellenendpunkts in der AWS-Dokumentation. Andernfalls, wenn Sie die ausgehende private Konnektivität aktivieren, kann die Engine die im Bucket gespeicherten Tabellen nicht lesen oder schreiben, aber Open Catalog kann Metadaten im Bucket lesen oder schreiben.
Private Konnektivität für Ihr Konto einrichten¶
Folgen Sie diesen Schritten, um die private Konnektivität für Ihr Open Catalog-Konto einzurichten.
Schritt 1: Erstellen Sie eine Snowflake CLI-Verbindung für Open Catalog¶
Um private Konnektivität in Open Catalog einzurichten, benötigen Sie eine Snowflake CLI-Verbindung für Open Catalog. Folgen Sie diesen Schritten, um diese Verbindung herzustellen. Wenn Sie Snowflake CLI noch nicht installiert haben, lesen Sie bitte den Abschnitt Installation von Snowflake CLI.
Bevor Sie beginnen¶
Um eine Snowflake CLI-Verbindung für Open Catalog zu erstellen, benötigen Sie Ihren vollständigen Bezeichner für das Open Catalog-Konto. Der Bezeichner des Kontos enthält den Namen Ihrer Snowflake-Organisation und den Namen Ihres Open Catalog-Kontos, zum Beispiel <orgname>.<my-snowflake-open-catalog-account-name>
.
Um Ihren Snowflake-Organisationsnamen (
<orgname>
) zu finden, sieheSuchen von Organisations- und Kontonamen eines Kontos <https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>
_.Um Ihren Snowflake Open Catalog-Kontonamen zu finden (
<my-snowflake-open-catalog-account-name>
), sieheDen Kontonamen für ein Snowflake Open Catalog-Konto finden <https://other-docs.snowflake.com/en/opencatalog/find-account-name>
_ in der Dokumentation.
Wichtig
Um diese Verbindung herzustellen, müssen Sie ein Benutzer von Open Catalog sein, der über die Berechtigungen eines Service-Administrators verfügt. Informationen zu den Berechtigungen von Service-Administratoren finden Sie unter Rolle des Service-Administrators.
Hinzufügen einer Snowflake CLI-Verbindung für Snowflake Open Catalog¶
Fügen Sie eine Verbindung für das Snowflake Open Catalog-Konto hinzu, für das Sie die private Konnektivität aktivieren möchten.
Fügen Sie eine Verbindung <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>
_ mit den folgenden Werten hinzu. Für alle anderen Parameter drücken Sie die Eingabetaste, um die Angabe eines Wertes für den Parameter zu überspringen.Parameter für die Konfiguration der Verbindung
Wert
Name für diese Verbindung
Geben Sie einen Namen für die Verbindung an, zum Beispiel
myopencatalogconnection
.Kontoname
Geben Sie den Namen Ihrer Snowflake-Organisation, gefolgt vom Namen Ihres Open Catalog-Kontos, in diesem Format an:
``
-<. Zum Beispiel
ABCDEFG-MYACCOUNT1
.Um diese Namen zu finden, siehe
Bevor Sie beginnen
_.Benutzername
Geben Sie Ihren Benutzernamen für Open Catalog an, zum Beispiel
jsmith
.Kennwort [optional]
Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.
Geben Sie Ihr Kennwort für Open Catalog ein, z. B.
MyPassword123456789
.Rolle für die Verbindung [optional]
Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.
Sie müssen
POLARIS_ACCOUNT_ADMIN
eingeben
Testen Sie die Snowflake CLI-Verbindung¶
Um Ihre CLI-Verbindung zu testen, folgen Sie diesem Beispiel, das die Verbindung für
myopencatalogconnection
testet:snow connection test -c myopencatalogconnection
Die Antwort sollte wie folgt aussehen:
+------------------------------------------------------------------------------+ | key | value | |----------------------------+-------------------------------------------------| | Connection name | myopencatalogconnection | | Status | OK | | Host | ABCDEFG-MYACCOUNT1.snowflakecomputing.com | | Account | ABCDEFG-MYACCOUNT1 | | User | jsmith | | Role | POLARIS_ACCOUNT_ADMIN | | Database | not set | | Warehouse | not set | +------------------------------------------------------------------------------+
Legen Sie Ihre Snowflake CLI-Verbindung für Snowflake Open Catalog als Standard fest¶
Um sicherzustellen, dass der von Ihnen verwendeten Verbindung immer die erforderliche Rolle POLARIS_ACCOUNT_ADMIN zugewiesen wird, können Sie die Snowflake CLI-Verbindung, die Sie für Open Catalog erstellt haben, als Standardverbindung festlegen. Weitere Informationen über die Standardverbindung finden Sie unter Legen Sie die Standardverbindung fest <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>
_.
Folgen Sie diesem Beispiel, in dem die Verbindung
myopencatalogconnection
als Standard eingestellt ist:snow connection set-default myopencatalogconnection
Um sicherzustellen, dass Sie den richtigen Benutzer und die richtige Rolle verwenden, führen Sie Folgendes aus:
snow sql -q "Select current_user(); select current_role();"
Die Antwort sollte Ihren Open Catalog-Benutzernamen zurückgeben und die CURRENT ROLE sollte POLARIS_ACCOUNT_ADMIN lauten.
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
Schritt 2: Bereitstellung eines privaten Konnektivitätendpunkts¶
Verwenden Sie Ihre Snowflake CLI-Verbindung für Open Catalog, um die folgenden Systemfunktionen aufzurufen:
Um einen privaten Konnektivitätsendpunkt für Ihre Buckets bereitzustellen, rufen Sie die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf.
Um zu bestätigen, dass der private Konnektivitätsendpunkt einsatzbereit ist, rufen Sie die Systemfunktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.
Eine Anleitung finden Sie unter Bereitstellung privater Konnektivitätsendpunkte in der Snowflake-Dokumentation. Beachten Sie, dass sich die Anweisungen auf ein Snowflake-Konto und nicht auf ein Snowflake Open Catalog-Konto beziehen, aber der Vorgang ist in Open Catalog derselbe.
Wichtig
Sie müssen die Rolle POLARIS_ACCOUNT_ADMIN anstelle der in der Anleitung genannten Rolle ACCOUNTADMIN verwenden.
Wenn die von Ihnen festgelegte standardmäßige Snowflake CLI-Verbindung nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen bekommen hat, müssen Sie die folgende Anweisung in Ihren Befehl aufnehmen:
USE ROLE POLARIS_ACCOUNT_ADMIN;
Bei Ihrem Befehl müssen Sie unmittelbar vor
$
einen Schrägstrich einfügen, um ihn zu umgehen. Zum Beispielsnow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();"
.
Bemerkung
Sie können diesen privaten Konnektivitätsendpunkt, den Sie bereitstellen, verwenden, um Zugriff auf alle Speicher-Buckets zu gewähren, die sich in derselben AWS-Region befinden, in der Ihr Open Catalog-Konto gehostet wird. Sie können ihn nicht verwenden, um Zugriff auf einen Bucket zu gewähren, der sich in einer anderen Region befindet.
Beispiel: Bereitstellung eines privaten Konnektivitätsendpunkts¶
Das folgende Beispiel erstellt einen PrivateLink mit externem Zugriff auf Amazon S3, um einen Endpunkt für die Region us-west-2
zu konfigurieren:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Schritt 3: Aktualisieren Sie Ihre Bucket-Richtlinie¶
Um den Netzwerkzugriff auf Ihren Speicher-Bucket auf den privaten Konnektivitätsendpunkt zu beschränken, den Sie im vorherigen Schritt erstellt haben, aktualisieren Sie unter AWS die Bucket-Richtlinie für Ihren Speicher-Bucket. Eine Anleitung finden Sie unter Beschränkung des Zugriffs auf einen bestimmten VPCendpoint in der AWS-Dokumentation. Geben Sie für <vpce-id>
in der Bucket-Richtlinie die ID des privaten Konnektivitätsendpunkts an, den Sie im vorherigen Schritt erstellt haben.
Wiederholen Sie diesen Schritt bei Bedarf für alle weiteren Buckets, die Sie mit Open Catalog verbinden möchten.
Wichtig
Stellen Sie sicher, dass Ihre Bucket-Richtlinie Berechtigungen enthält, die es Ihnen ermöglichen, nach dem Hinzufügen vom Browser aus auf den Bucket und die Bucket-Richtlinie zuzugreifen. Andernfalls können Sie nach der Aktualisierung Ihrer Bucket-Richtlinie nicht mehr über den Browser auf den Bucket oder die Bucket-Richtlinie zugreifen.
Diese Beispiel Bucket-Richtlinie ermöglicht Ihnen den Zugriff auf den Bucket und die Bucket-Richtlinie vom Browser aus:
{
"Version": "2012-10-17",
"Id": "Policy1234567890123",
"Statement": [
{
"Sid": "Deny public access",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotLike": {
"aws:SourceVpc": "vpc-*"
}
}
},
{
"Sid": "Access-to-specific-VPCE-only",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-xxxxxxxxxxx"
}
}
}
]
}
Aktivieren Sie die ausgehende private Konnektivität für einen Katalog¶
In diesem Abschnitt wird beschrieben, wie Sie die ausgehende private Konnektivität für einen Katalog in Ihrem Open Catalog-Konto aktivieren.
Schritt 1: Aktivieren Sie die private Konnektivität¶
Sie können die private Konnektivität für einen neuen oder bestehenden Katalog aktivieren:
Aktivieren Sie die private Konnektivität für einen neuen Katalog¶
Folgen Sie den Anweisungen unter Einen Katalog mit Amazon Simple Storage Service (Amazon S3) erstellen. Vergewissern Sie sich, dass für den Katalog die Schaltfläche Private Link auf Aktiviert steht.
Bemerkung
Wenn Sie die Bucket-Richtlinie für den Bucket, in dem die Tabellen des Katalogs gespeichert sind, noch nicht aktualisiert haben, sehen Sie unter Aktualisieren Sie Ihre Bucket-Richtlinie nach. Wenn Sie eine Bucket-Richtlinie aktualisieren, beschränken Sie den Netzwerkzugriff auf Ihren Speicher-Bucket auf Ihren privaten Konnektivitätsendpunkt.
Private Konnektivität für einen bestehenden Katalog aktivieren¶
Melden Sie sich an, um den Katalog zu öffnen.
Wählen Sie im Navigationsmenü Kataloge.
Wählen Sie in der Liste der Kataloge den Katalog aus, für den Sie die private Konnektivität aktivieren möchten.
Setzen Sie auf der Registerkarte Katalogdetails die Schaltfläche PrivateLink auf Aktiviert.
Schritt 2: Erstellen Sie eine Tabelle mit Hilfe der Abfrage-Engine¶
Um zu überprüfen, ob Ihre Abfrage-Engine über AWS PrivateLink mit Ihrem Katalog verbunden ist, verwenden Sie Ihre Abfrage-Engine, um eine Tabelle zu erstellen und Daten in sie einzufügen. Wenn Sie keine Daten in die Tabelle einfügen können, haben Sie möglicherweise AWS PrivateLink nicht für die Abfrage-Engine konfiguriert.
Problembehandlung¶
In diesem Abschnitt finden Sie Hinweise zur Fehlerbehebung bei Problemen mit der ausgehenden privaten Konnektivität für den Datenverkehr.
Kann das Schema für eine Tabelle in Open Catalog nicht anzeigen¶
Symptom
In Open Catalog wählen Sie eine Tabelle in Ihrem Katalog aus (z. B. catalog1
), erhalten aber die folgende Fehlermeldung: „Keine Berechtigungen für den Zugriff auf diese Ressource.“
Ursache
In AWS haben Sie Ihre Bucket-Richtlinie erfolgreich aktualisiert, um den Datenverkehr über Ihren VPC-Endpunkt zu routen. In Open Catalog haben Sie jedoch die private Konnektivität für diesen Katalog nicht aktiviert, so dass Open Catalog nicht auf Ihren Bucket zugreifen kann.
Lösung
Aktivieren Sie die private Konnektivität für den Katalog (z. B. catalog1
). Einzelheiten finden Sie unter Private Konnektivität für einen Katalog aktivieren.
Fehler „Business Critical“ bei der Ausführung des Befehls SYSTEM$PROVISION_PRIVATELINK_ENDPOINT¶
Symptom
In Ihrer Snowflake CLI-Verbindung führen Sie den Befehl SYSTEM\$PROVISION_PRIVATELINK_ENDPOINT
aus, aber er schlägt mit der folgenden Fehlermeldung fehl: „Für diesen Vorgang ist eine Business Critical oder höhere Edition erforderlich. Bitte aktualisieren Sie auf die gültige Edition und versuchen Sie es dann erneut.“
Ursache
Die Edition für Ihr Open Catalog-Konto ist nicht Business Critical.
Um die private Konnektivität für den ausgehenden Datenverkehr zu aktivieren, wozu auch die Bereitstellung eines privaten Konnektivitätsendpunkts gehört, muss die Edition für Ihr Snowflake Open Catalog-Konto Business Critical sein.
Lösung
Wenden Sie sich an den Snowflake-Support, wenn Sie ein Upgrade Ihres Open Catalog-Kontos auf Business Critical wünschen.