Private Konnektivitätsendpunkte für Snowflake Open Catalog verwalten: AWS

Wenn die Daten für Ihre Kataloge in Ihrem Snowflake Open Catalog-Konto in Amazon Simple Storage Service (Amazon S3)-Speicher-Buckets gespeichert sind, führen Sie diese Schritte aus, um private Konnektivität für den ausgehenden Netzwerkdatenverkehr einzurichten.

Um private Konnektivität für Ihr Open Catalog-Konto zu aktivieren, müssen Sie die Einrichtungsschritte unter diesem Thema in der Regel nur einmal durchführen. Danach aktivieren Sie die ausgehende private Konnektivität für jeden Katalog in Ihrem Open Catalog-Konto.

Beispiel: Wenn Sie die Einrichtungsschritte abgeschlossen und später einen neuen Katalog namens catalog1 erstellt haben, müssen Sie normalerweise nur die ausgehende private Konnektivität für catalog1 aktivieren. Anweisungen zum Aktivieren privater Konnektivität für einen Katalog finden Sie unter Ausgehende private Konnektivität für einen Katalog aktivieren. Wenn jedoch catalog1 einen Speicher-Bucket verwendet, für den Sie die entsprechende 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 Cloudspeicher müssen beide in derselben AWS-Region gehostet werden.

  • Sie benötigen die IAM-Berechtigungen in AWS, mit denen Sie die Bucket-Richtlinie für Ihren AWS-Speicher-Bucket ändern können, in dem Ihre Iceberg-Tabellen gespeichert sind. Weitere Informationen dazu finden Sie unter Bucket-Richtlinien für Amazon S3 in der AWS-Dokumentation.

  • Ihre Drittanbieter-Abfrage-Engine oder Snowflake-Engine muss Zugriff auf Ihren Speicher-Bucket über AWS PrivateLink oder S3 Gateway Endpoint haben. Weitere Informationen dazu finden Sie unter Schnittstellenendpunkt konfigurieren in der AWS-Dokumentation. Wenn Sie ausgehende private Konnektivität aktivieren, kann die Engine ansonsten keine Tabellen lesen oder schreiben, die im Bucket gespeichert sind, aber Open Catalog kann Metadaten lesen bzw. in den Bucket schreiben.

Private Konnektivität für Ihr Konto einrichten

Folgen Sie diesen Schritten, um private Konnektivität für Ihr Open Catalog-Konto einzurichten.

Schritt 1: Eine Snowflake-CLI-Verbindung für Open Catalog erstellen

Um private Konnektivität in Open Catalog einzurichten, benötigen Sie eine Snowflake-CLI-Verbindung für Open Catalog. Führen Sie die folgenden Schritte aus, um diese Verbindung zu erstellen. Wenn die Snowflake-CLI noch nicht installiert ist, lesen Sie Installieren der Snowflake-CLI.

Bevor Sie beginnen

Um eine Snowflake-CLI-Verbindung für Open Catalog zu erstellen, benötigen Sie Ihren vollständigen Open Catalog-Kontobezeichner. Der Kontobezeichner enthält den Namen Ihrer Snowflake-Organisation und Ihres Open Catalog-Kontos, zum Beispiel <orgname>.<my-snowflake-open-catalog-account-name>.

  • Informationen dazu, wie Sie den Namen Ihrer Snowflake-Organisation (<orgname>) finden, erhalten Sie unter Suchen von Organisations- und Kontonamen eines Kontos <https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>_.

  • Informationen dazu, wie Sie den Namen Ihres Snowflake Open Catalog-Kontos (<my-snowflake-open-catalog-account-name>) finden, erhalten Sie unter Kontonamen für ein Snowflake Open Catalog-Konto suchen <https://other-docs.snowflake.com/en/opencatalog/find-account-name>_.

Wichtig

Um diese Verbindung zu erstellen, müssen Sie Open Catalog-Benutzer mit Service-Administrator-Berechtigungen sein. Informationen zu Berechtigungen für Service-Administratoren finden Sie unter Rolle des Service-Administrators.

Eine Snowflake-CLI-Verbindung für Snowflake Open Catalog hinzufügen

Fügen Sie eine Verbindung für das Snowflake Open Catalog-Konto hinzu, für das Sie private Konnektivität aktivieren möchten.

  • Fügen Sie eine Verbindung hinzu <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>_, indem Sie die folgenden Werte verwenden. Drücken Sie bei allen anderen Parametern die Eingabetaste, um die Angabe eines Werts für den Parameter zu überspringen.

    Konfigurationsparameter für die Verbindung

    Wert

    Name for this connection

    Geben Sie einen Namen für die Verbindung an, z. B. myopencatalogconnection.

    Account name

    Geben Sie den Namen Ihrer Snowflake-Organisation, gefolgt vom Namen Ihres Open Catalog-Kontos, in folgendem Format an:

    <orgname>-<my-snowflake-open-catalog-account-name>.

    Beispiel: ABCDEFG-MYACCOUNT1.

    Informationen dazu, wie Sie diese Namen finden, erhalten Sie unter Bevor Sie beginnen_.

    Username

    Geben Sie Ihren Benutzernamen für Open Catalog an, z. B. jsmith.

    Password [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.

    Role for the connection [optional]

    Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.

    Sie müssen POLARIS_ACCOUNT_ADMIN eingeben.

Snowflake-CLI-Verbindung testen

  • Um Ihre CLI-Verbindung zu testen, folgen Sie diesem Beispiel, bei dem die Verbindung für myopencatalogconnection getestet wird:

    snow connection test -c myopencatalogconnection
    
    Copy

    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                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

Ihre Snowflake-CLI-Verbindung für Snowflake Open Catalog als Standard festlegen

Um sicherzustellen, dass die von Ihnen verwendete Verbindung immer über die erforderliche POLARIS_ACCOUNT_ADMIN-Rolle verfügt, können Sie die Snowflake-CLI-Verbindung, die Sie für Open Catalog erstellt haben, als Standardverbindung festlegen. Weitere Informationen zur Standardverbindung finden Sie unter Standardverbindung festlegen <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>_.

  1. Folgen Sie diesem Beispiel, bei dem die myopencatalogconnection-Verbindung als Standard festgelegt ist:

    snow connection set-default myopencatalogconnection
    
    Copy
  2. Um zu überprüfen, ob Sie den richtigen Benutzer und die richtige Rolle verwenden, führen Sie Folgendes aus:

    snow sql -q "Select current_user(); select current_role();"
    
    Copy

    Die Antwort sollte Ihren Open Catalog-Benutzernamen zurückgeben und CURRENT ROLE sollte POLARIS_ACCOUNT_ADMIN sein.

    +----------------+
    | CURRENT_USER() |
    |----------------|
    | JSMITH        |
    +----------------+
    select current_role();
    +-----------------------+
    | CURRENT_ROLE()        |
    |-----------------------|
    | POLARIS_ACCOUNT_ADMIN |
    +-----------------------+
    
    Copy

Schritt 2: Privaten Konnektivitätsendpunkt bereitstellen

Verwenden Sie Ihre Snowflake-CLI-Verbindung für Open Catalog, um die folgenden Systemfunktionen aufzurufen:

  1. Um einen privaten Konnektivitätsendpunkt für Ihre Speicher-Buckets bereitzustellen, rufen Sie die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf.

  2. Um zu überprüfen, ob der private Konnektivitätsendpunkt einsatzbereit ist, rufen Sie die Systemfunktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.

Eine Anleitung finden Sie unter Private Konnektivitätsendpunkte bereitstellen in der Snowflake-Dokumentation. Denken Sie daran, dass sich die Anleitung auf ein Snowflake-Konto und nicht auf ein Snowflake Open Catalog-Konto bezieht, der Prozess in Open Catalog ist aber derselbe.

Wichtig

  • Sie müssen die Rolle POLARIS_ACCOUNT_ADMIN anstelle der Rolle ACCOUNTADMIN verwenden, die in der Anleitung angegeben ist.

  • Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen: USE ROLE POLARIS_ACCOUNT_ADMIN;.

  • Bei Ihrem Befehl müssen Sie zu Escape-Zwecken unmittelbar vor $ einen Schrägstrich einfügen. Beispiel: snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();".

Bemerkung

Sie können diesen privaten Konnektivitätsendpunkt verwenden, den Sie bereitstellen, um Zugriff auf alle Speicher-Buckets zu gewähren, die sich in derselben AWS-Region befinden, in der auch Ihr Open Catalog-Konto gehostet wird. Sie können damit keinen Zugriff auf einen Bucket gewähren, der sich in einer anderen Region befindet.

Beispiel: Privaten Konnektivitätsendpunkt bereitstellen

Im folgenden Beispiel wird ein PrivateLink mit externem Zugriff auf Amazon S3 erstellt, 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'
);
Copy

Schritt 3: Bucket-Richtlinie aktualisieren

Um den Netzwerkzugriff auf Ihren Speicher-Bucket auf den privaten Konnektivitätsendpunkt zu beschränken, den Sie im vorherigen Schritt in erstellt haben, aktualisieren Sie in AWS die Bucket-Richtlinie für Ihren Speicher-Bucket. Eine Anleitung finden Sie unter Zugriff auf einen bestimmten VPCendpoint beschränken 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, über den Browser auf den Bucket und die Bucket-Richtlinie zuzugreifen, nachdem Sie sie hinzugefügt haben. Andernfalls können Sie nach der Aktualisierung Ihrer Bucket-Richtlinie über den Browser nicht mehr auf den Bucket oder die Bucket-Richtlinie zugreifen.

Bei diesem Beispiel für eine Bucket-Richtlinie können Sie über den Browser auf den Bucket und die Bucket-Richtlinie zugreifen:

{
    "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"
                }
            }
        }
    ]
}
Copy

Ausgehende private Konnektivität für einen Katalog aktivieren

In diesem Abschnitt wird beschrieben, wie Sie ausgehende private Konnektivität für einen Katalog in Ihrem Open Catalog-Konto aktivieren.

Schritt 1: Private Konnektivität aktivieren

Sie können private Konnektivität für einen neuen oder vorhandenen Katalog aktivieren:

Private Konnektivität für einen neuen Katalog aktivieren

Folgen Sie den Anweisungen unter Einen Katalog mit Amazon Simple Storage Service (Amazon S3) erstellen. Stellen Sie sicher, dass der Schalter Private Link für den Katalog aktiviert ist.

Bemerkung

Wenn Sie die Bucket-Richtlinie für den Bucket, in dem die Tabellen des Katalogs gespeichert sind, noch nicht aktualisiert haben, finden Sie entsprechende Informationen unter Bucket-Richtlinie aktualisieren. 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 vorhandenen Katalog aktivieren

  1. Melden Sie sich an, um den Katalog zu öffnen.

  2. Wählen Sie im Navigationsmenü die Option Catalogs.

  3. Wählen Sie in der Liste der Kataloge den Katalog aus, für den Sie private Konnektivität aktivieren möchten.

  4. Setzen Sie auf der Registerkarte Catalog Details den Schalter PrivateLink auf aktiviert.

Schritt 2: Tabelle unter Verwendung der Abfrage-Engine erstellen

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 darin 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

Dieser Abschnitt enthält Lösungen für Probleme mit der ausgehenden privaten Konnektivität für den Datenverkehr im Netzwerk.

Das Schema für eine Tabelle kann nicht in Open Catalog angezeigt werden.

Symptom

Sie wählen in Open Catalog eine Tabelle in Ihrem Katalog aus (z. B. catalog1), erhalten aber die folgende Fehlermeldung: „No permissions to access this resource“.

Ursache

Sie haben in AWS Ihre Bucket-Richtlinie erfolgreich aktualisiert, um den Netzwerkdatenverkehr über Ihren VPC-Endpunkt zu leiten. Allerdings haben Sie in Open Catalog keine private Konnektivität für diesen Katalog aktiviert, sodass Open Catalog nicht auf Ihren Bucket zugreifen kann.

Lösung

Aktivieren Sie private Konnektivität für den Katalog (z. B. catalog1). Einzelheiten finden Sie unter Private Konnektivität für einen Katalog aktivieren.