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:
- Zulassen des Zugriffs von bestimmten IP-Adressen
- Zulassen des Zugriffs von bestimmten virtuellen Netzwerken (Dienstendpunkte)
- Zulassen des Zugriffs über private Endpunkte
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 Funktionen in ein virtuelles Netzwerk integrieren und vnetRouteAllEnabled
aktivieren, wird der gesamte ausgehende Datenverkehr aus der Funktions-App über das virtuelle Netzwerk erzwungen. Dies ist insbesondere für Szenarien wichtig, in denen Sie Ihre Funktions-App schützen möchten, indem Sie sicherstellen, dass der gesamte Datenverkehr, einschließlich des Datenverkehrs zu Azure-Diensten, Ihr virtuelles Netzwerk durchläuft und dort überprüft und gesteuert wird. 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.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautor:
- David Barkol | Principal Solution Specialist GBB
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:
- Autorisieren des Zugriffs mit Microsoft Entra ID
- Autorisieren des Zugriffs mit einer Shared Access Signature in Azure Event Hubs
- Konfigurieren einer identitätsbasierten Ressource
Zugehörige Ressource
Die serverlose Ereignisverarbeitung ist eine Referenzarchitektur, die eine typische Architektur dieses Typs mit Codebeispielen und einer Erläuterung wichtiger Überlegungen detailliert erläutert.