Konfigurieren von Azure Storage-Verbindungszeichenfolgen
Eine Verbindungszeichenfolge enthält die erforderlichen Autorisierungsinformationen für den Zugriff auf Daten in einem Azure Storage-Konto aus Ihrer Anwendung zur Laufzeit mithilfe der Autorisierung mit gemeinsam verwendetem Schlüssel. Sie können Verbindungszeichenfolgen konfigurieren, um Folgendes zu tun:
- Verbinden mit dem Azurite-Speicheremulator
- Zugreifen auf ein Speicherkonto in Azure
- Zugreifen auf angegebene Ressourcen in Azure über eine Shared Access Signature (SAS)
Informationen zum Anzeigen der Zugriffsschlüssel für Ihr Konto und zum Kopieren einer Verbindungszeichenfolge finden Sie unter Verwalten von Speicherkonto-Zugriffsschlüsseln.
Wichtig
Um optimale Sicherheit zu gewährleisten, empfiehlt Microsoft möglichst die Verwendung von Microsoft Entra ID mit verwalteten Identitäten, um Anforderungen für Blob-, Warteschlangen- und Tabellendaten zu autorisieren. Die Autorisierung mit Microsoft Entra ID und verwalteten Identitäten bietet eine höhere Sicherheit und Benutzerfreundlichkeit als die Autorisierung mit gemeinsam verwendetem Schlüssel. Weitere Informationen zu verwalteten Identitäten finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?. Ein Beispiel zum Aktivieren und Verwenden einer verwalteten Identität für eine .NET-Anwendung finden Sie unter Authentifizieren von Azure-gehosteten Apps bei Azure-Ressourcen mit .NET.
Für Ressourcen, die außerhalb von Azure gehostet werden, z. B. lokale Anwendungen, können Sie verwaltete Identitäten über Azure Arc verwenden. Beispielsweise können Apps, die auf Azure Arc-fähigen Servern ausgeführt werden, verwaltete Identitäten verwenden, um eine Verbindung mit Azure-Diensten herzustellen. Weitere Informationen finden Sie unter Authentifizieren bei Azure-Ressourcen mit Azure Arc-fähigen Servern.
Für Szenarien, in denen SAS (Shared Access Signatures) verwendet werden, empfiehlt Microsoft die Verwendung einer Benutzerdelegierungs-SAS. Eine Benutzerdelegierungs-SAS wird mit Microsoft Entra-Anmeldeinformationen und nicht mithilfe des Kontoschlüssels geschützt. Informationen zu Shared Access Signatures finden Sie unter Gewähren von eingeschränktem Zugriff auf Daten mithilfe von SAS (Shared Access Signature). Ein Beispiel zum Erstellen und Verwenden einer Benutzerdelegierungs-SAS mit .NET finden Sie unter Erstellen einer SAS für die Benutzerdelegierung für ein Blob mit .NET.
Schützen Ihrer Zugriffsschlüssel
Zugriffsschlüssel für Speicherkonten bieten Vollzugriff auf die Daten des Speicherkontos und die Möglichkeit, SAS-Token zu generieren. Achten Sie darauf, die Zugriffsschlüssel immer gut zu schützen. Verwenden Sie Azure Key Vault zum sicheren Verwalten und Rotieren Ihrer Schlüssel. Der Zugriff auf den gemeinsam verwendeten Schlüssel gewährt einem Benutzer Vollzugriff auf die Daten eines Speicherkontos. Der Zugriff auf den gemeinsam verwendeten Schlüssel sollte sorgfältig eingeschränkt und überwacht werden. Verwenden Sie SAS-Token für die Benutzerdelegierung mit eingeschränktem Zugriffsbereich in Szenarien, in denen die auf Microsoft Entra ID basierende Autorisierung nicht verwendet werden kann. Vermeiden Sie die Hartcodierung von Zugriffsschlüsseln, und speichern Sie die Schlüssel nicht irgendwo im Klartext, wo sie für andere zugänglich sind. Rotieren Sie die Schlüssel, wenn Sie glauben, dass sie gefährdet sind.
Wichtig
Wenn Sie verhindern möchten, dass Benutzer mit einem gemeinsam verwendeten Schlüssel auf Daten in Ihrem Speicherkonto zugreifen, können Sie die Autorisierung mit einem gemeinsam verwendeten Schlüssel für das Speicherkonto verweigern. Als bewährte Sicherheitsmethode wird ein präziser Zugriff auf Daten mit den geringsten erforderlichen Berechtigungen empfohlen. Microsoft Entra ID-basierte Autorisierung mit verwalteten Identitäten sollte für Szenarien verwendet werden, die OAuth unterstützen. Kerberos oder SMTP sollte für Azure Files über SMB verwendet werden. Für Azure Files über REST können SAS-Token verwendet werden. Der Zugriff auf gemeinsam verwendete Schlüssel sollte deaktiviert werden, wenn er nicht erforderlich ist, um die unbeabsichtigte Verwendung zu verhindern. Weitere Informationen finden Sie unter Verhindern der Autorisierung mit gemeinsam verwendeten Schlüsseln für ein Azure Storage-Konto.
Um ein Azure Storage-Konto mit Azure AD-Richtlinien für bedingten Zugriff zu schützen, müssen Sie die Autorisierung mit gemeinsam verwendetem Schlüssel für das Speicherkonto untersagen.
Wenn Sie den Zugriff auf gemeinsam genutzte Schlüssel deaktiviert haben und die Autorisierung des freigegebenen Schlüssels in den Diagnoseprotokollen gemeldet wird, bedeutet dies, dass der vertrauenswürdige Zugriff für den Zugriff auf Speicher verwendet wird. Ausführlichere Informationen finden Sie unter Vertrauenswürdiger Zugriff für Ressourcen, die in Ihrem Microsoft Entra-Mandanten registriert sind.
Speichern einer Verbindungszeichenfolge
Die Anwendung muss zur Laufzeit auf die Verbindungszeichenfolge zugreifen, um bei Azure Storage eingehende Anforderungen zu autorisieren. Sie haben verschiedene Optionen zum Speichern der Kontozugriffsschlüssel oder Verbindungszeichenfolge:
- Sie können Ihre Kontoschlüssel sicher in Azure Key Vault speichern. Weitere Informationen finden Sie unter Informationen zu in Azure Key Vault verwalteten Speicherkontoschlüsseln.
- Sie können die Verbindungszeichenfolge in einer Umgebungsvariable speichern.
- Eine Anwendung kann die Verbindungszeichenfolge in einer app.config- oder web.config-Datei speichern. Fügen Sie die Verbindungszeichenfolge dem Abschnitt AppSettings in diesen Dateien hinzu.
Warnung
Das Speichern von Kontozugriffsschlüssel oder Verbindungszeichenfolge in Klartext stellt ein Sicherheitsrisiko dar und wird nicht empfohlen. Speichern Sie Ihre Kontoschlüssel in einem verschlüsselten Format, oder migrieren Sie Ihre Anwendungen, um die Microsoft Entra-Autorisierung für den Zugriff auf Ihr Speicherkonto zu verwenden.
Konfigurieren einer Verbindungszeichenfolge für Azurite
Der Emulator unterstützt nur ein einziges festgelegtes Konto und einen bekannten Authentifizierungsschlüssel für die Authentifizierung mit einem gemeinsam verwendeten Schlüssel. Dieses Konto und dieser Schlüssel sind die einzigen gemeinsam verwendeten Anmeldeinformationen, die für den Emulator verwendet werden dürfen. Sie lauten wie folgt:
Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
Hinweis
Der vom Emulator unterstützte Authentifizierungsschlüssel ist lediglich für das Testen der Funktionalität des Clientauthentifizierungscodes vorgesehen. Er erfüllt keinerlei Sicherheitszwecke. Sie können das in der Produktion verwendete Speicherkonto und den zugehörigen Schlüssel nicht mit dem Emulator verwenden. Es ist nicht ratsam, das Entwicklungskonto mit Produktionsdaten zu verwenden.
Der Emulator unterstützt nur Verbindungen über HTTP. Das empfohlene Protokoll für den Zugriff auf Ressourcen in einem in der Produktionsumgebung verwendeten Azure-Speicherkonto ist aber HTTPS.
Herstellen einer Verbindung mit dem Emulatorkonto über die Verknüpfung
Am einfachsten können Sie über Ihre Anwendung eine Verbindung mit dem Emulator herstellen, indem Sie eine Verbindungszeichenfolge in der Konfigurationsdatei Ihrer Anwendung konfigurieren, die auf die Verknüpfung UseDevelopmentStorage=true
verweist. Die Verknüpfung entspricht der vollständigen Verbindungszeichenfolge für den Emulator, die den Kontonamen, den Kontoschlüssel und die Emulatorendpunkte für die einzelnen Azure Storage-Dienste angibt:
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
Der folgende .NET-Codeausschnitt zeigt, wie Sie die Verknüpfung aus einer Methode verwenden können, die eine Verbindungszeichenfolge annimmt. Der Konstruktor BlobContainerClient(String, String) nimmt zum Beispiel eine Verbindungszeichenfolge an.
BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();
Stellen Sie sicher, dass der Emulator ausgeführt wird, bevor Sie den Code im Codeausschnitt aufrufen.
Weitere Informationen über Azurite finden Sie unter Verwenden des Azurite-Emulators für lokale Azure Storage-Entwicklung.
Konfigurieren einer Verbindungszeichenfolge für ein Azure-Speicherkonto
Um eine Verbindungszeichenfolge für Ihr Azure-Speicherkonto zu erstellen, verwenden Sie das folgende Format. Geben Sie an, ob Sie über HTTPS (empfohlen) oder HTTP eine Verbindung mit dem Speicherkonto herstellen möchten, ersetzen Sie myAccountName
durch den Namen Ihres Speicherkontos, und ersetzen Sie myAccountKey
durch Ihren Kontozugriffsschlüssel:
DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey
Die Verbindungszeichenfolge kann beispielsweise wie folgt aussehen:
DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>
Obwohl Azure Storage sowohl HTTP als auch HTTPS in einer Verbindungszeichenfolge unterstützt, wird die Verwendung von HTTPS ausdrücklich empfohlen.
Tipp
Sie finden die Verbindungszeichenfolgen Ihres Speicherkontos im Azure-Portal. Navigieren Sie in den Einstellungen Ihres Speicherkontos zu Sicherheit + Netzwerk>Zugriffsschlüssel, um die Verbindungszeichenfolgen sowohl für den primären als auch für den sekundären Zugriffsschlüssel anzuzeigen.
Erstellen einer Verbindungszeichenfolge mit einer Shared Access Signature
Wenn Sie über eine URL für Shared Access Signature (SAS) verfügen, die den Zugriff auf Ressourcen in einem Speicherkonto ermöglicht, können Sie die SAS in einer Verbindungszeichenfolge verwenden. Da die SAS die zum Authentifizieren der Anforderung erforderlichen Informationen enthält, werden über eine Verbindungszeichenfolge mit einer SAS das Protokoll, der Dienstendpunkt und die erforderlichen Anmeldeinformationen zum Zugreifen auf die Ressource bereitgestellt.
Um eine Verbindungszeichenfolge zu erstellen, die eine SAS enthält, geben Sie die Zeichenfolge im folgenden Format ein:
BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken
Jeder Dienstendpunkt ist optional, obwohl die Verbindungszeichenfolge mindestens einen enthalten muss.
Hinweis
Die Verwendung von HTTPS mit einem SAS wird als bewährte Methode empfohlen.
Wenn Sie eine SAS in einer Verbindungszeichenfolge in einer Konfigurationsdatei angeben, müssen Sie womöglich Sonderzeichen in der URL codieren.
Beispiel für Dienst-SAS
Hier ist ein Beispiel einer Verbindungszeichenfolge, die eine Dienst-SAS für Blobspeicher enthält:
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
Und hier ist ein Beispiel für die gleiche Verbindungszeichenfolge mit URL-Codierung:
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
Beispiel für Konto-SAS
Hier ist ein Beispiel einer Verbindungszeichenfolge, die eine Dienst-SAS für Blob-und Dateispeicher enthält: Beachten Sie, dass Endpunkte für beide Dienste angegeben werden:
BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl
Und hier ist ein Beispiel für die gleiche Verbindungszeichenfolge mit URL-Codierung:
BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl
Erstellen einer Verbindungszeichenfolge für einen bestimmten Speicherendpunkt
Sie können die Dienstendpunkte in Ihrer Verbindungszeichenfolge explizit angeben, anstatt die Standardendpunkte zu verwenden. Um eine Verbindungszeichenfolge zu erstellen, die einen expliziten Endpunkt festlegt, geben Sie für jeden Dienst den vollständigen Dienstendpunkt einschließlich der Protokollspezifikation (HTTPS (empfohlen) oder HTTP) im folgenden Format an:
DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey
Bei einem möglichen Szenario für die Angabe eines expliziten Endpunkts haben Sie den Endpunkt Ihres Blob Storage einer benutzerdefinierten Domäne zugeordnet. In diesem Fall können Sie Ihren benutzerdefinierten Endpunkt für Blob Storage in der Verbindungszeichenfolge angeben. Optional können Sie die Standardendpunkte für die anderen Dienste angeben, wenn Ihre Anwendung sie verwendet.
Es folgt ein Beispiel einer Verbindungszeichenfolge, die einen expliziten Endpunkt für den Blob-Dienst angibt:
# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>
In diesem Beispiel werden explizite Endpunkte für alle Dienste angegeben, einschließlich einer benutzerdefinierten Domäne für den Blob-Dienst:
# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>
Die Endpunktwerte in einer Verbindungszeichenfolge werden verwendet, um die Anforderungs-URIs für die Speicherdienste zu erstellen. Ferner geben sie die Form aller URIs vor, die dem Code zurückgegeben werden.
Wenn Sie einen Speicherendpunkt einer benutzerdefinierten Domäne zugeordnet haben, und diesen Endpunkt in einer Verbindungszeichenfolge auslassen, können Sie nicht anhand dieser Verbindungszeichenfolge von Ihrem Code aus auf die Daten in diesem Dienst zugreifen.
Weitere Informationen zum Konfigurieren einer benutzerdefinierten Domäne für Azure Storage finden Sie unter Zuordnen einer benutzerdefinierten Domäne zu einem Azure Blob Storage-Endpunkt.
Wichtig
Dienstendpunktwerte in den Verbindungszeichenfolgen müssen wohlgeformte URIs einschließlich https://
(empfohlen) oder http://
sein.
Erstellen einer Verbindungszeichenfolge mit einem Endpunktsuffix
Um eine Verbindungszeichenfolge für einen Speicherdienst in Regionen oder Instanzen mit unterschiedlichen Endpunktsuffixen zu erstellen, wie z. B. für Microsoft Azure operated by 21Vianet oder Azure Government, verwenden Sie das folgende Format der Verbindungszeichenfolge. Geben Sie an, ob Sie über HTTPS (empfohlen) oder HTTP eine Verbindung mit dem Speicherkonto herstellen möchten, ersetzen Sie myAccountName
durch den Namen Ihres Speicherkontos, myAccountKey
durch Ihren Kontozugriffsschlüssel und mySuffix
durch das URI-Suffix:
DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;
Hier finden Sie ein Beispiel für eine Verbindungszeichenfolge für Speicherdienste in Azure operated by 21Vianet:
DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;
Autorisieren des Zugriffs mit gemeinsam genutztem Schlüssel
Informationen zum Autorisieren des Zugriffs auf Azure Storage mit dem Kontoschlüssel oder einer Verbindungszeichenfolge finden Sie in den folgenden Artikeln:
- Autorisieren des Zugriffs und Herstellen einer Verbindung mit Blob Storage – .NET
- Autorisieren des Zugriffs und Herstellen einer Verbindung mit Blob Storage – Java
- Autorisieren des Zugriffs und Herstellen einer Verbindung mit Blob Storage – JavaScript
- Autorisieren des Zugriffs und Herstellen einer Verbindung mit Blob Storage – Python