Beheerde identiteit gebruiken om uw Azure Stream Analytics-taak te verifiëren bij Azure Blob Storage

Verificatie van beheerde identiteit voor uitvoer naar Azure Blob Storage biedt Stream Analytics-taken directe toegang tot een opslagaccount in plaats van een verbindingsreeks te gebruiken. Naast verbeterde beveiliging kunt u met deze functie ook gegevens schrijven naar een opslagaccount in een VNET (Virtual Network) in Azure.

In dit artikel leest u hoe u beheerde identiteit inschakelt voor de blobuitvoer(en) van een Stream Analytics-taak via Azure Portal en via een Azure Resource Manager-implementatie.

De Stream Analytics-taak maken met behulp van Azure Portal

Eerst maakt u een beheerde identiteit voor uw Azure Stream Analytics-taak. 

  1. Open uw Azure Stream Analytics-taak in Azure Portal. 

  2. Selecteer in het linkernavigatiemenu beheerde identiteit onder Configureren. Schakel vervolgens het selectievakje in naast Door het systeem toegewezen beheerde identiteit gebruiken en selecteer Opslaan.

    System assigned managed identity

  3. Er wordt een service-principal voor de identiteit van de Stream Analytics-taak gemaakt in Microsoft Entra-id. De levenscyclus van de zojuist gemaakte identiteit wordt beheerd door Azure. Wanneer de Stream Analytics-taak wordt verwijderd, wordt de bijbehorende identiteit (dat wil gezegd de service-principal) automatisch verwijderd door Azure. 

    Wanneer u de configuratie opslaat, wordt de object-id (OID) van de service-principal vermeld als de principal-id, zoals hieronder wordt weergegeven:

    Principal ID

    De service-principal heeft dezelfde naam als de Stream Analytics-taak. Als de naam van uw taak bijvoorbeeld is, is MyASAJobde naam van de service-principal ook MyASAJob. 

Implementatie van Azure Resource Manager

Met Azure Resource Manager kunt u de implementatie van uw Stream Analytics-taak volledig automatiseren. U kunt Resource Manager-sjablonen implementeren met behulp van Azure PowerShell of de Azure CLI. In de onderstaande voorbeelden wordt de Azure CLI gebruikt.

  1. U kunt een Resource microsoft.StreamAnalytics/streamingjobs maken met een beheerde identiteit door de volgende eigenschap op te slaan in de resourcesectie van uw Resource Manager-sjabloon:

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

    Deze eigenschap vertelt Azure Resource Manager om de identiteit voor uw Stream Analytics-taak te maken en te beheren. Hieronder ziet u een voorbeeld van een Resource Manager-sjabloon waarmee een Stream Analytics-taak wordt geïmplementeerd waarvoor Beheerde identiteit is ingeschakeld en een blob-uitvoersink die gebruikmaakt van beheerde identiteit:

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

    De bovenstaande taak kan worden geïmplementeerd in de Resourcegroep ExampleGroup met behulp van de onderstaande Azure CLI-opdracht:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Nadat de taak is gemaakt, kunt u Azure Resource Manager gebruiken om de volledige definitie van de taak op te halen.

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

    Met de bovenstaande opdracht wordt een antwoord geretourneerd zoals hieronder:

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

    Noteer de principalId uit de definitie van de taak, waarmee de beheerde identiteit van uw taak in Microsoft Entra-id wordt geïdentificeerd. Deze wordt in de volgende stap gebruikt om de Stream Analytics-taak toegang te verlenen tot het opslagaccount.

  3. Nu de taak is gemaakt, raadpleegt u de sectie Stream Analytics-taak toegang geven tot uw opslagaccountsectie van dit artikel.

De Stream Analytics-taak toegang geven tot uw opslagaccount

Er zijn twee toegangsniveaus die u kunt kiezen om uw Stream Analytics-taak te geven:

  1. Toegang op containerniveau: met deze optie krijgt de taak toegang tot een specifieke bestaande container.
  2. Toegang op accountniveau: deze optie biedt de taak algemene toegang tot het opslagaccount, inclusief de mogelijkheid om nieuwe containers te maken.

Tenzij u de taak nodig hebt om namens u containers te maken, moet u toegang op containerniveau kiezen, omdat met deze optie de taak het minimale toegangsniveau wordt verleend dat vereist is. Beide opties worden hieronder uitgelegd voor Azure Portal en de opdrachtregel.

Notitie

Vanwege globale replicatie of cachinglatentie kan er een vertraging optreden wanneer machtigingen worden ingetrokken of verleend. Wijzigingen moeten binnen 8 minuten worden doorgevoerd.

Toegang verlenen via Azure Portal

Toegang op containerniveau

  1. Navigeer naar het configuratiedeelvenster van de container in uw opslagaccount.

  2. Klik op Toegangsbeheer (IAM) .

  3. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Waarde
    - Rol Inzender van opslag-blobgegevens
    Toegang toewijzen aan Gebruiker, groep of service-principal
    Leden <Naam van uw Stream Analytics-taak>

    Screenshot that shows Add role assignment page in Azure portal.

Toegang op accountniveau

  1. Navigeer naar uw opslagaccount.

  2. Klik op Toegangsbeheer (IAM) .

  3. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Waarde
    - Rol Inzender van opslag-blobgegevens
    Toegang toewijzen aan Gebruiker, groep of service-principal
    Leden <Naam van uw Stream Analytics-taak>

    Screenshot that shows Add role assignment page in Azure portal.

Toegang verlenen via de opdrachtregel

Toegang op containerniveau

Als u toegang wilt verlenen tot een specifieke container, voert u de volgende opdracht uit met behulp van de 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>

Toegang op accountniveau

Als u toegang wilt verlenen tot het hele account, voert u de volgende opdracht uit met behulp van de 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>

Een blob-invoer of -uitvoer maken

Nu uw beheerde identiteit is geconfigureerd, kunt u de blobresource toevoegen als invoer of uitvoer aan uw Stream Analytics-taak.

  1. Selecteer in het venster met uitvoereigenschappen van de uitvoersink voor Azure Blob Storage de vervolgkeuzelijst Verificatiemodus en kies Beheerde identiteit. Zie Uitvoer van Azure Stream Analytics begrijpen voor meer informatie over de andere uitvoereigenschappen. Wanneer u klaar bent, klikt u op Opslaan.

    Configure Azure Blob storage output

VNET-toegang inschakelen

Wanneer u firewalls en virtuele netwerken van uw opslagaccount configureert, kunt u eventueel netwerkverkeer van andere vertrouwde Microsoft-services toestaan. Wanneer Stream Analytics verifieert met beheerde identiteit, wordt er bewijs geleverd dat de aanvraag afkomstig is van een vertrouwde service. Hieronder ziet u instructies voor het inschakelen van deze VNET-toegangsondering.

  1. Navigeer naar het deelvenster Firewalls en virtuele netwerken in het configuratievenster van het opslagaccount.
  2. Zorg ervoor dat de optie Vertrouwde Microsoft-services toegang tot dit opslagaccount toestaan is ingeschakeld.
  3. Als u deze optie hebt ingeschakeld, klikt u op Opslaan.

Enable VNET access

Beheerde identiteit verwijderen

De beheerde identiteit die voor een Stream Analytics-taak is gemaakt, wordt alleen verwijderd wanneer de taak wordt verwijderd. U kunt de beheerde identiteit niet verwijderen zonder de taak te verwijderen. Als u de beheerde identiteit niet meer wilt gebruiken, kunt u de verificatiemethode voor de uitvoer wijzigen. De beheerde identiteit blijft bestaan totdat de taak wordt verwijderd en wordt gebruikt als u besluit om de verificatie van beheerde identiteit opnieuw te gebruiken.

Beperkingen

Hieronder ziet u de huidige beperkingen van deze functie:

  1. Klassieke Azure Storage-accounts.

  2. Azure-accounts zonder Microsoft Entra-id.

  3. Toegang met meerdere tenants wordt niet ondersteund. De service-principal die is gemaakt voor een bepaalde Stream Analytics-taak, moet zich in dezelfde Microsoft Entra-tenant bevinden waarin de taak is gemaakt en kan niet worden gebruikt met een resource die zich in een andere Microsoft Entra-tenant bevindt.

Volgende stappen