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. 

  1. Öffnen Sie im Azure-Portal den Azure Stream Analytics-Auftrag. 

  2. 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.

    System assigned managed identity

  3. 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:

    Principal ID

    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 Namen MyASAJob. 

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.

  1. 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
    
  2. 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.

  3. 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:

  1. Zugriff auf Containerebene: Diese Option ermöglicht dem Auftrag den Zugriff auf einen bestimmten vorhandenen Container.
  2. 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

  1. Navigieren Sie in Ihrem Speicherkonto zum Konfigurationsbereich des Containers.

  2. Wählen Sie Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.

  4. 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>

    Screenshot that shows Add role assignment page in Azure portal.

Zugriff auf Kontoebene

  1. Navigieren Sie zum Speicherkonto.

  2. Wählen Sie Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.

  4. 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>

    Screenshot that shows Add role assignment page in Azure portal.

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.

  1. 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.

    Configure Azure Blob storage output

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.

  1. Navigieren Sie im Konfigurationsbereich des Speicherkontos zum Bereich „Firewalls und virtuelle Netzwerke“.
  2. Stellen Sie sicher, dass die Option „Vertrauenswürdigen Microsoft-Diensten den Zugriff auf dieses Speicherkonto erlauben“ aktiviert ist.
  3. Wenn Sie sie aktiviert haben, klicken Sie auf Speichern.

Enable VNET access

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:

  1. Klassische Azure Storage-Konten.

  2. Azure-Konten ohne Microsoft Entra ID.

  3. 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.

Nächste Schritte