Freigeben über


Sichere Azure Functions mit Event Hubs

Beim Konfigurieren des Zugriffs auf Ressourcen in Azure sollten Sie eine fein abgestufte Kontrolle über Berechtigungen für Ressourcen anwenden. Der Zugriff auf diese Ressourcen sollte auf den Sicherheitsprinzipien erforderliches Wissen (Need-to-Know) und geringste Rechte (Least Privilege) basieren, um sicherzustellen, dass Clients nur den eingeschränkten Satz von Aktionen ausführen können, die ihnen zugewiesen sind.

Autorisieren des Zugriffs auf Event Hubs

Die Autorisierung des Zugriffs auf Azure Event Hubs-Ressourcen kann mithilfe der folgenden Sicherheitskonstrukte erfolgen:

  • Microsoft Entra ID: Microsoft Entra ID bietet rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) für eine präzise Steuerung des Zugriffs eines Clients auf Event Hubs-Ressourcen. Basierend auf den gewährten Rollen und Berechtigungen autorisiert Microsoft Entra ID Anforderungen mithilfe eines OAuth 2.0-Zugriffstokens.

  • Shared Access Signature: Eine Shared Access Signature (SAS) bietet die Möglichkeit, Event Hubs-Ressourcen basierend auf Autorisierungsregeln zu schützen. Sie definieren Autorisierungsrichtlinien, indem Sie eine oder mehrere Richtlinienregeln auswählen, z. B. die Möglichkeit, Nachrichten zu senden, auf Nachrichten zu lauschen und die Entitäten im Namespace zu verwalten.

Überlegungen zu Shared Access Signature

Wenn Sie eine Shared Access Signature mit Azure Functions und Event Hubs verwenden, sollten die folgenden Überlegungen berücksichtigt werden:

  • Vermeiden Sie das Recht „Verwalten“ : Zusätzlich zur Möglichkeit, die Entitäten in einem Event Hubs-Namespace verwalten zu können, umfasst das Recht „Verwalten“ sowohl das Recht „Senden“ als auch „Lauschen“. Im Idealfall sollte einer Funktions-App nur eine Kombination aus Sende- und Lauschen-Rechten gewährt werden, basierend auf den Aktionen, die sie ausführt.

  • Verwenden Sie nicht die Standardregel „Verwalten“ : Vermeiden Sie die Verwendung der Standardrichtlinienregel namens RootManageSharedAccessKey, es sei denn, sie wird von Ihrer Funktions-App benötigt, wobei es sich um ein ungewöhnliches Szenario handeln sollte. Ein weiterer Nachteil dieser Standardregel ist, dass sie auf Namespaceebene erstellt wird und allen zugrunde liegenden Event Hubs Berechtigungen erteilt.

  • Überprüfen Sie die Bereiche der SAS-Richtlinie: SAS-Richtlinien können auf Namespaceebene und pro Event Hub erstellt werden. Erwägen Sie, differenzierte Zugriffsrichtlinien zu erstellen, die auf jeden Client zugeschnitten sind, um dessen Bereich und seine Berechtigungen zu beschränken.

Verwaltete Identität

Eine Active Directory-Identität kann einer verwalteten Ressource in Azure zugewiesen werden, z. B. einer Funktions-App oder Web-App. Nachdem eine Identität zugewiesen wurde, verfügt sie über die Möglichkeiten zum Arbeiten mit anderen Ressourcen, die Microsoft Entra ID die Autorisierung verwenden, ähnlich wie ein Dienstprinzipal.

Funktions-Apps können einer verwalteten Identität zugewiesen werden und identitätsbasierte Verbindungen für eine Teilmenge von Diensten nutzen, einschließlich Event Hubs. Identitätsbasierte Verbindungen bieten Unterstützung für die Trigger- wie für die Ausgabebindungserweiterungen und müssen die Event Hubs-Erweiterung 5.x und höher zur Unterstützung verwenden.

Netzwerk

Standardmäßig kann über das Internet auf Event Hubs-Namespaces zugegriffen werden, solange die Anforderung eine gültige Authentifizierung und Autorisierung aufweist. Es gibt drei Optionen zum Einschränken des Netzwerkzugriffs auf Event Hubs-Namespaces:

Beachten Sie in jedem Fall, dass mindestens eine IP-Firewallregel oder eine VNET-Regel für den Namespace angegeben ist. Andernfalls ist der Zugriff auf den Namespace über das öffentliche Internet (mithilfe des Zugriffsschlüssels) möglich, wenn keine IP-Adresse oder VNET-Regel angegeben ist.

Azure Functions kann so konfiguriert werden, dass Ereignisse von Event Hubs verwendet oder darin veröffentlicht werden, die entweder mit Dienstendpunkten oder privaten Endpunkten eingerichtet sind. Die regionale Integration virtueller Netzwerke ist erforderlich, damit Ihre Funktions-App über einen Dienstendpunkt oder einen privaten Endpunkt eine Verbindung mit einem Event Hub herstellen kann.

Wenn Sie Functions für die Arbeit mit einer für private Endpunkte aktivierten Ressource einrichten, müssen Sie die Anwendungseinstellung WEBSITE_VNET_ROUTE_ALL auf 1 festlegen. Wenn Sie Ihre Funktions-App vollständig sperren möchten, müssen Sie auch Ihr Speicherkonto einschränken.

Zum Auslösen (Nutzen) von Ereignissen in einer virtuellen Netzwerkumgebung muss die Funktions-App in einem Premium-Plan, einem Dedicated-Pan (App Service) oder einer App Service-Umgebung(ASE) gehostet werden.

Darüber hinaus erfordert die Ausführung in einem Azure Functions Premium-Plan und die Nutzung von Ereignissen aus einem auf ein virtuelles Netzwerk beschränkten Event Hub die Unterstützung von Triggern für virtuelle Netzwerke, die auch als Überwachung der Runtimeskalierung bezeichnet wird. Die Überwachung der Runtimeskalierung kann über das Azure-Portal, die Azure CLI oder mit anderen Bereitstellungslösungen konfiguriert werden. Die Überwachung der Laufzeitskala ist nicht verfügbar, wenn die Funktion in einem Dedicated-Plan (App Service) oder einer ASE ausgeführt wird.

Um die Überwachung der Laufzeitskalierung mit Event Hubs zu verwenden, müssen Sie Version 4.1.0 oder höher der Erweiterung „Microsoft.Azure.WebJobs.Extensions.EventHubs“ verwenden.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte

Bevor Sie fortfahren, sollten Sie die folgenden verwandten Artikel lesen: