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

L'autenticazione dell'identità gestita per l'output nell'archiviazione BLOB di Azure consente ai processi di Analisi di flusso di accedere direttamente a un account di archiviazione anziché usare un stringa di connessione. Oltre a migliorare la sicurezza, questa funzionalità consente anche di scrivere dati in un account di archiviazione in un 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 di Azure Resource Manager.

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

Per prima cosa, si crea un'identità gestita per il processo 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.

    System assigned managed identity

  3. Viene creata un'entità servizio per l'identità del processo di Analisi di flusso in Microsoft Entra ID. Il ciclo di vita dell'identità creata viene gestito da Azure. Quando si elimina il processo di Analisi di flusso, l'identità associata (ovvero, l'entità servizio) viene eliminata automaticamente da Azure. 

    Quando si salva la configurazione, l'ID oggetto (OID) dell'entità servizio viene elencato come ID entità, come illustrato di seguito:

    Principal ID

    L'entità servizio ha lo stesso nome del processo di Analisi di flusso. Ad esempio, se il nome del processo è MyASAJob, anche il nome dell'entità servizio è MyASAJob. 

Distribuzione Azure Resource Manager

L'uso di Azure Resource Manager consente di automatizzare completamente la distribuzione del processo di Analisi di flusso. È possibile distribuire modelli di Resource Manager usando Azure PowerShell o l'interfaccia della riga di comando di Azure. Gli esempi seguenti usano l'interfaccia della riga di comando di Azure.

  1. È possibile creare una risorsa Microsoft.StreamAnalytics/streamingjobs con un'identità gestita includendo la proprietà seguente nella sezione della risorsa del modello di Resource Manager:

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

    Questa proprietà indica ad Azure Resource Manager di creare e gestire l'identità per il processo di Analisi di flusso. Di seguito è riportato un modello di Resource Manager di esempio che distribuisce un processo di Analisi di flusso 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"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    Il processo precedente può essere distribuito nel gruppo di risorse ExampleGroup usando il comando seguente dell'interfaccia della riga di comando di Azure:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Dopo aver creato il processo, è possibile 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 restituirà una risposta simile alla 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 dell'ID Microsoft Entra e verrà usato nel passaggio successivo per concedere al processo di Analisi di flusso 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 all'account di archiviazione

È possibile scegliere due livelli di accesso per assegnare il processo di Analisi di flusso:

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

A meno che non sia necessario il processo per creare contenitori per conto dell'utente, è consigliabile scegliere Accesso a livello di contenitore perché questa opzione consentirà al processo di concedere il livello minimo di accesso necessario. Entrambe le opzioni sono illustrate di seguito per la portale di Azure e la riga di comando.

Nota

A causa della replica globale o della latenza di memorizzazione nella cache, potrebbe verificarsi un ritardo quando le autorizzazioni vengono revocate o concesse. Le modifiche devono essere riflesse entro 8 minuti.

Concedere l'accesso tramite il portale di Azure

Accesso a livello di contenitore

  1. Passare al riquadro di configurazione del contenitore all'interno dell'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 ai dati del BLOB di archiviazione
    Assegna accesso a Utente, gruppo o entità servizio
    Membri <Nome del processo di Analisi di flusso>

    Screenshot that shows Add role assignment page in Azure portal.

Accesso a livello di account

  1. Passa all'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 ai dati del BLOB di archiviazione
    Assegna accesso a Utente, gruppo o entità servizio
    Membri <Nome del processo di Analisi di flusso>

    Screenshot that shows Add role assignment page in Azure portal.

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 o un output BLOB

Ora che l'identità gestita è configurata, è possibile aggiungere la risorsa BLOB come input o output al processo di Analisi di flusso.

  1. Nella finestra delle proprietà di output del sink di output dell'archiviazione BLOB di Azure selezionare l'elenco a discesa Modalità di autenticazione e scegliere Identità gestita. Per informazioni sulle altre proprietà di output, vedere Informazioni sugli output di Analisi di flusso di Azure. Al termine, fare clic su Salva.

    Configure Azure Blob storage output

Abilitare l'accesso alla rete virtuale

Quando si configurano i firewall 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 con l'identità gestita, fornisce la prova che la richiesta proviene da un servizio attendibile. Di seguito sono riportate le istruzioni per abilitare questa eccezione di accesso alla rete virtuale.

  1. Passare al riquadro "Firewall e reti virtuali" nel riquadro di configurazione dell'account di archiviazione.
  2. Verificare che l'opzione "Consenti all'servizi Microsoft attendibile di accedere a questo account di archiviazione" sia abilitata.
  3. Se è stata abilitata, fare clic su Salva.

Enable VNET access

Rimuovere l'identità gestita

L'identità gestita creata per un processo di Analisi di flusso viene eliminata solo quando il processo viene eliminato. Non è possibile eliminare l'identità gestita senza eliminare il processo. Se non si vuole più usare l'identità gestita, è possibile modificare il metodo di autenticazione per l'output. L'identità gestita continuerà a esistere fino all'eliminazione del processo e verrà usata se si decide di usare nuovamente l'autenticazione dell'identità gestita.

Limiti

Di seguito sono riportate le limitazioni correnti di questa funzionalità:

  1. Account 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 risiedere nello stesso tenant di Microsoft Entra in cui è stato creato il processo e non può essere usato con una risorsa che risiede in un tenant Microsoft Entra diverso.

Passaggi successivi