Usar 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 no armazenamento de Blobs do Azure fornece aos trabalhos do Stream Analytics o acesso direto à 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 as saídas do Power BI de um trabalho de Stream Analytics por meio do portal do Azure e por meio de uma implantação do Azure Resource Manager.

Criar um 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 à 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.

    System assigned managed identity

  3. Uma entidade de serviço para a identidade de trabalho do Stream Analytics é criada no Microsoft Entra ID. O ciclo de vida da identidade que acaba de ser 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. 

    Ao salvar a configuração, a OID (ID do objeto) da entidade de serviço é listada como a ID da Entidade de Segurança 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 trabalho for MyASAJob, o nome da entidade de serviço também será MyASAJob. 

Implantação do Azure Resource Manager

Azure Resource Manager permite automatizar totalmente a implantação de seu trabalho de Stream Analytics. Você também pode implantar recursos com modelos do Resource Manager usando o Azure PowerShell ou a CLI do Azure. Os exemplos a seguir usam o CLI do Azure.

  1. Você pode criar um recurso Microsoft.StreamAnalytics/streamingjobs com uma identidade gerenciada incluindo a propriedade a seguir na seção de recursos do seu modelo do 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. Veja abaixo um exemplo de modelo do Resource Manager que implanta um trabalho Stream Analytics com identidade gerenciada habilitada e um coletor de saída Power BI 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"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    Implante o trabalho acima para o grupo de recursos de GrupoExemplo usando o comando do CLI do Azure a seguir:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Depois que o trabalho for criado, 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 acima retornará uma resposta como a seguinte:

    {
        "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 a principalId da definição de trabalho, que identifica a identidade gerenciada do trabalho dentro do Microsoft Entra ID e que será usada 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 fornecer a Stream Analytics o acesso ao trabalho para sua conta de armazenamento deste artigo.

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

Há dois níveis de acesso que você pode optar por dar ao seu Stream Analytics trabalho:

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

Observação

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 por meio do portal do Azure

Acesso no nível do contêiner

  1. Navegue até 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>

    Screenshot that shows Add role assignment page in Azure portal.

Acesso no nível da conta

  1. Navegue para 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>

    Screenshot that shows Add role assignment page in Azure portal.

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, clique em Salvar.

    Configure Azure Blob storage output

Acesso à VNET segura

Ao configurar os firewalls e as redes virtuaisda sua conta de armazenamento, você pode opcionalmente permitir o tráfego de rede de outros serviços confiáveis da Microsoft. Quando Stream Analytics autentica usando identidade gerenciada, ele fornece uma prova de que a solicitação é originada de um serviço confiável. Abaixo estão as 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. 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ê tiver habilitado, clique em salvar.

Enable VNET access

Remover a identidade gerenciada

A identidade Gerenciada criada para um trabalho do Stream Analytics é excluída somente quando o trabalho é excluído. 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 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 o Microsoft Entra ID.

  3. Não há suporte para acesso multilocatário. 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 poderá ser usada com um recurso que resida em um locatário diferente do Microsoft Entra.

Próximas etapas