Azure Private Link und Snowflake Open Catalog¶
In diesem Thema wird beschrieben, wie Sie Azure Private Link konfigurieren, um Ihr Snowflake Open Catalog-Konto direkt mit Ihrer Abfrage-Engine zu verbinden, indem Sie eine eingehende private Konnektivität verwenden.
Voraussetzungen¶
Ihr Snowflake Open Catalog-Konto wird auf Azure gehostet.
Sie verfügen über die notwendigen Berechtigungen, um Ihren DNS-Dienst mit der privaten Konnektivitäts-URL für Ihr Open Catalog-Konto zu konfigurieren.
Schritt 1: Rufen Sie die Einstellungen Ihres Open Catalog-Kontos ab¶
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ü Settings aus.
Kopieren Sie auf der Seite „Settings“ die Werte für die folgenden Einstellungen in einen Texteditor:
PrivateLink-Konto-URL
URL Für regionenloses PrivateLink-Konto
PrivateLink-OCSP-URL
Regionslose PrivateLink-OCSP-URL
Private-Link-Dienst-ID
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. In diesem Thema sind die Namen der Kontoeinstellungen im Format JSON angegeben.
Bemerkung
Denken Sie daran, dass sich die Beschreibung ggf. auf ein Snowflake-Konto bezieht, Ihr Wert aber tatsächlich für Ihr Snowflake Open Catalog-Konto gilt. Die privatelink-account-url
ist zum Beispiel die URL für Ihr Snowflake Open Catalog-Konto.
Optional: Um diese Werte im Format JSON abzurufen, erstellen Sie eine Snowflake CLI-Verbindung für Open Catalog und rufen Sie dann die Systemfunktion SYSTEM$GET_PRIVATELINK_CONFIG auf.
Schritt 2: Konfigurieren Sie den Zugriff auf Open Catalog mit Azure Private Link¶
Achtung
Dieser Abschnitt behandelt nur die Open Catalog-spezifischen Details zur Konfiguration Ihrer VNet-Umgebung. Beachten Sie außerdem, dass Snowflake nicht für die tatsächliche Konfiguration der notwendigen Firewall-Anpassungen und DNS-Einträge verantwortlich ist. Wenn Sie Probleme mit einer dieser Konfigurationsaufgaben haben, wenden Sie sich direkt an den Microsoft Support.
In diesem Abschnitt wird beschrieben, wie Sie Ihr VNet über Azure Private Link mit dem Open Catalog-VNet verbinden.
Um die Anweisungen auszuführen, müssen Sie Azure CLI oder Azure PowerShell verwenden. Hilfe zur Installation finden Sie in der Microsoft-Dokumentation für Azure CLI oder Azure PowerShell.
Nachdem Sie die Verbindung zu Snowflake Open Catalog über Azure Private Link initiiert haben, können Sie den Genehmigungsstatus der Verbindung im Azure-Portal ermitteln.
Erstellen Sie einen privaten Endpunkt.¶
Bemerkung
Wenn Sie bereits einen privaten Endpunkt für Ihr Snowflake-Konto erstellt haben und das Konto sich in der gleichen Bereitstellung wie Ihr Open Catalog-Konto befindet, ist die Erstellung eines neuen privaten Endpunkts für Ihr Open Catalog-Konto nicht erforderlich. Sie können diesen Schritt auch überspringen.
Rufen Sie die Details Ihres Azure-Kontos ab. Das folgende Beispiel verwendet den Befehl
az account list
der Azure CLI.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.
Klicken Sie auf Private endpoints, und dann auf Add.
Auf der Registerkarte Basics füllen Sie die Felder Subscription, Resource group, Name und Region für Ihre Umgebung aus und klicken dann auf Next: Resource.
Wählen Sie auf der Registerkarte Resource für Connection method Connect to an Azure resource by resource ID or alias.
Geben Sie für Resource ID or alias den Wert für
Private Link Service ID
ein, den Sie erhalten haben, als Sie Ihre Open Catalog-Kontoeinstellungen für private Konnektivität abgerufen haben.Wenn Sie eine Fehlermeldung bezüglich des Alias-Wertes erhalten, wenden Sie sich an den Snowflake-Support, um den Wert der Ressourcen-ID zu erfahren, und wiederholen Sie diesen Schritt dann mit diesem Wert.
Wenn der private Endpunkt genehmigt ist, zeigt CONNECTION STATE im Abschnitt „Private endpoints“ auf der Seite „Private Link Center“ den Wert Pending an. Dieser Wert ändert sich in Approved, wenn Sie die Autorisierung im nächsten Verfahren abschließen.
Private Konnektivität für eingehende Verbindungen 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 eine private Konnektivität mit Open Catalog zu verbinden. Sie benötigen Ihre Ressourcen-ID des privaten Endpunkts, eine Abonnement-ID und den Wert des Verbundtokens, der die Zugangsdaten für einen Benutzer im Verbund enthält.
Um diese Werte zu erhalten, führen Sie die folgenden Befehle in der Azure CLI aus:
Um Ihre Ressourcen-ID für den privaten Endpunkt 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 den Wert in der Spalte SubscriptionID in der Ausgabe:
az account list --output table
Um den Wert des Verbundtokens zu erhalten, führen Sie den folgenden Befehl aus und kopieren den accessToken-Wert in einen Texteditor:
az account get-access-token --subscription <SubscriptionID>
Dabei ist
SubscriptionID
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
accessToken
-Wert ist eine vertrauliche Information und sollte wie ein Kennwort behandelt werden — geben Sie diesen Wert 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ü Settings aus.
Wählen Sie Authorize aus.
Aktivieren Sie im Dialog „Authorize Private Link“ die 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 aus.
DNS einrichten¶
Alle Anfragen an Open Catalog müssen über den privaten Endpunkt geroutet werden. Um das Open Catalog-Konto und OCSP-URLs auf die private IP-Adresse Ihres privaten Endpunktes aufzulösen, aktualisieren Sie Ihren DNS.
Um die Adresse der Endpunkt-IP zu erhalten, geben Sie in der Suchleiste des Azure-Portals den Namen des privaten Endpunkts ein, den Sie erstellt haben.
Wählen Sie das Ergebnis „Network Interface“.
Kopieren Sie den Wert für die private IP-Adresse.
Konfigurieren Sie Ihren DNS so, dass die entsprechenden Endpunktwerte aus den Einstellungen Ihres Open Catalog Kontos für private Konnektivität auf die private IP-Adresse aufgelöst werden.
Schritt 3: Verbinden Sie sich mit Open Catalog über Azure Private Link¶
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 DNS-Dienst so einrichten, dass er dem Wert entspricht, den Sie für <open_catalog_account_identifier>
angeben.
Parameter |
Beschreibung |
---|---|
|
Gibt den Namen des Katalogs an, mit dem eine Verbindung hergestellt werden soll. |
|
Gibt die Maven-Koordinate für Ihren externen Anbieter von Cloud Storage an:
|
|
Gibt die Client-ID an, die der Dienstprinzipal verwenden soll. |
|
Legt das Client-Geheimnis fest, das der Dienstprinzipal verwenden soll. |
|
Gibt die URL für die Verbindung zu Ihrem Snowflake Konto über den AWS-PrivateLink oder Azure Private Link an.
|
|
Gibt die Prinzipalrolle an, die dem Dienstprinzipal gewährt wird. |
Schritt 4 (Optional): Erstellen Sie eine Katalogintegration für Snowflake¶
Wenn Sie Snowflake zur Abfrage von mit Open Catalog verwalteten Tabellen verwenden, erstellen Sie einen Katalog für Snowflake, der eine private IP-Adresse verwendet. Um diese Katalogintegration zu erstellen, muss sich Ihr Snowflake-Konto in der gleichen Bereitstellung befinden wie Ihr Open Catalog-Konto.
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 in Verbindung mit der Konfiguration der privaten 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.
Um diesen Zugang zu konfigurieren, siehe Private Konnektivität für Snowflake Open Catalog konfigurieren UI.