Getty Images

Einen privaten Endpunkt zum Schutz von Functions-Apps erstellen

Denken Sie an die Sicherheit und lassen Sie Ihre Funktionen nicht ungeschützt. Erfahren Sie, wie private Endpunkte einen zusätzlichen Schutz für Ihre Azure-Functions-Apps bieten.

Azure Functions ermöglicht es Entwicklern, kleine Codeteile oder Funktionen als Reaktion auf verschiedene Ereignisse auszuführen, ohne die zugrunde liegende Infrastruktur verwalten zu müssen. Die Funktionen können durch verschiedene Quellen ausgelöst werden, zum Beispiel HTTP-Anfragen, Datenbankoperationen und Timer-Ereignisse.

Mit Azure Functions können sich Entwickler ausschließlich auf ihren Code konzentrieren, während Azure die Skalierung, Wartung und Ausführung übernimmt. Diese serverlose Architektur ist ideal für den Aufbau von Microservices, ereignisgesteuerten Anwendungen und automatisierten Aufgaben. Sie bietet eine kostengünstige Lösung, bei der nur die tatsächlich genutzte Rechenzeit berechnet wird.

Auch wenn es zahlreiche Vorteile gibt, müssen Unternehmen bei der Sicherheit proaktiv sein. Sicherheit ist für Azure Functions aus mehreren Gründen unerlässlich:

  • Schutz von Daten: Azure Functions interagiert häufig mit sensiblen Daten, seien es Benutzerinformationen, Transaktionsdaten oder geschützte Geschäftsinformationen. Unternehmen müssen ihre Daten schützen, um unbefugten Zugriff und Datenverletzungen zu verhindern.
  • Vertrauenswürdigkeit: Für Unternehmen und Entwickler ist die Vertrauenswürdigkeit einer Anwendung oder eines Dienstes von entscheidender Bedeutung. Böswillige Akteure könnten das unsichere Azure Functions ausnutzen und so das Vertrauen von Benutzern und Stakeholdern untergraben.
  • Einhaltung von Vorschriften: In vielen Branchen gibt es streng gesetzliche Vorschriften für die Handhabung und Verarbeitung von Daten. Sichere Azure Functions helfen Unternehmen bei der Einhaltung von Vorschriften und vermeiden rechtliche Konsequenzen und potenzielle Geldstrafen.
  • finanzielle Auswirkungen: Eine Sicherheitsverletzung kann zu finanziellen Verlusten führen, sowohl direkt durch Diebstahl als auch indirekt durch Rufschädigung, Verlust von Kunden und Kosten für die Behebung.
  • Bedenken hinsichtlich der Integration: Azure Functions ist häufig mit anderen Diensten und Anwendungen integriert. Eine Sicherheitslücke in einer Funktion kann diese verbundenen Systeme gefährden oder kompromittieren.

In diesem Tipp erfahren Sie die Grundlagen eines privaten Endpunkts, bewährte Verfahren, häufig zu vermeidende Fehler und wie Sie einen privaten Endpunkt erstellen.

Was ist ein privater Endpunkt?

Bei der Absicherung von Azure Functions geht es nicht nur um den Schutz einer einzelnen Funktion, sondern auch um den Schutz des gesamten Ökosystems, mit dem sie interagiert, um die Datenintegrität zu gewährleisten und das Vertrauen zu erhalten.

Eine Funktion, die zum Schutz von Azure Functions beiträgt, ist ein privater Endpunkt. Dabei handelt es sich um eine Netzwerkschnittstelle, die über eine private Verbindung eine Verknüpfung zu einem bestimmten Azure-Dienst wie Azure Functions herstellt. Das bedeutet, dass der Datenverkehr zwischen einem virtuellen Netzwerk und dem Azure-Dienst vom öffentlichen Internet isoliert ist.

Die Verwendung eines privaten Endpunkts für Azure Functions bietet mehrere Vorteile:

  • erhöhte Sicherheit: Die Isolierung des Datenverkehrs zwischen einem virtuellen Netzwerk und Azure Functions trägt dazu bei, Daten vor unbefugtem Zugriff zu schützen.
  • verbesserte Leistung: Private Endpunkte verwenden Azure Private Link, um den Datenverkehr direkt zwischen einem virtuellen Netzwerk und Azure Functions zu leiten, was die Leistung verbessern kann.
  • geringere Kosten: Mit einem privaten Endpunkt können Unternehmen die Kosten für den öffentlichen Internet-Egress-Verkehr vermeiden.

Bewährte Praktiken für private Endpunkte

Der Schlüssel zur Verwendung privater Endpunkte liegt darin, sicherzustellen, dass die zugrundeliegende Netzwerkkonfiguration wie gewünscht vorhanden ist. Einige Ansätze und Praktiken können dazu beitragen, dass ein privater Endpunkt sicher, kontrolliert und einfach zu verwalten ist. Einige davon sind die folgenden:

  • Verwenden Sie ein eigenes Subnetz für private Endpunkte. Das hilft dabei, private Endpunkte von anderem Verkehr in einem virtuellen Netzwerk zu isolieren.
  • Aktivieren Sie Private Link in der Azure-Functions-App. Private Link muss in der Azure-Functions-App aktiviert sein, um eine Verbindung zum privaten Endpunkt herzustellen.
  • Verwenden Sie ein Service-Tag, um den Zugriff auf private Endpunkte zu kontrollieren. So können Sie sicherstellen, dass nur autorisierte Benutzer auf private Endpunkte zugreifen können.
  • Überwachen Sie private Endpunkte. Um sicherzustellen, dass die privaten Endpunkte korrekt funktionieren, überwachen Sie sie mit Azure Monitor.
  • Aktualisieren Sie private Endpunkte regelmäßig. So stellen Sie sicher, dass sie die neuesten Sicherheitsfunktionen verwenden.

Einige zusätzliche Optionen sind die folgenden:

  • Verwenden Sie eine private DNS-Zone, um die IP-Adresse des privaten Endpunkts aufzulösen.
  • Verwenden Sie einen Load Balancer, um den Datenverkehr zu Ihrer Azure-Functions-App zu verteilen.
  • Verwenden Sie eine Firewall, um den Zugriff auf Ihre Azure-Functions-Anwendung zu kontrollieren.

Schritte zum Erstellen eines privaten Endpunkts

Um einen privaten Endpunkt für Azure Functions zu erstellen, benötigen Sie Folgendes:

  • Azure-Abonnement
  • Azure-Ressourcengruppe
  • Virtuelles Netzwerk
  • Subnetz im virtuellen Netzwerk
  • Azure-Functions-Anwendung

Schritt 1: Wählen Sie eine Funktionsvorlage

Erstellen Sie eine Azure-Funktion mit einer der fertigen Vorlagen oder verwenden Sie eigenen Code. Öffnen Sie dazu Visual Studio, wählen Sie Neues Projekt (New Project), wählen Sie Azure Function und wählen Sie dann die gewünschte Vorlage.

Auswahl der Azure-Functions-Projektvorlage in Visual Studio
Abbildung 1: Wählen Sie in Visual Studio die Azure-Functions-Projektvorlage.

Für dieses Beispiel verwenden Sie die Standardvorlage HTTP-Trigger, einschließlich des gesamten Beispielcodes, den die Vorlage erstellt.

Wahl des HTTP-Triggers als Vorlage
Abbildung 2: Wählen Sie den HTTP-Trigger als Vorlage.

Fühlen Sie die Eigenschaften aus, und erstellen Sie das Projekt. Der folgende Beispielcode wird standardmäßig erstellt, wenn Sie die Microsoft-http-Trigger-Vorlage verwenden – der Funktionsname unterscheidet sich:

 public static class funcAWZI0LK5
{
[FunctionName("funcAWZI0LK5")]
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
string responseMessage = string.IsNullOrEmpty(name) ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.": $"Hello, {name}. This HTTP triggered function executed successfully.";
return new OkObjectResult(responseMessage);
}
}

Schritt 2: Testen Sie die Funktion

Um die Funktion zu testen, navigieren Sie zur Übersichtsseite, um die URL zu erhalten.

Abruf der Azure-Functions-URL
Abbildung 3: Rufen Sie die Azure-Functions-URL ab.

Wenn Sie die URL aufrufen, wird eine Azure-Seite angezeigt, die besagt, dass die Funktion funktioniert. Um den Code für die Funktion zu verwenden, hängen Sie an die URL /API/function-name an – im Beispielcode ist das /API/HttpAWZI0LK5. Wenn Sie Daten an die Funktion übergeben möchten, können Sie etwas wie /API/HttpAWZI0LK5?name=Liam Cleary verwenden.

Die Standardkonfiguration erlaubt es jedem, die Funktion aufzurufen, da es die Autorisierungsmethode anonymisiert. Ändern Sie das am besten in eine sicherere Option, es sei denn, Sie benötigen anonymen Zugriff auf die Funktion. Ändern Sie den Code entsprechend der gewünschten Einstellung, fügen Sie der Funktion eine spezifische Konfiguration hinzu und veröffentlichen Sie sie erneut in Azure.

Schritt 3: Hinzufügen eines privaten Endpunkts

Um den privaten Endpunkt für die Azure-Funktion zu verwenden, navigieren Sie zu der Funktion in Azure Portal und wählen Sie im Abschnitt Einstellungen die Option Networking.

Auswahl der Netzwerkoptionen in den Einstellungen
Abbildung 4: Wählen Sie die Netzwerkoption in den Einstellungen von Azure Functions.

Es gibt verschiedene Optionen für die Vernetzung innerhalb einer Azure-Funktion. Alle diese Optionen sind deaktiviert, so dass Sie die gewünschte Option auswählen müssen:

  • Zugriffsbeschränkung: Damit können Sie den Zugriff auf bestimmte IP-Adressen oder Subnetze einschränken oder verweigern.
  • der App zugewiesene Adresse: Das kann hilfreich sein, wenn Sie die App online zugänglich machen müssen.
  • privater Endpunkt: Damit wird sichergestellt, dass der Datenverkehr zwischen dem virtuellen Netzwerk und dem Azure-Dienst vom öffentlichen Internet isoliert ist.

Um die Option des privaten Endpunkts zu nutzen, klicken Sie auf den Link, der Sie zu den Konfigurationsoptionen führt.

Anzeigen von privaten Endpunktverbindungen
Abbildung 5: Zeigen Sie die privaten Endpunktverbindungen an.

Klicken Sie auf die Option Hinzufügen (Add), um den privaten Endpunkt hinzuzufügen, und wählen Sie dann entweder Express oder Erweitert (Advanced). Bei den Express-Optionen müssen Sie einige Werte eingeben und dann den privaten Endpunkt erstellen.

Hinzufügen eines privaten Express-Endpunkts
Abbildung 6: Fügen Sie einen privaten Express-Endpunkt hinzufügen.

Sobald der private Endpunkt in der Konfiguration erstellt ist, werden sowohl die Optionen für den privaten Endpunkt (private endpoint) als auch die Zugriffsbeschränkungen (access restrictions) aktiviert. Wenn Sie die ursprüngliche Endpunkt-URL aufrufen, erhalten Sie keine Meldung über ein Verbot.

Aktivierung der Einschränkungen
Abbildung 7: Aktivieren Sie Einschränkungen, nachdem Sie einen privaten Endpunkt erstellt haben.

Der reguläre externe Zugriff wird nun zugunsten des neuen privaten Endpunkts blockiert. In der Konfiguration der Zugriffsbeschränkungen ist das Kontrollkästchen Öffentlichen Zugriff zulassen (Allow Public Access) jetzt deaktiviert, wodurch der Zugriff auf den öffentlichen Endpunkt sowohl für die Haupt- als auch für die erweiterte Tool-Site gesperrt wird. Fügen Sie einen lokalen DNS-Eintrag hinzu, der weiß, wie er die zugewiesene IP-Adresse für den privaten Endpunkt erreichen kann.

Um die Funktion mit dem privaten Endpunkt weiter abzusichern, fügen Sie ein Anwendungs-Gateway hinzu, das das externe Routing zurück zum privaten Endpunkt kontrolliert. Oder stellen Sie sicher, dass Sie eine private Verbindung zum Azure-Tenant direkt aus dem Netzwerk haben, das die Funktion aufruft.

Häufig zu vermeidende Fehler bei privaten Endpunkten

Bei der Erstellung privater Endpunkte für Azure Functions sind einige häufige Fehler zu vermeiden:

  • falsches Abonnement oder falsche Ressourcengruppe: Verwenden Sie beim Erstellen des privaten Endpunkts die richtige Abonnement- und Ressourcengruppe. Der private Endpunkt kann sich ohne die richtigen Auswahlen nicht mit Ihrer Azure-Functions-App verbinden.
  • Der private Endpunkt wurde im falschen Subnetz erstellt: Der private Endpunkt muss in demselben Subnetz wie Ihre Azure-Functions-App erstellt werden. Wenn Sie den privaten Endpunkt im falschen Subnetz erstellen, kann der private Endpunkt keine Verbindung zu Ihrer Azure-Functions-Anwendung herstellen.
  • Nichtaktivierung von Private Link in der Azure-Functions-App: Unternehmen müssen Private Link in der Azure-Functions-App aktivieren, um eine Verbindung mit dem privaten Endpunkt herzustellen. Wenn Private Link nicht aktiviert ist, kann sich die Azure-Functions-App nicht mit dem privaten Endpunkt verbinden.

keine Verwendung eines dedizierten Subnetzes für Ihre privaten Endpunkte: Die Verwendung eines dedizierten Subnetzes hilft bei der Isolierung privater Endpunkte von anderem Datenverkehr in einem virtuellen Netzwerk.

Erfahren Sie mehr über Cloud Computing