Azure Private Link und Snowflake Open Catalog¶
Unter diesem Thema wird beschrieben, wie Sie Azure Private Link so konfigurieren, dass Ihr Snowflake Open Catalog-Konto direkt mit Ihrer Abfrage-Engine verbunden wird, indem Sie eingehende private Konnektivität verwenden.
Voraussetzungen¶
Ihr Snowflake Open Catalog-Konto wird auf Azure gehostet.
Sie haben die erforderlichen Berechtigungen, um Ihren DNS-Service mit der URL der privaten Konnektivität für Ihr Open Catalog-Konto zu konfigurieren.
Schritt 1: Einstellungen Ihres Open Catalog-Kontos abrufen¶
Rufen Sie die folgenden Einstellungen für die Konfiguration des Zugriffs auf Open Catalog mit Azure Private Link ab.
Melden Sie sich bei Snowflake Open Catalog an.
Wählen Sie im Navigationsmenü die Option Settings.
Kopieren Sie auf der Seite „Settings“ die Werte für die folgenden Einstellungen in einen Texteditor:
URL des PrivateLink-Kontos
Regionslose URL des PrivateLink-Kontos
PrivateLink OCSP URL
Regionslose URL des PrivateLink-OCSP
ID des Private Link-Service
Sie fügen diese Werte ein, wenn Sie Zugriff auf Open Catalog mit Azure Private Link konfigurieren und eine Verbindung zu Open Catalog über Azure Private Link herstellen.
Eine Beschreibung der einzelnen Einstellungen finden Sie unter Rückgabewerte für die Systemfunktion SYSTEM$GET_PRIVATELINK_CONFIG in der Snowflake-Dokumentation. Im Rahmen dieses Themas sind die Namen der Kontoeinstellungen im JSON-Format.
Bemerkung
Denken Sie daran, dass sich die Beschreibung ggf. auf ein Snowflake-Konto bezieht, Ihr Wert jedoch tatsächlich für Ihr Snowflake Open Catalog-Konto gilt. Beispiel: privatelink-account-url
ist die URL für Ihr Snowflake Open Catalog-Konto.
Optional: Um diese Werte im JSON-Format abzurufen, erstellen Sie eine Snowflake-CLI-Verbindung für Open Catalog, und rufen Sie dann die Systemfunktion SYSTEM$GET_PRIVATELINK_CONFIG auf.
Schritt 2: Zugriff auf Open Catalog mit Azure Private Link konfigurieren¶
Achtung
In diesem Abschnitt werden nur die Open Catalog-spezifischen Details zum Konfigurieren Ihrer VNet-Umgebung behandelt. Beachten Sie außerdem, dass Snowflake nicht für die Konfiguration der notwendigen Firewall-Aktualisierungen und DNS-Einträge verantwortlich ist. Falls Sie Probleme bezüglich einer dieser Konfigurationsanforderungen haben, wenden Sie sich direkt an den Microsoft-Support.
In diesem Abschnitt wird beschrieben, wie Sie Ihr VNet mit dem Open Catalog-VNet über Azure Private Link verbinden.
Um die Anweisungen auszuführen, müssen Sie die Azure-CLI oder Azure PowerShell verwenden. Hilfe zur Installation finden Sie in der Microsoft-Dokumentation zur Azure-CLI oder Azure PowerShell.
Nach dem Herstellen der Verbindung zu Snowflake Open Catalog mittels Azure Private Link können Sie den Genehmigungsstatus der Verbindung im Azure-Portal ermitteln.
Privaten Endpunkt erstellen¶
Bemerkung
Wenn Sie bereits einen privaten Endpunkt für Ihr Snowflake-Konto erstellt haben und sich das Konto in derselben Bereitstellung befindet wie Ihr Open Catalog-Konto, ist die Erstellung eines neuen privaten Endpunkts für Ihr Open Catalog-Konto nicht erforderlich. Sie können diesen Schritt optional überspringen.
Rufen Sie die Details Ihres Azure-Kontos ab. Im folgenden Beispiel wird der Befehl
az account list
der Azure-CLI verwendet.Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
Suchen Sie im Azure-Portal nach Private Link, und wählen Sie dann Private Link in den Ergebnissen aus.
!(Konzeptdiagramm von Open Catalog.)(img/private-connectivity-inbound-azure-privatelink-preview.png)
Klicken Sie auf Private endpoints und dann auf Add.
!(Konzeptdiagramm von Open Catalog.)(img/private-connectivity-inbound-azure-privatelink-endpoint.png)
Geben Sie auf der Registerkarte Basics die entsprechenden Daten in die Felder Subscription, Resource group, Name und Region für Ihre Umgebung ein, und klicken Sie dann auf Next: Resource.
Wählen Sie auf der Registerkarte Resource für Connection Method die Option Connect to an Azure resource by resource ID or alias aus.
Geben Sie für Resource ID or alias den Wert für eine
Private Link Service ID
ein, die Sie erhalten haben, als Sie Ihre Open Catalog-Kontoeinstellungen für private Konnektivität abgerufen haben.Wenn Sie eine Fehlermeldung bezüglich des Alias-Werts erhalten, wenden Sie sich an den Snowflake-Support bezüglich des Werts der Ressourcen-ID, und wiederholen Sie dann diesen Schritt mit diesem Wert.
Wenn der private Endpunkt genehmigt wurde, wird für CONNECTION STATE im Abschnitt „Private endpoints“ auf der Private Link Center-Seite der Wert Pending angezeigt. Dieser Wert ändert sich in Approved, wenn Sie die Autorisierung im nächsten Verfahren abschließen.
Eingehende private Konnektivität aktivieren¶
In diesem Verfahren aktivieren Sie Azure Private Link für Ihr Open Catalog-Konto. Diese Konfiguration ermöglicht es der Abfrage-Engine, sich über private Konnektivität mit Open Catalog zu verbinden. Sie benötigen die Ressourcen-ID Ihres privaten Endpunkts, eine Abonnement-ID und den Wert des Verbundtokens, der die Zugriffsanmeldeinformationen für einen Verbundbenutzer enthält.
Um diese Werte zu erhalten, führen Sie die folgenden Befehle in der Azure-CLI aus:
Um die Ressourcen-ID Ihres privaten Endpunkts zu erhalten, führen Sie den folgenden Befehl aus, und kopieren Sie den Wert in einen Texteditor:
az network private-endpoint show
Um die Abonnement-ID zu erhalten, führen Sie den folgenden Befehl aus, und notieren Sie sich den Wert in der Spalte SubscriptionID der Ausgabe:
az account list --output table
Um den Wert des Verbundtokens zu erhalten, führen Sie den folgenden Befehl aus, und kopieren Sie den „accessToken“-Wert in einen Texteditor:
az account get-access-token --subscription <SubscriptionID>
Dabei gilt Folgendes:
SubscriptionID
ist der eindeutige Bezeichner, den Sie im vorherigen Schritt erhalten haben.
Wichtig
Der Benutzer, der das Azure-Zugriffstoken generiert, muss über Leseberechtigungen das Abonnement verfügen. Die Berechtigung mit den geringsten Rechten ist Microsoft.Subscription/subscriptions/acceptOwnershipStatus/read. Alternativ dazu erteilt die Standardrolle
Reader
gröbere Berechtigungen.Der Wert
accessToken
ist eine vertrauliche Information und sollte wie ein Kennwort behandelt werden: Geben Sie diesen Wert also nicht weiter.Wenn es erforderlich ist, den Snowflake-Support zu kontaktieren, löschen Sie erst das Zugriffstoken aus allen Befehlen und URLs, bevor Sie ein Support-Ticket erstellen.
Melden Sie sich bei Snowflake Open Catalog an.
Wählen Sie im Navigationsmenü die Option Settings.
Wählen Sie Authorize.
Aktivieren Sie im Dialogfeld „Authorize Private Link“ private Konnektivität für Ihr Konto:
Geben Sie unter ID die Ressourcen-ID des privaten Endpunkts ein, die Sie in einen Texteditor kopiert haben.
Geben Sie unter Federated token den Wert des Verbundtokens ein, den Sie in einen Texteditor kopiert haben.
Wählen Sie Save.
DNS einrichten¶
Alle Anfragen an Open Catalog müssen über den privaten Endpunkt geleitet werden. Um das Open Catalog-Konto und die OCSP-URLs zur privaten IP-Adresse Ihres privaten Endpunkts aufzulösen, aktualisieren Sie Ihren DNS.
Um die IP-Adresse des Endpunkts zu erhalten, geben Sie in der Suchleiste des Azure-Portals den Namen des von Ihnen erstellten privaten Endpunkts ein.
Wählen Sie das Ergebnis der Netzwerkschnittstelle aus.
!(Konzeptdiagramm von Open Catalog.)(img/private-connectivity-inbound-azure-privatelink-dns-endpoint.png)
Kopieren Sie den Wert für Private IP address.
!(Konzeptdiagramm von Open Catalog.)(img/private-connectivity-inbound-azure-privatelink-dns-private-ip.png)
Konfigurieren Sie Ihren DNS so, dass die entsprechenden Endpunktwerte aus Ihren Open Catalog-Kontoeinstellungen für private Konnektivität in die private IP-Adresse aufgelöst werden.
Schritt 3: Über Azure Private Link eine Verbindung zu Open Catalog herstellen¶
Um eine Dienstverbindung zu registrieren und Ihre Abfrage-Engine über Azure Private Link mit Open Catalog zu verbinden, verwenden Sie den folgenden Code:
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder.appName('iceberg_lab') \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'opencatalog') \ .config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \ .config('spark.sql.catalog.opencatalog.type', 'rest') \ .config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_privatelink_account_url>/polaris/api/catalog') \ .config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \ .config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \ .config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \ .getOrCreate()
Parameter¶
Bemerkung
Stellen Sie sicher, dass Sie Ihren einrichten DNS-Service so einrichten, dass der von Ihnen für <open_catalog_account_identifier>
angegebene Wert damit übereinstimmt.
Parameter |
Beschreibung |
---|---|
|
Gibt den Namen des Katalogs an, mit dem eine Verbindung hergestellt werden soll. |
|
Gibt die Maven-Koordinate für Ihren externen Cloudspeicheranbieter an:
|
|
Gibt den Client ID an, den der Dienstprinzipal verwenden soll. |
|
Gibt das Client-Geheimnis an, das der Dienstprinzipal verwenden soll. |
|
Gibt die URL zur Verbindung mit Ihrem Snowflake-Konto über AWS PrivateLink oder Azure Private Link an.
|
|
Gibt die Prinzipalrolle an, die dem Dienstprinzipal zugewiesen wird. |
Schritt 4 (optional): Eine Katalog-Integration für Snowflake erstellen¶
Wenn Sie Snowflake nutzen, um von Open Catalog verwaltete Tabellen abzufragen, erstellen Sie einen Katalog für Snowflake, der eine private IP-Adresse verwendet. Um diese Katalogintegration zu erstellen, muss sich Ihr Snowflake-Konto in derselben Bereitstellung wie Ihr Open Catalog-Konto befinden.
Ein Beispiel finden Sie unter Beispiel: Katalogintegration, die eine private IP-Adresse verwendet <https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog-query#example-catalog-integration-that-uses-a-private-ip-address>
_ in der Snowflake-Dokumentation.
Bemerkung
Sie können auch private Konnektivität für die Snowflake Open Catalog-UI konfigurieren. Diese Konfiguration, kombiniert mit der Konfiguration privater Konnektivität für Ihr Open Catalog-Konto, ermöglicht Ihnen den Zugriff auf die Open Catalog-UI über private Konnektivität statt über das öffentliche Internet.
Informationen zur Konfiguration dieses Zugriffs finden Sie unter Private Konnektivität für die Snowflake Open Catalog-UI konfigurieren.