Usar a Identidade Gerenciada para autenticar seu trabalho do Azure Stream Analytics no Armazenamento de Blobs do Azure

A autenticação de Identidade Gerenciada para saída para o armazenamento de Blob do Azure dá aos trabalhos do Stream Analytics acesso direto a uma conta de armazenamento em vez de usar uma cadeia de conexão. Além da segurança aprimorada, esse recurso também permite que você grave dados em uma conta de armazenamento em uma Rede Virtual (VNET) no Azure.

Este artigo mostra como habilitar a Identidade Gerenciada para a(s) saída(s) de Blob de um trabalho do Stream Analytics por meio 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, você cria uma identidade gerenciada para seu trabalho do Azure Stream Analytics. 

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

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

    System assigned managed identity

  3. Uma entidade de serviço para a identidade do trabalho do Stream Analytics é criada no Microsoft Entra ID. O ciclo de vida da identidade recém-criada é gerenciado pelo Azure. Quando o trabalho do Stream Analytics é excluído, a identidade associada (ou seja, a entidade de serviço) é excluída automaticamente pelo Azure. 

    Quando você salva a configuração, a ID do objeto (OID) da entidade de serviço é listada como a ID da entidade principal, conforme mostrado abaixo:

    Principal ID

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

Implementação do Azure Resource Manager

Usar o Azure Resource Manager permite automatizar totalmente a implantação do seu trabalho do Stream Analytics. Você pode implantar modelos do Gerenciador de Recursos usando o Azure PowerShell ou a CLI do Azure. Os exemplos abaixo usam a CLI do Azure.

  1. Você pode criar um recurso Microsoft.StreamAnalytics/streamingjobs com uma Identidade Gerenciada incluindo a seguinte propriedade na seção de recursos do seu modelo do Gerenciador de Recursos:

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

    Esta propriedade informa ao Azure Resource Manager para criar e gerenciar a identidade para seu trabalho do Stream Analytics. Abaixo está um exemplo de modelo do Gerenciador de Recursos que implanta um trabalho do Stream Analytics com a Identidade Gerenciada habilitada e um coletor de saída de Blob que usa a 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"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    O trabalho acima pode ser implantado no grupo de recursos ExampleGroup usando o comando abaixo da CLI do Azure:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Depois que o trabalho for criado, você poderá usar o Gerenciador de Recursos do Azure 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 acima retornará uma resposta como a abaixo:

    {
        "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 trabalho, que identifica a Identidade Gerenciada do trabalho no ID do Microsoft Entra e será usado na próxima etapa para conceder ao trabalho do Stream Analytics acesso à conta de armazenamento.

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

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

Há dois níveis de acesso que você pode escolher para dar ao seu trabalho do Stream Analytics:

  1. Acesso em nível de contêiner: esta opção dá ao trabalho acesso a um contêiner existente específico.
  2. Acesso no nível da conta: esta opção dá 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 em seu nome, você deve escolher Acesso em nível de contêiner, pois essa opção concederá ao trabalho o nível mínimo de acesso necessário. Ambas as opções são explicadas abaixo para o portal do Azure e a linha de comando.

Nota

Devido à replicação global ou latência de cache, pode haver um atraso quando as permissões são revogadas ou concedidas. As alterações devem ser refletidas dentro de 8 minutos.

Conceder acesso através do portal do Azure

Acesso ao nível do contentor

  1. Navegue até o painel de configuração do contêiner em sua conta de armazenamento.

  2. Selecione Controlo de acesso (IAM) .

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

  4. Atribua a seguinte função. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.

    Definição Valor
    Função Contribuidor de Dados de Blobs de Armazenamento
    Atribuir acesso a Usuário, grupo ou entidade de serviço
    Membros <Nome do seu trabalho do Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

Acesso ao nível da conta

  1. Navegue para a sua conta de armazenamento.

  2. Selecione Controlo de acesso (IAM) .

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

  4. Atribua a seguinte função. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.

    Definição Valor
    Função Contribuidor de Dados de Blobs de Armazenamento
    Atribuir acesso a Usuário, grupo ou entidade de serviço
    Membros <Nome do seu trabalho do Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

Conceder acesso através da linha de comando

Acesso ao nível do contentor

Para dar acesso a um contêiner específico, execute o seguinte comando usando a 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 ao nível da conta

Para dar acesso à conta inteira, execute o seguinte comando usando a 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ê está pronto para adicionar o recurso de blob como entrada ou saída ao seu trabalho do Stream Analytics.

  1. Na janela de propriedades de saída do coletor de saída de armazenamento de Blob do Azure, selecione a lista suspensa Modo de autenticação e escolha Identidade gerenciada. Para obter informações sobre as outras propriedades de saída, consulte Compreender as saídas do Azure Stream Analytics. Quando terminar, clique em Guardar.

    Configure Azure Blob storage output

Habilitar acesso VNET

Ao configurar os firewalls e as redes virtuais da sua conta de armazenamento, você pode, opcionalmente, permitir a entrada de tráfego de rede de outros serviços confiáveis da Microsoft. Quando o Stream Analytics é autenticado usando a Identidade Gerenciada, ele fornece prova de que a solicitação é originária de um serviço confiável. Abaixo estão instruções para habilitar essa exceção de acesso VNET.

  1. Navegue até o painel "Firewalls e redes virtuais" no painel de configuração da conta de armazenamento.
  2. Verifique se a opção "Permitir que serviços confiáveis da Microsoft acessem esta conta de armazenamento" está ativada.
  3. Se o tiver ativado, clique em Guardar.

Enable VNET access

Remover identidade gerenciada

A Identidade Gerenciada criada para um trabalho do Stream Analytics é excluída somente quando o trabalho é excluído. Não há como 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á a existir até que o trabalho seja excluído e será usada se você decidir usar a autenticação de Identidade Gerenciada novamente.

Limitações

Abaixo estão as limitações atuais desse recurso:

  1. Contas clássicas de Armazenamento do Azure.

  2. Contas do Azure sem ID do Microsoft Entra.

  3. O acesso multilocatário não é suportado. A entidade de serviço criada para um determinado trabalho do Stream Analytics deve residir no mesmo locatário do Microsoft Entra no qual o trabalho foi criado e não pode ser usada com um recurso que reside em um locatário diferente do Microsoft Entra.

Próximos passos