Använda hanterad identitet för att autentisera ditt Azure Stream Analytics-jobb till Azure Blob Storage

Hanterad identitetsautentisering för utdata till Azure Blob Storage ger Stream Analytics-jobb direkt åtkomst till ett lagringskonto i stället för att använda en anslutningssträng. Förutom förbättrad säkerhet kan du med den här funktionen även skriva data till ett lagringskonto i ett virtuellt nätverk (VNET) i Azure.

Den här artikeln visar hur du aktiverar hanterad identitet för blobutdata för ett Stream Analytics-jobb via Azure-portalen och via en Azure Resource Manager-distribution.

Skapa Stream Analytics-jobbet med hjälp av Azure-portalen

Först skapar du en hanterad identitet för ditt Azure Stream Analytics-jobb. 

  1. Öppna ditt Azure Stream Analytics-jobb i Azure-portalen. 

  2. I den vänstra navigeringsmenyn väljer du Hanterad identitet under Konfigurera. Markera sedan kryssrutan bredvid Använd systemtilldelad hanterad identitet och välj Spara.

    System assigned managed identity

  3. Ett tjänsthuvudnamn för Stream Analytics-jobbets identitet skapas i Microsoft Entra-ID. Livscykeln för den nyligen skapade identiteten hanteras av Azure. När Stream Analytics-jobbet tas bort tas den associerade identiteten (dvs. tjänstens huvudnamn) bort automatiskt av Azure. 

    När du sparar konfigurationen visas objekt-ID (OID) för tjänstens huvudnamn som huvudnamns-ID enligt nedan:

    Principal ID

    Tjänstens huvudnamn har samma namn som Stream Analytics-jobbet. Om namnet på jobbet till exempel är MyASAJobär namnet på tjänstens huvudnamn också MyASAJob. 

Azure Resource Manager-distribution

Med Azure Resource Manager kan du automatisera distributionen av Stream Analytics-jobbet fullständigt. Du kan distribuera Resource Manager-mallar med antingen Azure PowerShell eller Azure CLI. I exemplen nedan används Azure CLI.

  1. Du kan skapa en Microsoft.StreamAnalytics/streamingjobs-resurs med en hanterad identitet genom att inkludera följande egenskap i resursavsnittet i Resource Manager-mallen:

    "Identity": {
      "Type": "SystemAssigned",
    },
    

    Den här egenskapen instruerar Azure Resource Manager att skapa och hantera identiteten för ditt Stream Analytics-jobb. Nedan visas ett exempel på en Resource Manager-mall som distribuerar ett Stream Analytics-jobb med hanterad identitet aktiverad och en blobutdatamottagare som använder hanterad identitet:

    {
        "$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"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    Ovanstående jobb kan distribueras till resursgruppen ExampleGroup med hjälp av azure CLI-kommandot nedan:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. När jobbet har skapats kan du använda Azure Resource Manager för att hämta jobbets fullständiga definition.

    az resource show --ids /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/StreamingJobs/{RESOURCE_NAME}
    

    Kommandot ovan returnerar ett svar som liknar nedanstående:

    {
        "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"
    }
    

    Anteckna principalId från jobbets definition, som identifierar jobbets hanterade identitet i Microsoft Entra-ID:t och kommer att användas i nästa steg för att ge Stream Analytics-jobbet åtkomst till lagringskontot.

  3. Nu när jobbet har skapats läser du avsnittet Ge Stream Analytics-jobbet åtkomst till ditt lagringskonto i den här artikeln.

Ge Stream Analytics-jobbet åtkomst till ditt lagringskonto

Det finns två åtkomstnivåer som du kan välja för att ge ditt Stream Analytics-jobb:

  1. Åtkomst på containernivå: Det här alternativet ger jobbet åtkomst till en specifik befintlig container.
  2. Åtkomst på kontonivå: Det här alternativet ger jobbet allmän åtkomst till lagringskontot, inklusive möjligheten att skapa nya containrar.

Om du inte behöver jobbet för att skapa containrar åt dig bör du välja Åtkomst på containernivå eftersom det här alternativet ger jobbet den lägsta åtkomstnivå som krävs. Båda alternativen beskrivs nedan för Azure-portalen och kommandoraden.

Kommentar

På grund av global replikering eller svarstid för cachelagring kan det uppstå en fördröjning när behörigheter återkallas eller beviljas. Ändringarna bör återspeglas inom 8 minuter.

Bevilja åtkomst via Azure-portalen

Åtkomst på containernivå

  1. Navigera till containerns konfigurationsfönster i ditt lagringskonto.

  2. Välj Åtkomstkontroll (IAM) .

  3. Välj Lägg till>rolltilldelning för att öppna sidan Lägg till rolltilldelning.

  4. Tilldela följande roll. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

    Inställning Värde
    Roll Storage Blob-datadeltagare
    Tilldela åtkomst till Användaren, gruppen eller tjänstens huvudnamn
    Members <Namnet på ditt Stream Analytics-jobb>

    Screenshot that shows Add role assignment page in Azure portal.

Åtkomst på kontonivå

  1. Navigera till ditt lagringskonto.

  2. Välj Åtkomstkontroll (IAM) .

  3. Välj Lägg till>rolltilldelning för att öppna sidan Lägg till rolltilldelning.

  4. Tilldela följande roll. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

    Inställning Värde
    Roll Storage Blob-datadeltagare
    Tilldela åtkomst till Användaren, gruppen eller tjänstens huvudnamn
    Members <Namnet på ditt Stream Analytics-jobb>

    Screenshot that shows Add role assignment page in Azure portal.

Bevilja åtkomst via kommandoraden

Åtkomst på containernivå

Om du vill ge åtkomst till en specifik container kör du följande kommando med hjälp av Azure CLI:

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>

Åtkomst på kontonivå

Om du vill ge åtkomst till hela kontot kör du följande kommando med hjälp av Azure CLI:

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>

Skapa en blobindata eller utdata

Nu när din hanterade identitet har konfigurerats är du redo att lägga till blobresursen som indata eller utdata till ditt Stream Analytics-jobb.

  1. I fönstret utdataegenskaper i Azure Blob Storage-utdatamottagaren väljer du listrutan Autentiseringsläge och väljer Hanterad identitet. Information om de andra utdataegenskaperna finns i Förstå utdata från Azure Stream Analytics. När du är klar klickar du på Spara.

    Configure Azure Blob storage output

Aktivera VNET-åtkomst

När du konfigurerar lagringskontots brandväggar och virtuella nätverk kan du också tillåta nätverkstrafik från andra betrodda Microsoft-tjänster. När Stream Analytics autentiserar med hjälp av hanterad identitet visas ett bevis på att begäran kommer från en betrodd tjänst. Nedan visas instruktioner för att aktivera det här VNET-åtkomstfelet.

  1. Gå till fönstret "Brandväggar och virtuella nätverk" i lagringskontots konfigurationsfönster.
  2. Se till att alternativet Tillåt betrodda Microsoft-tjänster att komma åt det här lagringskontot är aktiverat.
  3. Om du har aktiverat den klickar du på Spara.

Enable VNET access

Ta bort hanterad identitet

Den hanterade identitet som skapats för ett Stream Analytics-jobb tas bara bort när jobbet tas bort. Det går inte att ta bort den hanterade identiteten utan att ta bort jobbet. Om du inte längre vill använda den hanterade identiteten kan du ändra autentiseringsmetoden för utdata. Den hanterade identiteten fortsätter att finnas tills jobbet har tagits bort och används om du bestämmer dig för att använda hanterad identitetsautentisering igen.

Begränsningar

Nedan visas de aktuella begränsningarna för den här funktionen:

  1. Klassiska Azure Storage-konton.

  2. Azure-konton utan Microsoft Entra-ID.

  3. Åtkomst för flera klientorganisationer stöds inte. Tjänstens huvudnamn som skapats för ett visst Stream Analytics-jobb måste finnas i samma Microsoft Entra-klientorganisation där jobbet skapades och kan inte användas med en resurs som finns i en annan Microsoft Entra-klientorganisation.

Nästa steg