Beheerde identiteit gebruiken om uw Azure Stream Analytics-taak te verifiëren om 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 connection string te gebruiken. Naast verbeterde beveiliging kunt u met deze functie ook gegevens schrijven naar een opslagaccount in een Virtual Network (VNET) in Azure.

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

De Stream Analytics-taak maken met behulp van de Azure Portal

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

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

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

    System assigned managed identity

  3. Er wordt een service-principal voor de identiteit van de Stream Analytics-taak gemaakt in Azure Active Directory. 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 MyASAJob, is de naam van de service-principal ook MyASAJob. 

Implementatie van Azure Resource Manager

Met Behulp van 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 Microsoft.StreamAnalytics/streamingjobs-resource 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 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}
    

    De bovenstaande opdracht retourneert een antwoord 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, die de beheerde identiteit van uw taak identificeert binnen Azure Active Directory en 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 u 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 de 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 de Azure Portal

Toegang op containerniveau

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

  2. Klik op Toegangsbeheer (IAM) .

  3. Selecteer AddAdd-roltoewijzing> om de pagina Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Zie Azure-rollen toewijzen met behulp van de Azure Portal voor gedetailleerde stappen.

    Instelling Waarde
    Rol Inzender voor Storage Blob-gegevens
    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. Ga naar uw opslagaccount.

  2. Klik op Toegangsbeheer (IAM) .

  3. Selecteer AddAdd-roltoewijzing> om de pagina Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Zie Azure-rollen toewijzen met behulp van de Azure Portal voor gedetailleerde stappen.

    Instelling Waarde
    Rol Inzender voor Storage Blob-gegevens
    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

Voer de volgende opdracht uit met behulp van de Azure CLI om toegang te verlenen tot een specifieke container:

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 blobinvoer 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. Klik op Opslaanals u klaar bent.

    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 wordt geverifieerd met behulp van beheerde identiteit, geeft dit bewijs dat de aanvraag afkomstig is van een vertrouwde service. Hieronder ziet u instructies voor het inschakelen van deze VNET-toegangs uitzondering.

  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 het 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 beheerde identiteitverificatie opnieuw te gebruiken.

Beperkingen

Hieronder ziet u de huidige beperkingen van deze functie:

  1. Klassieke Azure Storage accounts.

  2. Azure-accounts zonder Azure Active Directory.

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

  4. Door de gebruiker toegewezen identiteit wordt niet ondersteund. Dit betekent dat de gebruiker geen eigen service-principal kan invoeren om te worden gebruikt door hun Stream Analytics-taak. De service-principal moet worden gegenereerd door Azure Stream Analytics.

Volgende stappen