Private Konnektivität mit externen Funktionen: Azure Portal

In diesem Thema finden Sie Details zur Konfiguration der ausgehenden privaten Konnektivität zu einem externen Dienst, indem Sie wie folgt eine externe Funktion für Snowflake-Konten in Microsoft Azure aufrufen:

  • Verwenden Sie die Weboberfläche des Azure-Portals, um Ressourcen unter Microsoft Azure zu konfigurieren.

  • Erstellen Sie eine API-Integration und externe Funktion in Snowflake.

  • Rufen Sie die externe Funktion in Snowflake auf, um die private Konnektivität mit dem externen Dienst zu validieren.

Abrechnung und Preise

Sie zahlen für jeden privaten Konnektivitätsendpunkt zusammen mit den insgesamt verarbeiteten Daten. Die Preise für diese Artikel finden Sie in der Snowflake Service Consumption Table.

Übersicht über den Prozess

Im Folgenden finden Sie eine allgemeinen Übersicht über die Konfiguration. Die Schritte in Snowflake müssen von einem Benutzer mit der Rolle ACCOUNTADMIN durchgeführt werden. Schritte im Azure-Portal werden von einem Benutzer mit Rechten zur Nutzung der entsprechenden Ressourcen ausgeführt, sofern nicht anders angegeben.

Die folgenden Schritte sind dieselben wie bei der Verwendung externer Funktionen über das öffentliche Internet:

  1. Führen Sie die erforderlichen Schritte für externe Funktionen auf Microsoft Azure durch.

  2. Erstellen Sie im Azure Portal den Remotedienst.

  3. Erstellen Sie im Azure-Portal den Proxydienst.

Möglicherweise möchten Sie jedoch neue Ressourcen erstellen, um Ihren Bedarf an privater Konnektivität vollständig von Ihrem Bedarf an öffentlichem Internet abzugrenzen. Wenden Sie sich an Ihre internen Sicherheitsadministratoren, um die beste Lösung für Ihre Bedürfnisse zu finden.

Diese Schritte gelten nur für externe Funktionen, die eine private Konnektivität für einen externen Dienst verwenden:

  1. Erstellen Sie in Snowflake einen privaten Endpunkt.

    Snowflake speichert die private IP-Adresse für den privaten Endpunkt intern.

  2. Genehmigen Sie im Azure-Portal den privaten Endpunkt.

    Diese Aktion wird vom Eigentümer der Azure API Management-Ressource (externer Dienst) durchgeführt.

  3. Erstellen Sie in Snowflake eine neue API-Integration.

    Sie benötigen eine spezielle API-Integration, um die private Konnektivität mit dem externen Dienst zu unterstützen.

  4. Erstellen Sie in Snowflake eine externe Funktion. Die private Konnektivitäts-URL ist der Wert für die Aufruf-URL in der externen Funktion.

  5. Rufen Sie in Snowflake die externe Funktion auf, damit Snowflake über die private Konnektivität eine Verbindung mit dem externen Dienst herstellen kann.

  6. Entfernen Sie alle privaten Konnektivitätsendpunkte, die nicht benötigt werden.

Konfiguration

Führen Sie folgende Schritte im Azure-Portal aus:

  1. Wenn Sie die Ressource Azure API Management bereits eingerichtet haben und den Remotedienst und den Proxydienst wiederverwenden möchten, fahren Sie mit den Schritten zur privaten Konnektivität fort. Andernfalls führen Sie folgende Schritte aus:

  2. Führen Sie die erforderlichen Schritte für externe Funktionen auf Microsoft Azure aus.

  3. Erstellen Sie den Remotedienst im Azure-Portal.

  4. Erstellen Sie im Azure-Portal den Proxydienst.

Führen Sie diese folgende Schritte aus, um die private Konnektivität zu konfigurieren:

  1. Führen Sie in Snowflake den Befehl CREATE API INTEGRATION aus, um eine neue API-Integration zu erstellen, die eine private Konnektivität mit dem externen Dienst unterstützt. Aktualisieren Sie die Eigenschaftswerte, damit sie mit Ihrem Microsoft Azure-Abonnement übereinstimmen:

    CREATE API INTEGRATION external_api_integration_azure_private
      API_PROVIDER = azure_private_api_management
      AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
      AZURE_AD_APPLICATION_ID = 'dv3421nq-1g4s-4ap4-x89c-xrf28hna7m2o'
      API_ALLOWED_PREFIXES = ('https://aztest1-external-function-api.azure.net')
      ENABLED = TRUE
      COMMENT = 'API integration for private connectivity to an external service with external functions on Azure.';
    
    Copy
  2. Rufen Sie in Snowflake die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf, um den privaten Endpunkt zu erstellen. Aktualisieren Sie die Argumentwerte, damit sie mit Ihrem Microsoft Azure-Abonnement übereinstimmen:

    USE ROLE ACCOUNTADMIN;
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
      '/subscriptions/f4b00c5f-f6bf-41d6-806b-e1cac4f1f36f/resourceGroups/aztest1-external-function-rg/providers/Microsoft.ApiManagement/service/aztest1-external-function-api',
      'aztest1-external-function-api.azure.net',
      'Gateway'
      );
    
    Copy
  3. Genehmigen Sie im Azure-Portal und als Eigentümer der Azure-API-Verwaltungsressource den privaten Endpunkt. Einzelheiten finden Sie unter dem Genehmigungsprozess.

  4. Verknüpfen Sie die API-Integration für Azure mit dem Proxydienst, damit Snowflake API-Anfragen an den Azure API Management-Dienst senden kann.

  5. Sie können den öffentlichen Zugriff auf die Azure API Management-Ressource sperren lassen. Weitere Informationen finden Sie unter Sicherer Zugriff auf die Azure API Management-Ressource (in diesem Thema).

  6. Wenn Sie in Snowflake bereits über eine Datenbank und ein Schema zur Speicherung der externen Funktion verfügen und diese Objekte verwenden möchten, vergewissern Sie sich, dass diese Objekte in Verwendung sind oder wählen Sie sie unter Snowsight aus. Erstellen Sie andernfalls eine Datenbank und ein Schema zum Speichern der externen Funktion für die Verwendung mit privater Konnektivität zu einem externen Dienst:

    CREATE DATABASE private_external_service_db;
    CREATE SCHEMA private_ext_functions;
    
    Copy
  7. Führen Sie in Snowflake den Befehl CREATE EXTERNAL FUNCTION aus, um die externe Funktion zu erstellen, die für die private Konnektivität mit dem externen Dienst verwendet werden soll. Aktualisieren Sie die Aufruf-URL mit der privaten Konnektivitäts-URL des externen Dienstes:

    CREATE OR REPLACE SECURE EXTERNAL FUNCTION private_ext_function_azure_portal(
      a INTEGER , b VARCHAR)
      RETURNS VARIANT
      API_INTEGRATION = external_api_integration_azure_private
      AS 'https://aztest1-external-function-api.azure.net/my-api-url-suffix/http-function-name';
    
    Copy

    Das URL-Format hängt davon ab, ob Sie eine externe Funktion über das Azure Portal oder die Azure ARM-Vorlage erstellen. Einzelheiten finden Sie unter Format der Aufruf-URL.

  8. Rufen Sie in Snowflake die externe Funktion auf, um die private Konnektivität mit dem externen Dienst zu testen:

    SELECT private_ext_function_azure(66, 'Mario');
    
    Copy
    [0, 66, 'Mario']
    

Wenn die Ausgabe der Funktion das Ergebnis zurückgibt, das mit der Konfiguration des Remotedienst zu Beginn der Prozedur übereinstimmt, dann haben Sie bestätigt, dass die private Konnektivität zum externen Service wie erwartet funktioniert.

Sicherer Zugriff auf die Azure API Management-Ressource

Sie können den Zugriff auf die Azure API Management-Ressource, die mit dem privaten Endpunkt verbunden ist, für die Verwendung mit externen Funktionen sichern. Aus der Perspektive der Azure API Management-Ressource ist Snowflake eine eingehende Verbindung. Indem Sie den Zugriff sichern, verringern Sie die Wahrscheinlichkeit von Angriffen, die Ihre Nutzung externer Funktionen beeinträchtigen könnten.

Sie könnten zum Beispiel diesen Azure CLI apim-Befehl ausführen, um den öffentlichen Zugriff zu blockieren:

az apim update --name <api-name> --resource-group <resource group name> --public-network-access false
Copy

Aktualisieren Sie die Platzhalterwerte mit den Werten, die dem Namen der API Management-Ressource und dem Namen der Ressourcengruppe entsprechen.

Weitere Informationen und Optionen finden Sie unter diesen Themen: