Usa l'identità gestita per autenticare il processo di Analisi di flusso di Azure su Archiviazione BLOB di Azure

Quando si usa l'autenticazione dell'identità gestita per l'archiviazione BLOB di Azure, i processi di Stream Analytics ottengono l'accesso diretto a un account di archiviazione senza usare una stringa di connessione. Questa funzionalità migliora la sicurezza e consente di scrivere dati in un account di archiviazione in una rete virtuale (VNET) all'interno di Azure.

Questo articolo illustra come abilitare l'identità gestita per gli output BLOB di un processo di Analisi di flusso tramite il portale di Azure e tramite una distribuzione Azure Resource Manager.

Creare il processo di Analisi di flusso usando il portale di Azure

Per prima cosa, creare un'identità gestita per il job di Analisi di flusso di Azure. 

  1. Nel portale di Azure aprire il processo di Analisi di flusso di Azure. 

  2. Nel menu di spostamento a sinistra selezionare Identità gestita in Configura. Selezionare quindi la casella accanto a Usa identità gestita assegnata dal sistema e selezionare Salva.

    Identità gestita assegnata dal sistema

  3. Azure crea un'entità servizio per l'identità del processo di Analisi di flusso in Microsoft Entra ID. Azure gestisce il ciclo di vita dell'identità appena creata. Quando si elimina il processo di Stream Analytics, Azure elimina automaticamente l'identità associata (ovvero il service principal). 

    Quando si salva la configurazione, l'ID oggetto (OID) del principale del servizio viene visualizzato come ID del principale, come mostrato nella sezione seguente.

    ID principale

    Il principale del servizio ha lo stesso nome del processo di Stream Analytics. Ad esempio, se il nome dell'attività è MyASAJob, anche il nome del principale del servizio è MyASAJob. 

Distribuzione di Azure Resource Manager

Usando Azure Resource Manager, è possibile automatizzare completamente la distribuzione del processo di Analisi di flusso. È possibile distribuire modelli di Resource Manager usando Azure PowerShell o interfaccia della riga di comando di Azure. Negli esempi seguenti viene usato il interfaccia della riga di comando di Azure.

  1. Creare una risorsa Microsoft.StreamAnalytics/streamingjobs con un'identità gestita includendo la seguente proprietà nella sezione della risorsa del modello di Gestore risorse.

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

    Questa proprietà indica ad Azure Resource Manager di creare e gestire l'identità per il tuo job di Stream Analytics. L'esempio seguente di modello di Resource Manager distribuisce un processo di Stream Analytics con Identità Gestita abilitata e un sink di output Blob che usa l'Identità Gestita.

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

    È possibile distribuire il processo precedente nel gruppo di risorse ExampleGroup usando il comando interfaccia della riga di comando di Azure seguente:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Dopo aver creato il processo, usare Azure Resource Manager per recuperare la definizione completa del processo.

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

    Il comando precedente restituisce una risposta simile all'esempio seguente:

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

    Prendere nota del principalId dalla definizione del processo, che identifica l'identità gestita del processo all'interno di Microsoft Entra ID e viene utilizzato nel passaggio successivo per concedere allo Stream Analytics job l'accesso all'account di archiviazione.

  3. Dopo aver creato il processo, vedere la sezione Concedere all'account di archiviazione l'accesso al processo di Analisi di flusso di questo articolo.

Concedere al processo di Analisi di flusso l'accesso al tuo account di storage

È possibile assegnare al processo di Analisi di flusso due livelli di accesso:

  1. Accesso a livello di contenitore: Questo livello di accesso concede al processo l'accesso a un contenitore esistente specifico.
  2. Accesso a livello di account: Questo livello di accesso concede al processo l'accesso generale all'account di archiviazione, inclusa la possibilità di creare nuovi contenitori.

A meno che il processo non sia necessario per creare contenitori, scegliere Accesso a livello di contenitore per concedere al processo il livello minimo di accesso necessario. Le sezioni seguenti illustrano entrambe le opzioni per il portale di Azure e la riga di comando.

Nota

A causa della replica globale o della latenza di memorizzazione nella cache, la revoca o la concessione delle autorizzazioni potrebbe richiedere del tempo. Le modifiche dovrebbero essere visualizzate entro otto minuti.

Concedere l'accesso tramite il portale di Azure

Accesso a livello di contenitore

  1. Passare al riquadro di configurazione del contenitore nell'account di archiviazione.

  2. Seleziona Controllo di accesso (IAM).

  3. Selezionare Aggiungi>Aggiungi assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.

  4. Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Contributore dati Blob di archiviazione
    Assegna accesso a Utente, gruppo o entità servizio
    Membri <Nome del tuo Stream Analytics job>

    Screenshot che mostra la pagina Aggiungi un'assegnazione di ruolo nel portale di Azure.

Accesso a livello di account

  1. Vai al tuo account di archiviazione.

  2. Seleziona Controllo di accesso (IAM).

  3. Selezionare Aggiungi>Aggiungi assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.

  4. Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Collaboratore dati BLOB di archiviazione
    Assegna accesso a Utente, gruppo o entità servizio
    Membri <Nome del processo di Analisi di flusso>

    Screenshot che mostra la pagina Aggiungi un'assegnazione di ruolo nel portale di Azure.

Concedere l'accesso tramite la riga di comando

Accesso a livello di contenitore

Per concedere l'accesso a un contenitore specifico, eseguire il comando seguente usando l'interfaccia della riga di comando di Azure:

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>

Accesso a livello di account

Per concedere l'accesso all'intero account, eseguire il comando seguente usando l'interfaccia della riga di comando di Azure:

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>

Creare un input BLOB o un output BLOB

Ora che l'identità gestita è configurata, si è pronti per aggiungere la risorsa blob come input o output per il job di Stream Analytics.

  1. Nella finestra delle proprietà di output dell'Archiviazione BLOB di Azure, utilizzare il menu a tendina per la Modalità di autenticazione e selezionare Identità gestita. Per informazioni sulle altre proprietà di output, vedere Informazioni sugli output di Analisi di flusso di Azure. Al termine, selezionare Salva.

    Configurare l'output dell'Archiviazione BLOB di Azure

Abilitare l'accesso alla rete virtuale

Quando si configura l'Firewalls e le reti virtuali dell'account di archiviazione, è possibile consentire facoltativamente il traffico di rete da altri servizi Microsoft attendibili. Quando Analisi di flusso esegue l'autenticazione usando l'identità gestita, fornisce la prova che la richiesta proviene da un servizio attendibile. Le istruzioni seguenti illustrano come abilitare questa eccezione di accesso alla rete virtuale.

  1. Passare al riquadro Firewall e reti virtuali all'interno del riquadro di configurazione dell'account di archiviazione.
  2. Verificare che l'opzione Consenti ai servizi Microsoft attendibili di accedere a questo account di archiviazione sia abilitata.
  3. Se è stata abilitata, selezionare Salva.

Abilitare l'accesso alla rete virtuale

Rimuovere l’identità gestita

L'identità gestita creata per un processo di Analisi di flusso viene eliminata solo quando si elimina il processo. È impossibile eliminare l'identità gestita senza eliminare il job. Se non si vuole più usare l'identità gestita, è possibile modificare il metodo di autenticazione per l'output. L'identità gestita continua a esistere fino a quando non si elimina il processo e viene usata se si decide di usare nuovamente l'autenticazione dell'identità gestita.

Limiti

Le limitazioni correnti di questa funzionalità includono:

  1. Account di archiviazione di Azure classici.

  2. Account Azure senza Microsoft Entra ID.

  3. L'accesso multi-tenant non è supportato. L'entità servizio creata per un determinato processo di Analisi di flusso deve trovarsi nello stesso tenant Microsoft Entra in cui è stato creato il processo e non è possibile usarla con una risorsa che si trova in un tenant Microsoft Entra diverso.

Passaggi successivi