Kennwortlose Verbindungen für Azure-Dienste

Hinweis

„Kennwortlose Verbindungen“ ist0 ein sprachunabhängiges Feature, das mehrere Azure-Dienste umfasst. Obwohl sich die aktuelle Dokumentation auf einige Sprachen und Dienste konzentriert, sind wir gerade dabei, zusätzliche Dokumentationen für andere Sprachen und Dienste zu erstellen.

In diesem Artikel werden die Sicherheitsprobleme mit Kennwörtern beschrieben und kennwortlose Verbindungen für Azure-Dienste eingeführt.

Sicherheitsprobleme mit Kennwörtern und geheimen Schlüsseln

Kennwörter und geheime Schlüssel sollten mit Vorsicht verwendet werden, und Entwickler müssen sie niemals an einem unsicheren Ort platzieren. Viele Apps stellen eine Verbindung mit Back-End-Datenbanken, Cache-, Messaging- und Ereignisdiensten mithilfe von Benutzernamen, Kennwörtern und Zugriffstasten her. Wenn diese Anmeldeinformationen verfügbar gemacht werden, können diese Anmeldeinformationen verwendet werden, um nicht autorisierten Zugriff auf vertrauliche Informationen wie einen Verkaufskatalog zu erhalten, den Sie für eine bevorstehende Kampagne erstellt haben, oder Kundendaten, die privat sein müssen.

Das Einbetten von Kennwörtern in eine Anwendung selbst stellt aus vielen Gründen ein großes Sicherheitsrisiko dar, einschließlich der Ermittlung über ein Code-Repository. Viele Entwickler externalisieren solche Kennwörter mithilfe von Umgebungsvariablen, damit Anwendungen sie aus verschiedenen Umgebungen laden können. Dies verschiebt jedoch nur das Risiko vom Code selbst in eine Ausführungsumgebung. Jeder, der Zugriff auf die Umgebung erhält, kann Kennwörter stehlen, was wiederum ihr Datenexfiltrationsrisiko erhöht.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe eines Speicherkontoschlüssels eine Verbindung mit Azure Storage herstellen. Viele Entwickler interessieren sich für diese Lösung, da sie sich mit Optionen vertraut fühlen, mit der sie in der Vergangenheit gearbeitet haben, obwohl es keine ideale Lösung ist. Wenn Ihre Anwendung derzeit Zugriffstasten verwendet, sollten Sie die Migration zu kennwortlosen Verbindungen in Betracht ziehen.

// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
    new Uri("https://<storage-account-name>.blob.core.windows.net"),
    new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));

Entwickler müssen diese Arten von Schlüsseln oder geheimen Schlüsseln an einem unsicheren Speicherort niemals offenlegen. Viele Unternehmen verfügen über strenge Sicherheitsanforderungen, um eine Verbindung mit Azure-Diensten herzustellen, ohne Dass Sie Entwicklern, Betreibern oder anderen Benutzern Kennwörter zur Verfügung stellen müssen. Sie verwenden häufig einen Tresor, um Kennwörter in Anwendungen zu speichern und zu laden, und verringern das Risiko durch Hinzufügen von Kennwortrotationsanforderungen und -verfahren weiter. Dieser Ansatz erhöht wiederum die betriebliche Komplexität und führt manchmal zu Anwendungsverbindungsausfällen.

Kennwortlose Verbindungen und Zero Trust

Sie können jetzt kennwortlose Verbindungen in Ihren Apps verwenden, um eine Verbindung mit Azure-basierten Diensten herzustellen, ohne Dass Kennwörter gedreht werden müssen. In einigen Fällen ist alles, was Sie benötigen, eine Konfiguration – kein neuer Code ist erforderlich. Zero Trust verwendet das Prinzip "niemals vertrauen, immer überprüfen und anmeldefrei". Dies bedeutet, dass alle Kommunikationen durch Vertrauenswürdigkeit von Computern oder Benutzern erst nach der Überprüfung der Identität und vor dem Gewähren des Zugriffs auf Back-End-Dienste gesichert werden.

Die empfohlene Authentifizierungsoption für sichere, kennwortlose Verbindungen besteht darin, verwaltete Identitäten und azure rollenbasierte Zugriffssteuerung (RBAC) in Kombination zu verwenden. Bei diesem Ansatz müssen Sie nicht viele verschiedene geheime Schlüssel für verwaltete Identitäten manuell nachverfolgen und verwalten, da diese Aufgaben intern von Azure sicher behandelt werden.

Sie können kennwortlose Verbindungen mit Azure-Diensten mithilfe von Service Verbinden or konfigurieren oder manuell konfigurieren. Der Dienstconnector ermöglicht verwaltete Identitäten in App-Hostingdiensten wie Azure Spring Apps, Azure App Service und Azure Container Apps. Der Dienst Verbinden or konfiguriert auch Back-End-Dienste mit kennwortlosen Verbindungen mit verwalteten Identitäten und Azure RBAC und hydratisiert Anwendungen mit erforderlichen Verbindungsinformationen.

Wenn Sie die laufende Umgebung einer Anwendung prüfen, die für kennwortlose Verbindungen konfiguriert ist, können Sie die vollständige Verbindungszeichenfolge sehen. Die Verbindungszeichenfolge enthält z. B. eine Datenbankserveradresse, einen Datenbanknamen und eine Anweisung zum Delegieren der Authentifizierung an ein Azure-Authentifizierungs-Plug-In, enthält jedoch keine Kennwörter oder geheimen Schlüssel.

Das folgende Video zeigt kennwortlose Verbindungen von Apps zu Azure-Diensten, die Java-Anwendungen als Beispiel verwenden. Eine ähnliche Abdeckung für andere Sprachen ist in Kürze verfügbar.


Einführung in DefaultAzureCredential

Kennwortlose Verbindungen mit Azure-Diensten über die Microsoft Entra-ID und die rollenbasierte Zugriffssteuerung (RBAC) können mithilfe DefaultAzureCredential der Azure Identity-Clientbibliotheken implementiert werden.

Wichtig

Einige Sprachen müssen DefaultAzureCredential explizit in ihrem Code implementieren, während andere Sprachen DefaultAzureCredential intern durch zugrunde liegende Plug-Ins oder Treiber nutzen.

DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt automatisch, welche Methode zur Laufzeit verwendet werden soll. Mit diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokale Entwicklung gegenüber Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren.

Die Reihenfolge und Die Speicherorte, in denen nach Anmeldeinformationen gesucht wird, DefaultAzureCredential variieren je nach Sprachen:

Wenn Sie beispielsweise lokal mit .NET arbeiten, führt DefaultAzureCredential im Allgemeinen eine Authentifizierung mit dem Konto durch, das der Entwickler für die Anmeldung bei Visual Studio, Azure CLI oder Azure PowerShell verwendet hat. Wenn die App in Azure bereitgestellt wird, ermittelt und verwendet DefaultAzureCredential automatisch die verwaltete Identität des zugeordneten Hostingdiensts, z. B. Azure App Service. Für diesen Übergang sind keine Änderungen am Code erforderlich.

Hinweis

Eine verwaltete Identität bietet eine Sicherheitsidentität zur Darstellung einer App oder eines Diensts. Die Identität wird von der Azure-Plattform verwaltet und erfordert nicht, dass Sie geheime Schlüssel bereitstellen oder drehen. Weitere Informationen zu verwalteten Identitäten finden Sie in der Übersichtsdokumentation.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie sich über kennwortlose Verbindungen mit Service Bus verbinden. In der weiteren Dokumentation wird beschrieben, wie Sie zu diesem Setup für einen bestimmten Dienst im Detail migrieren. Eine .NET-App kann eine Instanz von DefaultAzureCredential an den Konstruktor einer Dienstclientklasse übergeben. DefaultAzureCredential erkennt automatisch die Anmeldeinformationen, die in dieser Umgebung verfügbar sind.

ServiceBusClient serviceBusClient = new(
    new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
    new DefaultAzureCredential());

Siehe auch

Eine ausführlichere Erläuterung der kennwortlosen Verbindungen finden Sie im Entwicklerhandbuch zum Konfigurieren kennwortloser Verbindungen zwischen mehreren Azure-Apps und -Diensten.