Use identidade gerida para autenticar o seu trabalho Azure Stream Analytics no Armazenamento de Blobs do Azure

Quando usas a autenticação identidade gerida para saída para o armazenamento de Blobs do Azure, as tarefas do Stream Analytics têm acesso direto a uma conta de armazenamento sem usar uma cadeia de conexão. Esta funcionalidade melhora a segurança e permite-lhe escrever dados numa conta de armazenamento numa rede virtual (VNET) dentro do Azure.

Este artigo mostra-lhe como ativar a identidade gerida para as saídas Blob de um trabalho de Stream Analytics através do portal Azure e através de uma implementação do Azure Resource Manager.

Crie o trabalho de Stream Analytics usando o portal do Azure

Primeiro, crie uma identidade gerida para o seu emprego no 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.

    Identidade Gerida atribuída pelo sistema

  3. O Azure cria um principal de serviço para a identidade do trabalho do Stream Analytics no Microsoft Entra ID. O Azure gere o ciclo de vida da identidade recém-criada. Quando elimina a tarefa de Stream Analytics, o Azure apaga automaticamente a identidade associada (ou seja, a entidade de serviço). 

    Ao guardar a configuração, o ID do Objeto (OID) do principal de serviço aparece como o ID do Principal, conforme mostrado na secção seguinte:

    Principal ID

    A entidade de serviço tem o mesmo nome que o trabalho do Stream Analytics. Por exemplo, se o nome do cargo for MyASAJob, o nome da entidade de serviço será MyASAJob. 

Implementação do Azure Resource Manager

Ao usar o Azure Resource Manager, pode automatizar totalmente a implementação do seu trabalho de Stream Analytics. Pode implementar modelos Resource Manager usando Azure PowerShell ou o CLI do Azure. Os exemplos seguintes utilizam a CLI do Azure.

  1. Cria um Microsoft. StreamAnalytics/streamingjobs recurso com uma Identidade Gerida, incluindo a seguinte propriedade na secção de recursos do seu modelo de Resource Manager:

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

    Esta propriedade indica ao Azure Resource Manager para criar e gerir a identidade para o seu trabalho de Stream Analytics. O seguinte modelo de exemplo do Resource Manager implementa um trabalho de Stream Analytics com Identidade Gerida ativada e um dissipador de saída Blob que utiliza Identidade Gerida:

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

    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 o Azure Resource Manager para obter 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 devolve uma resposta semelhante ao 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"
    }
    

    Tome nota do principalId da definição do trabalho, que identifica a Identidade Gerida do seu trabalho dentro do Microsoft Entra ID e é utilizado na etapa seguinte para conceder ao trabalho de Stream Analytics acesso à conta de armazenamento.

  3. Agora que criou a tarefa, consulte a secção Dar acesso à tarefa de Stream Analytics à sua conta de armazenamento deste artigo.

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

Pode dar à sua tarefa de Stream Analytics dois níveis de acesso:

  1. Acesso ao nível do contentor: Este nível de acesso concede ao trabalho acesso a um contentor existente específico.
  2. Acesso ao nível da conta: Este nível de acesso concede ao trabalho acesso geral à conta de armazenamento, incluindo a capacidade de criar novos contentores.

A menos que precises do trabalho para criar containers, escolhe acesso ao nível do contentor para conceder ao trabalho o nível mínimo de acesso exigido. As secções seguintes explicam ambas as opções para o portal Azure e para a linha de comandos.

Nota

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

Conceder acesso através do portal Azure

Acesso ao nível do contentor

  1. Vai ao painel de configuração do contentor na tua conta de armazenamento.

  2. Selecione Controlo de acesso (IAM) .

  3. Selecione Adicionar>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.

    Configuraçã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>

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

Acesso ao nível da conta

  1. Aceda à sua conta de armazenamento.

  2. Selecione Controlo de acesso (IAM) .

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

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

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

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

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 ponto de saída de armazenamento de Blob do Azure, selecione o menu suspenso "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, selecione Guardar.

    Configurar a saída de armazenamento de Blob do Azure

Permitir o acesso à rede virtual

Quando configura os firewalls e redes virtuais da sua conta de armazenamento, pode opcionalmente permitir a entrada de tráfego de rede de outros serviços Microsoft de confiança. Quando o Stream Analytics autentica usando a Identidade Gerida, fornece prova de que o pedido tem origem num serviço de confiança. As instruções seguintes explicam como ativar esta exceção de acesso à rede virtual.

  1. Vai ao painel de Firewalls e redes virtuais dentro do painel de configuração da conta de armazenamento.
  2. Certifique-se de que a opção Permitir que serviços confiáveis da Microsoft acedam a esta conta de armazenamento está ativada.
  3. Se a ativaste, seleciona Guardar.

Habilitar acesso VNET

Remover identidade gerenciada

A identidade gerida que cria para uma tarefa de Stream Analytics só será eliminada quando elimina a tarefa. Não podes apagar a Identidade Gerida sem eliminar 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 Gerida continua a existir até eliminares o trabalho, e é usada se decidires voltar a usar a autenticação por Identidade Gerida.

Limitações

As limitações atuais desta funcionalidade incluem:

  1. Contas clássicas de Armazenamento do Azure.

  2. Contas do Azure sem o Microsoft Entra ID.

  3. O acesso multitenant não é suportado. O principal de serviço criado para um determinado trabalho de Stream Analytics deve residir no mesmo tenant Microsoft Entra onde criou o trabalho, e não pode usá-lo com um recurso que reside num tenant Microsoft Entra diferente.

Próximos passos