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.
No portal do Azure, abra seu trabalho do Azure Stream Analytics.
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.
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:
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.
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
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.
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:
- Acesso ao nível do contêiner: essa opção fornece ao trabalho acesso a um contêiner existente específico.
- 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
Navegue até o painel de configuração do contêiner em sua conta de armazenamento.
Selecione IAM (Controle de acesso) .
Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.
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>
Acesso no nível da conta
Navegue para sua conta de armazenamento.
Selecione IAM (Controle de acesso) .
Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.
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>
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.
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.
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.
- Navegue até o painel "firewalls e redes virtuais" no painel de configuração da conta de armazenamento.
- Certifique-se de que a opção "Permitir que serviços confiáveis da Microsoft acessem esta conta de armazenamento" está habilitada.
- Se você tiver habilitado, clique em salvar.
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:
Contas clássicas de armazenamento do Azure.
Contas do Azure sem o Microsoft Entra ID.
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.