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 por meio 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.
No portal do Azure, abra seu trabalho do Azure Stream Analytics.
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.
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 de segurança, conforme mostrado abaixo:
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émMyASAJob
será .
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.
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
Depois que o trabalho for criado, você poderá usar o 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 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 seu trabalho no Microsoft Entra ID e será usado na próxima etapa para conceder ao trabalho do Stream Analytics acesso à conta de armazenamento.
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:
- Acesso em nível de contêiner: esta opção dá ao trabalho acesso a um contêiner existente específico.
- 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
Navegue até o painel de configuração do contêiner em sua conta de armazenamento.
Selecione Controlo de acesso (IAM) .
Selecione Adicionar>atribuição de função para abrir a página Adicionar atribuição de função.
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 Value Role 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>
Acesso ao nível da conta
Navegue para a sua conta de armazenamento.
Selecione Controlo de acesso (IAM) .
Selecione Adicionar>atribuição de função para abrir a página Adicionar atribuição de função.
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 Value Role 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>
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.
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.
Habilitar acesso VNET
Ao configurar os firewalls e 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.
- Navegue até o painel "Firewalls e redes virtuais" no painel de configuração da conta de armazenamento.
- Verifique se a opção "Permitir que serviços confiáveis da Microsoft acessem esta conta de armazenamento" está ativada.
- Se o tiver ativado, clique em Guardar.
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:
Contas clássicas de Armazenamento do Azure.
Contas do Azure sem ID do Microsoft Entra.
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.