Controlar o acesso à Hub IoT utilizando Azure Ative Directory

Pode utilizar Azure Ative Directory (Azure AD) para autenticar pedidos para Hub IoT do Azure APIs de serviço, como criar identidade do dispositivo e invocar métodos diretos. Também pode usar o controlo de acesso baseado em funções (Azure RBAC) para autorizar as mesmas APIs de serviço. Ao utilizar estas tecnologias em conjunto, pode conceder permissões de acesso a APIs de serviço Hub IoT a um diretor de segurança Azure AD. Este diretor de segurança pode ser um utilizador, grupo ou diretor de serviço de aplicação.

Autenticar o acesso utilizando a Azure AD e controlar permissões utilizando o RBAC Azure proporciona uma melhor segurança e facilidade de utilização em fichas de segurança. Para minimizar potenciais problemas de segurança inerentes a fichas de segurança, recomendamos que utilize o Azure AD com o seu hub IoT sempre que possível.

Nota

A autenticação com Azure AD não é suportada para as APIs do dispositivo Hub IoT (como mensagens de dispositivo para nuvem e propriedades reportadas). Utilize teclas simétricas ou X.509 para autenticar dispositivos para Hub IoT.

Autenticação e autorização

Quando um diretor de segurança da AZure AD solicita o acesso a um serviço de Hub IoT API, a identidade do diretor é primeiramente autenticada. Para a autenticação, o pedido tem de conter um token de acesso OAuth 2.0 no tempo de funcionaamento. O nome de recurso para solicitar o token é https://iothubs.azure.net. Se a aplicação for executada num recurso Azure como um Azure VM, Funções do Azure app ou Serviço de Aplicações do Azure app, pode ser representada como uma identidade gerida.

Depois do diretor da AD Azure ser autenticado, o próximo passo é a autorização. Neste passo, Hub IoT usa o serviço de atribuição de funções Azure AD para determinar que permissões o principal tem. Se as permissões do diretor corresponderem ao recurso solicitado ou à API, Hub IoT autorizar o pedido. Portanto, este passo requer que uma ou mais funções de Azure sejam atribuídas ao diretor de segurança. Hub IoT fornece alguns papéis incorporados que têm grupos comuns de permissões.

Gerir o acesso a Hub IoT utilizando a atribuição de funções do Azure RBAC

Com a Azure AD e a RBAC, Hub IoT exige que o principal solicite à API o nível adequado de autorização. Para dar ao diretor a permissão, dê-lhe uma tarefa de papel.

Para garantir o menor privilégio, atribua sempre o papel adequado ao menor âmbito possível de recursos, que é provavelmente o âmbito Hub IoT.

Hub IoT fornece as seguintes funções incorporadas Azure para autorizar o acesso a APIs de serviço Hub IoT utilizando Azure AD e RBAC:

Função Description
Contribuinte de Dados Hub IoT Permite o acesso total às operações Hub IoT de data plane.
leitor de dados Hub IoT Permite o acesso completo à Hub IoT propriedades do plano de dados.
Contribuinte do Registo Hub IoT Permite o acesso total ao registo do dispositivo Hub IoT.
Colaborador Hub IoT Twin Permite ler e escrever acesso a todos os Hub IoT dispositivo e gémeos módulos.

Também pode definir funções personalizadas para usar com Hub IoT combinando as permissões de que necessita. Para obter mais informações, consulte Criar funções personalizadas para o controlo de acesso baseado em funções Azure.

Âmbito do recurso

Antes de atribuir um papel de Azure RBAC a um diretor de segurança, determine o âmbito de acesso que o diretor de segurança deve ter. É sempre melhor conceder apenas o mais estreito alcance possível. As funções de Azure RBAC definidas num âmbito mais amplo são herdadas pelos recursos abaixo deles.

Esta lista descreve os níveis em que pode estender o acesso a Hub IoT, começando pelo âmbito mais restrito:

  • O centro de IoT. Neste âmbito, uma tarefa de função aplica-se ao hub IoT. Não há um âmbito menor que um centro de IoT individual. A atribuição de funções em âmbitos menores, como identidade individual de dispositivo ou secção dupla, não é suportada.
  • o grupo de recursos. Neste âmbito, uma atribuição de funções aplica-se a todos os centros de IoT do grupo de recursos.
  • A assinatura. Neste âmbito, uma atribuição de funções aplica-se a todos os hubs IoT em todos os grupos de recursos da subscrição.
  • Um grupo de gestão. Neste âmbito, uma atribuição de funções aplica-se a todos os hubs de IoT em todos os grupos de recursos em todas as subscrições do grupo de gestão.

Permissões para APIs de serviço Hub IoT

A tabela seguinte descreve as permissões disponíveis para Hub IoT operações de API de serviço. Para permitir que um cliente ligue para uma determinada operação, certifique-se de que a função RBAC atribuída ao cliente oferece permissões suficientes para a operação.

Ação RBAC Description
Microsoft.Devices/IotHubs/devices/read Leia qualquer dispositivo ou identidade do módulo.
Microsoft.Devices/IotHubs/devices/write Criar ou atualizar qualquer identidade de dispositivo ou módulo.
Microsoft.Devices/IotHubs/devices/delete Elimine qualquer identidade de dispositivo ou módulo.
Microsoft.Devices/IotHubs/twins/read Leia qualquer dispositivo ou módulo gémeo.
Microsoft.Devices/IotHubs/twins/write Escreva qualquer dispositivo ou módulo gémeo.
Microsoft.Devices/IotHubs/jobs/read Devolva uma lista de empregos.
Microsoft.Devices/IotHubs/jobs/write Criar ou atualizar qualquer trabalho.
Microsoft.Devices/IotHubs/jobs/delete Apagar qualquer trabalho.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Envie uma mensagem nuvem-a-dispositivo para qualquer dispositivo.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Receber, completar ou abandonar uma notificação de feedback de mensagens nuvem-a-dispositivo.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Elimine todos os comandos pendentes para um dispositivo.
Microsoft.Devices/IotHubs/directMethods/invoke/action Invoque um método direto em qualquer dispositivo ou módulo.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Receber, completar ou abandonar notificações de upload de ficheiros.
Microsoft.Devices/IotHubs/statistics/read Leia as estatísticas do dispositivo e do serviço.
Microsoft.Devices/IotHubs/configurations/read Leia as configurações de gestão do dispositivo.
Microsoft.Devices/IotHubs/configurations/write Criar ou atualizar configurações de gestão de dispositivos.
Microsoft.Devices/IotHubs/configurations/delete Elimine qualquer configuração de gestão do dispositivo.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Aplique o conteúdo de configuração num dispositivo de borda.
Microsoft.Devices/IotHubs/configurations/testQueries/action Valide a condição alvo e as consultas métricas personalizadas para uma configuração.

Dica

Nota

Para obter dados de Hub IoT utilizando o Azure AD, crie o encaminhamento para um centro de eventos separado. Para aceder ao ponto final compatível com Os Centros de Eventos incorporados, utilize o método da cadeia de ligação (chave de acesso partilhado) como antes.

Azure AD acesso e políticas de acesso compartilhado

Por padrão, Hub IoT suporta o acesso a API do serviço através tanto da AZure AD como das políticas de acesso partilhado e fichas de segurança. Para minimizar potenciais vulnerabilidades de segurança inerentes a fichas de segurança, desative o acesso com políticas de acesso partilhadas:

  1. Certifique-se de que os seus clientes e utilizadores de serviço têm acesso suficiente ao seu hub IoT. Siga o princípio do mínimo privilégio.
  2. No portal do Azure, vá ao seu centro de IoT.
  3. No painel esquerdo, selecione Políticas de acesso partilhado.
  4. Sob Ligação usando políticas de acesso partilhado, selecione Deny. Screenshot that shows how to turn off IoT Hub shared access policies.
  5. Reveja o aviso e, em seguida, selecione Save.

O seu serviço Hub IoT APIs pode agora ser acedido apenas através do Azure AD e do RBAC.

Acesso AD AZure a partir do portal do Azure

Quando tenta aceder a Hub IoT, o portal do Azure primeiro verifica se lhe foi atribuído um papel de Azure.Microsoft.Devices/iotHubs/listkeys/action Se tiver, o portal do Azure usa as chaves das políticas de acesso partilhado para aceder a Hub IoT. Caso contrário, o portal do Azure tenta aceder aos dados utilizando a sua conta Azure AD.

Para aceder Hub IoT a partir do portal do Azure utilizando a sua conta Azure AD, precisa de permissões para aceder a recursos de dados Hub IoT (como dispositivos e gémeos). Também precisa de permissões para ir ao Hub IoT recurso na portal do Azure. As funções incorporadas fornecidas por Hub IoT garantir o acesso a recursos como dispositivos e gémeos. Mas não dão acesso ao recurso Hub IoT. Assim, o acesso ao portal também requer a atribuição de um Azure Resource Manager papel como Reader. O papel de Leitor é uma boa escolha porque é o papel mais restrito que lhe permite navegar no portal. Não inclui a Microsoft.Devices/iotHubs/listkeys/action permissão (que dá acesso a todos os recursos de dados Hub IoT através de políticas de acesso partilhado).

Para garantir que uma conta não tenha acesso fora das permissões atribuídas, não inclua a Microsoft.Devices/iotHubs/listkeys/action permissão quando criar uma função personalizada. Por exemplo, criar uma função personalizada que possa ler identidades do dispositivo mas não possa criar ou eliminar dispositivos, crie um papel personalizado que:

  • Tem a ação de Microsoft.Devices/IotHubs/devices/read dados.
  • Não tem a ação de Microsoft.Devices/IotHubs/devices/write dados.
  • Não tem a ação de Microsoft.Devices/IotHubs/devices/delete dados.
  • Não tem Microsoft.Devices/iotHubs/listkeys/action ação.

Em seguida, certifique-se de que a conta não tem quaisquer outras funções que tenham a Microsoft.Devices/iotHubs/listkeys/action permissão, como Proprietário ou Colaborador. Para permitir que a conta tenha acesso a recursos e navegue no portal, atribua o Reader.

Extensão Azure IoT para Azure CLI

A maioria dos comandos contra Hub IoT suportam a autenticação Azure AD. Pode controlar o tipo de autenticação utilizada para executar comandos utilizando o --auth-type parâmetro, que aceita key ou login valoriza. O key valor é o padrão.

  • Quando --auth-type tem o key valor, como antes, o CLI descobre automaticamente uma política adequada quando interage com Hub IoT.

  • Quando --auth-type tem o login valor, é utilizado um token de acesso do CLI Azure registado no principal para a operação.

Para mais informações, consulte a extensão Azure IoT para a página de lançamento do Azure CLI.

SDK samples (Amostras do SDK)

Passos seguintes