Use a identidade gerenciada para autenticar seu trabalho de Azure Stream Analytics para Armazenamento de Blobs do Azure

Quando você usa autenticação de identidade gerenciada para saída para o Armazenamento de Blobs do Azure, os trabalhos do Stream Analytics obtêm acesso direto a uma conta de armazenamento sem usar uma cadeia de conexão. Esse recurso melhora a segurança e permite que você escreva dados em uma conta de armazenamento em uma VNET (rede virtual) em Azure.

Este artigo mostra como habilitar a identidade gerenciada para as saídas de Blob de um trabalho do Stream Analytics através do portal do Azure e de uma implantação do Azure Resource Manager.

Criar o trabalho do Stream Analytics usando o portal do Azure

Primeiro, crie uma identidade gerenciada para seu trabalho de Azure Stream Analytics. 

  1. No portal do Azure, abra seu trabalho do Azure Stream Analytics. 

  2. No menu de navegação à esquerda, selecione Identidade Gerenciada localizada em Configurar. Em seguida, marque a caixa ao lado de Usar a Identidade Gerenciada atribuída ao sistema e selecione Salvar.

    Identidade gerenciada atribuída pelo sistema

  3. Azure cria um 'principal de serviço' para a identidade do trabalho do Stream Analytics no Microsoft Entra ID. Azure gerencia o ciclo de vida da identidade recém-criada. Quando você exclui o trabalho do Stream Analytics, o Azure exclui automaticamente a identidade associada, ou seja, a entidade de serviço. 

    Quando você salva a configuração, a ID do Objeto (OID) da entidade de serviço aparece como a ID Principal, conforme mostrado na seção a seguir.

    ID do principal

    O principal de serviço tem o mesmo nome que o trabalho do Stream Analytics. Por exemplo, se o nome do trabalho for MyASAJob, o nome da entidade de serviço também será MyASAJob. 

Implantação do Azure Resource Manager

Usando Azure Resource Manager, você pode automatizar totalmente a implantação do trabalho do Stream Analytics. Você pode implantar modelos de Resource Manager usando Azure PowerShell ou o CLI do Azure. Os exemplos a seguir usam o CLI do Azure.

  1. Crie um Microsoft. StreamAnalytics/streamingjobs recurso com uma Identidade Gerenciada, incluindo a seguinte propriedade na seção de recursos de seu modelo de Resource Manager:

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

    Essa propriedade instrui o Azure Resource Manager a criar e gerenciar a identidade para seu trabalho do Azure Stream Analytics. O seguinte modelo do Gerenciador de Recursos implanta um trabalho do Stream Analytics com Identidade Gerenciada habilitada e um destino de saída de Blob que usa Identidade Gerenciada.

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

    Você pode implantar o trabalho anterior no grupo de recursos ExampleGroup usando o seguinte comando CLI do Azure:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Depois de criar o trabalho, use Azure Resource Manager para recuperar a definição completa do trabalho.

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

    O comando anterior retorna uma resposta como o seguinte exemplo:

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

    Anote o principalId da definição do seu trabalho, que identifica a Identidade Gerenciada do seu trabalho no Microsoft Entra ID e este será usado na próxima etapa para conceder ao trabalho do Stream Analytics acesso à conta de armazenamento.

  3. Agora que você criou o trabalho, consulte a seção Conceder acesso do trabalho de Stream Analytics à sua conta de armazenamento deste artigo.

Dê ao Stream Analytics acesso de trabalho à sua conta de armazenamento

Você pode fornecer ao seu trabalho do Stream Analytics dois níveis de acesso:

  1. Acesso no nível do contêiner: Esse nível de acesso concede ao trabalho acesso a um contêiner existente específico.
  2. Acesso ao nível da conta: Esse nível de acesso concede ao trabalho acesso geral à conta de armazenamento, incluindo a capacidade de criar novos contêineres.

A menos que você precise do trabalho para criar contêineres, escolha acesso no nível de contêiner para conceder ao trabalho o nível mínimo de acesso necessário. As seções a seguir explicam as duas opções para o portal do Azure e a linha de comando.

Observação

Devido à latência global de replicação ou cache, revogar ou conceder permissões pode levar algum tempo. As alterações devem aparecer dentro de oito minutos.

Conceder acesso por meio do portal Azure

Acesso no nível do contêiner

  1. Vá para o painel de configuração do contêiner em sua conta de armazenamento.

  2. Selecione IAM (Controle de acesso) .

  3. Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.

  4. Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Colaborador de dados de blob de armazenamento
    Atribuir acesso a Usuário, grupo ou entidade de serviço
    Membros <Nome do trabalho do Stream Analytics>

    Captura de tela que mostra a página Adicionar atribuição de função no portal do Azure.

Acesso no nível da conta

  1. Vá até sua conta de armazenamento.

  2. Selecione IAM (Controle de acesso) .

  3. Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.

  4. Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Colaborador de Dados de Armazenamento Blob
    Atribuir acesso a Usuário, grupo ou entidade de serviço
    Membros <Nome do trabalho do Stream Analytics>

    Captura de tela que mostra a página Adicionar atribuição de função no portal do Azure.

Conceder acesso por meio da linha de comando

Acesso no nível do contêiner

Para conceder acesso a um contêiner específico, execute o seguinte comando usando o CLI do 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>

Acesso no nível da conta

Para conceder acesso à conta inteira, execute o seguinte comando usando o CLI do 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>

Criar uma entrada ou saída de blob

Agora que sua identidade gerenciada está configurada, você pode adicionar o recurso de blob como entrada ou saída para o trabalho do Stream Analytics.

  1. Na janela Propriedades de saída do coletor do Azure Blob, clique na lista suspensa do modo Autenticação e selecione Identidade gerenciada. Para obter informações sobre outras propriedades de saída, consulteentender as saídas de Azure Stream Analytics. Quando terminar, selecione Salvar.

    Configurar saída do armazenamento de blobs do Azure

Habilitar o acesso à rede virtual

Ao configurar os Firewalls e redes virtuais da conta de armazenamento, você pode, opcionalmente, permitir o tráfego de rede de outros serviços Microsoft confiáveis. Quando o Stream Analytics é autenticado usando a Identidade Gerenciada, ele fornece uma prova de que a solicitação é originária de um serviço confiável. As instruções a seguir explicam como habilitar essa exceção de acesso à rede virtual.

  1. Vá para o painel Firewalls e redes virtuais no painel de configuração da conta de armazenamento.
  2. Certifique-se de que a opção Permitir que serviços confiáveis da Microsoft acessem esta conta de armazenamento está habilitada.
  3. Se você habilitá-lo, selecione Salvar.

Habilitar acesso à VNET

Remover a identidade gerenciada

A Identidade Gerenciada criada para um trabalho do Stream Analytics é excluída somente quando você exclui o trabalho. Não é possível excluir a Identidade Gerenciada sem excluir o trabalho. Se você não quiser mais usar a Identidade gerenciada, poderá alterar o método de autenticação para a saída. A Identidade Gerenciada continuará existindo até que você exclua o trabalho e ele será usado se você decidir usar a autenticação de Identidade Gerenciada novamente.

Limitações

As limitações atuais desse recurso incluem:

  1. Contas clássicas de armazenamento do Azure.

  2. Contas do Azure sem o Microsoft Entra ID.

  3. Não há suporte para acesso multilocatário. O principal de serviço criado para um determinado trabalho do Stream Analytics deve residir no mesmo tenant (locatário) Microsoft Entra em que você criou o trabalho, e não é possível utilizá-lo com um recurso que reside em um tenant (locatário) Microsoft Entra diferente.

Próximas etapas