Verwenden von verwalteten Identitäten zum Authentifizieren von Azure Stream Analytics-Aufträgen für Azure Blob Storage
Durch die Authentifizierung der verwalteten Identität für die Ausgabe an Azure Blob Storage erhalten Stream Analytics-Aufträge direkten Zugriff auf ein Speicherkonto, anstatt eine Verbindungszeichenfolge zu verwenden. Neben der verbesserten Sicherheit ermöglicht Ihnen diese Funktion auch das Schreiben von Daten auf ein Speicherkonto in einem virtuellen Netzwerk (VNET) in Azure.
Dieser Artikel zeigt Ihnen, wie Sie verwaltete Identitäten für die Blobausgabe(n) eines Stream Analytics-Auftrags über das Azure-Portal und mit einer Azure Resource Manager-Bereitstellung aktivieren.
Erstellen eines Stream Analytics-Auftrags mithilfe des Azure-Portals
Erstellen Sie zuerst eine verwaltete Identität für den Azure Stream Analytics-Auftrag.
Öffnen Sie im Azure-Portal den Azure Stream Analytics-Auftrag.
Wählen Sie im linken Navigationsmenü unter Konfigurieren die Option Verwaltete Identität aus. Aktivieren Sie dann das Kontrollkästchen neben Systemseitig zugewiesene verwaltete Identität verwenden, und wählen Sie Speichern aus.
Ein Dienstprinzipal für die Identität des Stream Analytics-Auftrags wird in Microsoft Entra ID erstellt. Der Lebenszyklus der neu erstellten Identität wird von Azure verwaltet. Wenn der Stream Analytics-Auftrag gelöscht wird, wird die zugeordnete Identität (also der Dienstprinzipal) von Azure automatisch ebenfalls gelöscht.
Wenn Sie die Konfiguration speichern, wird die Objekt-ID (OID) des Dienstprinzipals als Prinzipal-ID aufgeführt, wie hier gezeigt:
Der Dienstprinzipal weist den gleichen Namen auf wie der Stream Analytics-Auftrag. Wenn der Name des Auftrags z. B.
MyASAJob
lautet, erhält auch der Dienstprinzipal den NamenMyASAJob
.
Azure Resource Manager-Bereitstellung
Mit dem Azure Resource Manager können Sie die Bereitstellung Ihres Stream Analytics-Auftrags vollständig automatisieren. Sie können Resource Manager-Vorlagen entweder mit Azure PowerShell oder der Azure-Befehlszeilenschnittstelle bereitstellen. In den folgenden Beispielen wird die Azure-Befehlszeilenschnittstelle verwendet.
Sie können eine Microsoft.StreamAnalytics/streamingjobs-Ressource mit einer verwalteten Identität erstellen, indem Sie die folgende Eigenschaft in den Ressourcenabschnitt Ihrer Resource Manager-Vorlage einfügen:
"Identity": { "Type": "SystemAssigned", },
Diese Eigenschaft weist Azure Resource Manager an, die Identität für Ihren Stream Analytics-Auftrag zu erstellen und zu verwalten. Nachfolgend finden Sie eine exemplarische Resource Manager-Vorlage, die einen Stream Analytics-Auftrag mit aktivierter, verwalteter Identität und eine Blob-Ausgabesenke mit verwalteter Identität bereitstellt:
{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ { "apiVersion": "2017-04-01-preview", "name": "MyStreamingJob", "location": "[resourceGroup().location]", "type": "Microsoft.StreamAnalytics/StreamingJobs", "identity": { "type": "systemAssigned" }, "properties": { "sku": { "name": "standard" }, "outputs":[ { "name":"output", "properties":{ "serialization": { "type": "JSON", "properties": { "encoding": "UTF8" } }, "datasource":{ "type":"Microsoft.Storage/Blob", "properties":{ "storageAccounts": [ { "accountName": "MyStorageAccount" } ], "container": "test", "pathPattern": "segment1/{date}/segment2/{time}", "dateFormat": "yyyy/MM/dd", "timeFormat": "HH", "authenticationMode": "Msi" } } } } ] } } ] }
Der oben genannte Auftrag kann mit dem folgenden Azure CLI-Befehl in der Ressourcengruppe ExampleGroup bereitgestellt werden:
az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
Nachdem der Auftrag erstellt wurde, können Sie mit dem Azure Resource Manager die vollständige Definition des Auftrags abrufen.
az resource show --ids /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/StreamingJobs/{RESOURCE_NAME}
Der obige Befehl gibt eine Antwort wie die folgende zurück:
{ "id": "/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/streamingjobs/{RESOURCE_NAME}", "identity": { "principalId": "{PRINCIPAL_ID}", "tenantId": "{TENANT_ID}", "type": "SystemAssigned", "userAssignedIdentities": null }, "kind": null, "location": "West US", "managedBy": null, "name": "{RESOURCE_NAME}", "plan": null, "properties": { "compatibilityLevel": "1.0", "createdDate": "2019-07-12T03:11:30.39Z", "dataLocale": "en-US", "eventsLateArrivalMaxDelayInSeconds": 5, "jobId": "{JOB_ID}", "jobState": "Created", "jobStorageAccount": null, "jobType": "Cloud", "outputErrorPolicy": "Stop", "package": null, "provisioningState": "Succeeded", "sku": { "name": "Standard" } }, "resourceGroup": "{RESOURCE_GROUP}", "sku": null, "tags": null, "type": "Microsoft.StreamAnalytics/streamingjobs" }
Beachten Sie die principalId aus der Auftragsdefinition, die die verwaltete Identität Ihres Auftrags innerhalb von Microsoft Entra ID identifiziert und im nächsten Schritt verwendet wird, um dem Stream Analytics-Auftrag Zugriff auf das Speicherkonto zu gewähren.
Nachdem der Auftrag nun erstellt wurde, finden Sie weitere Informationen im Abschnitt Stream Analytics-Auftrag Zugriff auf Ihr Speicherkonto geben in diesem Artikel.
Geben Sie dem Stream Analytics-Auftrag Zugriff auf Ihr Speicherkonto
Es gibt zwei Zugriffsebenen, die Sie wählen können, um Ihren Stream Analytics-Auftrag Folgendes zuzuweisen:
- Zugriff auf Containerebene: Diese Option ermöglicht dem Auftrag den Zugriff auf einen bestimmten vorhandenen Container.
- Zugriff auf Kontoebene: Diese Option gewährt dem Auftrag allgemeinen Zugriff auf das Speicherkonto, einschließlich der Möglichkeit, neue Container zu erstellen.
Wenn Sie den Auftrag nicht benötigen, um Container für Sie zu erstellen, sollten Sie den Zugriff auf Containerebene wählen, da diese Option dem Auftrag den erforderlichen Mindestzugang gewährt. Beide Optionen werden im Folgenden für das Azure-Portal und die Befehlszeile erläutert.
Hinweis
Aufgrund der globalen Replikations- oder Cachinglatenz kann es zu einer Verzögerung kommen, wenn Berechtigungen widerrufen oder erteilt werden. Änderungen sollten innerhalb von 8 Minuten widergespiegelt werden.
Zugriff über das Azure-Portal gewähren
Zugriff auf Containerebene
Navigieren Sie in Ihrem Speicherkonto zum Konfigurationsbereich des Containers.
Wählen Sie Zugriffssteuerung (IAM) aus.
Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.
Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Einstellung Wert Role Mitwirkender an Storage-Blobdaten Zugriff zuweisen zu Benutzer, Gruppe oder Dienstprinzipal Member <Name Ihres Stream Analytics-Auftrags>
Zugriff auf Kontoebene
Navigieren Sie zum Speicherkonto.
Wählen Sie Zugriffssteuerung (IAM) aus.
Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.
Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Einstellung Wert Role Mitwirkender an Storage-Blobdaten Zugriff zuweisen zu Benutzer, Gruppe oder Dienstprinzipal Member <Name Ihres Stream Analytics-Auftrags>
Zugriff über das Befehlszeile gewähren
Zugriff auf Containerebene
Um Zugriff auf einen bestimmten Container zu erhalten, führen Sie den folgenden Befehl mit der Azure CLI aus:
az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container-name>
Zugriff auf Kontoebene
Um Zugriff auf das gesamte Konto zu erhalten, führen Sie den folgenden Befehl mit der Azure CLI aus:
az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
Erstellen einer Blobeingabe oder -ausgabe
Nachdem die verwaltete Identität konfiguriert wurde, können Sie dem Stream Analytics-Auftrag die Blobressource als Eingabe oder Ausgabe hinzufügen.
Wählen Sie im Fenster mit den Ausgabeeigenschaften der Azure Blob Storage-Ausgabesenke die Dropdownliste der Authentifizierungsmodi, und wählen Sie Verwaltete Identität aus. Informationen zu den anderen Ausgabeeigenschaften finden Sie unter Grundlegendes zu den Ausgaben von Azure Stream Analytics. Wenn Sie fertig sind, klicken Sie auf Speichern.
Aktivieren des VNET-Zugriffs
Bei der Konfiguration der Firewalls und virtuellen Netzwerke Ihres Speicherkonto können Sie optional den Netzwerkdatenverkehr von anderen vertrauenswürdigen Microsoft-Diensten zulassen. Wenn Stream Analytics mit einer verwalteten Identität authentifiziert wird, ist der Nachweis erbracht, dass die Anforderung von einem vertrauenswürdigen Dienst stammt. Nachfolgend finden Sie Anweisungen, um diese VNET-Zugriffsausnahme zu aktivieren.
- Navigieren Sie im Konfigurationsbereich des Speicherkontos zum Bereich „Firewalls und virtuelle Netzwerke“.
- Stellen Sie sicher, dass die Option „Vertrauenswürdigen Microsoft-Diensten den Zugriff auf dieses Speicherkonto erlauben“ aktiviert ist.
- Wenn Sie sie aktiviert haben, klicken Sie auf Speichern.
Entfernen der verwalteten Identität
Die für einen Stream Analytics-Auftrag erstellte verwaltete Identität wird nur gelöscht, wenn der Auftrag gelöscht wird. Es gibt keine Möglichkeit, die verwaltete Identität zu löschen, ohne den Auftrag zu löschen. Wenn Sie die verwaltete Identität nicht mehr verwenden möchten, können Sie die Authentifizierungsmethode für die Ausgabe ändern. Die verwaltete Identität bleibt weiterhin bestehen, bis der Auftrag gelöscht wird, und wird verwendet, wenn Sie sich noch einmal mithilfe einer verwalteten Identität authentifizieren.
Einschränkungen
Nachfolgend finden Sie die aktuellen Einschränkungen dieses Features:
Klassische Azure Storage-Konten.
Azure-Konten ohne Microsoft Entra ID.
Mehrinstanzenfähiger Zugriff wird nicht unterstützt. Der für einen bestimmten Stream Analytics-Auftrag erstellte Dienstprinzipal muss in dem Microsoft Entra-Mandanten ausgeführt werden, in dem der Auftrag erstellt wurde, und kann nicht für eine Ressource in einem anderen Microsoft Entra-Mandanten verwendet werden.