Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo explica como criar um novo IoT Hub com integração Azure Device Registry (ADR) e gestão de certificados X.509 apoiada pela Microsoft.
Importante
O Azure IoT Hub, com integração ADR e gestão de certificados X.509 apoiada pela Microsoft, está em pré-visualização pública e não é recomendado para cargas de trabalho de produção. Para mais informações, consulte o FAQ: O que há de novo no IoT Hub?.
Pré-requisitos
Uma assinatura ativa do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita.
Se não tiver a CLI do Azure instalada, siga os passos para instalar a CLI do Azure.
Instale a extensão Azure IoT CLI com pré-visualizações ativadas para aceder às funcionalidades de integração ADR e gestão de certificados para o IoT Hub:
Verifique as instalações existentes de extensões de CLI do Azure.
az extension listRemova quaisquer instalações Azure-IoT existentes.
az extension remove --name azure-iotInstale a extensão Azure-IoT a partir do índice com pré-visualizações ativadas,
az extension add --name azure-iot --allow-previewou descarregar o ficheiro .whl da página de lançamentos do GitHub para instalar a extensão manualmente.
az extension add --upgrade --source https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.30.0b1/azure_iot-0.30.0b1-py3-none-any.whlApós a instalação, valide que a sua versão da extensão Azure-IoT é superior a 0.30.0b1.
az extension list
Assegure-se de que tem o privilégio de desempenhar atribuições de funções dentro do âmbito de destino. A realização de atribuições de funções no Azure requer um papel privilegiado, como Proprietário ou Administrador de Acesso ao Utilizador no âmbito apropriado.
Escolher um método de implementação
Para usar a gestão de certificados, deve também configurar o IoT Hub, ADR e o Device Provisioning Service (DPS). Se preferires, podes optar por não ativar a gestão de certificados e configurar apenas o IoT Hub com ADR.
Para configurar o seu IoT Hub com integração ADR e gestão de certificados, pode usar Azure CLI ou um script que automatize o processo de configuração.
| Método de implantação | Description |
|---|---|
| Selecione Azure CLI no topo da página | Use o Azure CLI para criar um novo Hub IoT, uma instância DPS e um namespace ADR e configure todas as definições necessárias. |
| Selecione o script PowerShell no topo da página | Use um script PowerShell (apenas para Windows) para automatizar a criação de um novo Hub IoT, instância DPS e namespace ADR e configure todas as definições necessárias. |
Visão geral
Use os comandos Azure CLI para criar um IoT Hub com integração ADR e gestão de certificados.
O processo de configuração neste artigo inclui os seguintes passos:
- Criar um grupo de recursos
- Configure os privilégios necessários da aplicação
- Criar uma identidade gerenciada atribuída pelo usuário
- Crie um namespace ADR com identidade gerida atribuída pelo sistema
- Crie uma credencial (CA raiz) e uma política (CA emissora) com âmbito desse espaço de nomes
- Crie um IoT Hub (pré-visualização) com namespace ligado e identidade gerida
- Crie um DPS com IoT Hub e namespace ligados
- Sincronize as suas credenciais e políticas (certificados CA) com o espaço de nomes ADR
- Crie um grupo de inscrição e ligue à sua apólice para permitir a disponibilização de certificados
Importante
Durante o período de pré-visualização, o IoT Hub com integração ADR e funcionalidades de gestão de certificados ativadas por cima do IoT Hub está disponível gratuitamente. O Serviço de Provisionamento de Dispositivos (DPS) é faturado separadamente e não está incluído na oferta de pré-visualização. Para detalhes sobre preços DPS, consulte preços Azure IoT Hub.
Prepare seu ambiente
Para preparar o seu ambiente para usar o Azure Device Registry, complete os seguintes passos:
Abra uma janela do terminal.
Para iniciar sessão na sua conta Azure, execute
az login.Para listar todas as subscrições e inquilinos a que tem acesso, execute
az account list.Se tiver acesso a várias subscrições Azure, defina a sua subscrição ativa onde os seus dispositivos IoT são criados, executando o seguinte comando.
az account set --subscription "<your subscription name or ID>"Para mostrar os dados atuais da sua conta, execute
az account show. Copie ambos os valores seguintes da saída do comando e guarde-os num local seguro.- O
idGUID. Utiliza este valor para fornecer o seu ID de Subscrição. - O
tenantIdGUID. Usa este valor para atualizar as suas permissões usando o ID do Inquilino.
- O
Configure o seu grupo de recursos, permissões e identidade gerida
Para criar um grupo de recursos, função e permissões para a sua solução IoT, complete os seguintes passos:
Crie um grupo de recursos para o seu ambiente.
az group create --name <RESOURCE_GROUP_NAME> --location <REGION>Atribuir uma função de Contribuidor ao IoT Hub ao nível do grupo de recursos. O
AppIdvalor, que é o principal ID do IoT Hub, é89d10474-74af-4874-99a7-c23c2f643083e é o mesmo para todas as aplicações do Hub.az role assignment create --assignee "89d10474-74af-4874-99a7-c23c2f643083" --role "Contributor" --scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>"Crie uma nova identidade gerida pelo utilizador (UAMI).
az identity create --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP_NAME> --location <REGION>Recuperar o ID de recurso da identidade gerida. Precisa do ID de recurso para atribuir papéis, configurar políticas de acesso ou ligar a identidade a outros recursos.
UAMI_RESOURCE_ID=$(az identity show --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP_NAME> --query id -o tsv)
Criar um novo espaço de nomes ADR
Nesta secção, cria um novo espaço de nomes ADR com uma identidade gerida atribuída pelo sistema. Este processo gera automaticamente uma credencial de CA raiz e uma política de CA emissora para o namespace. Para mais informações sobre a forma como credenciais e políticas são usadas para assinar certificados de dispositivo de folha no provisionamento, consulte Gestão de Certificados.
Observação
As credenciais são opcionais. Também pode criar um namespace sem uma identidade gerida, omitindo as flags --enable-credential-policy e --policy-name.
Crie um novo espaço de nomes ADR. O seu espaço
namede nomes pode conter apenas letras minúsculas e hífenes ('-') no meio do nome, mas não no início ou no fim. Por exemplo, o nome "msft-namespace" é válido.
O--enable-credential-policycomando cria credenciais (CA raiz) e política padrão (CA de emissão) para este espaço de nomes. Pode configurar o nome desta política usando o--policy-namecomando. Por padrão, uma política pode emitir certificados com validade de 30 dias.az iot adr ns create --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --location <REGION> --enable-credential-policy true --policy-name <POLICY_NAME>Sugestão
Pode, opcionalmente, criar uma política personalizada adicionando os parâmetros
--cert-subjecte--cert-validity-days. Para mais informações, consulte Criar uma política personalizada.Observação
A criação do espaço de nomes ADR com identidade gerida atribuída pelo sistema pode demorar até 5 minutos.
Verifique se o namespace com uma identidade gerida atribuída pelo sistema, ou principal ID, foi criado.
az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>Verifique se uma credencial e uma política nomeadas foram criadas.
az iot adr ns credential show --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> az iot adr ns policy show --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --name <POLICY_NAME>Observação
Se não atribuiu um nome de apólice, a política é criada com o nome "default".
Atribuir função UAMI para aceder ao espaço de nomes ADR
Nesta secção, atribui o papel de Contribuidor do Registo de Dispositivos Azure à identidade gerida e define o seu âmbito ao namespace. Este papel personalizado permite acesso total a dispositivos IoT dentro do namespace ADR.
Recuperar o ID principal da Identidade Gerida Atribuída pelo Utilizador. Este ID é necessário para atribuir funções à identidade.
UAMI_PRINCIPAL_ID=$(az identity show --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP> --query principalId -o tsv)Recuperar o ID de recurso do espaço de nomes ADR. Este ID é usado como escopo para a atribuição da função.
NAMESPACE_RESOURCE_ID=$(az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)Atribua a função de Contribuidor do Registo de Dispositivos Azure à identidade gerida. Esta função concede à identidade gerida as permissões necessárias, limitadas ao namespace.
az role assignment create --assignee $UAMI_PRINCIPAL_ID --role "a5c3590a-3a1a-4cd4-9648-ea0a32b15137" --scope $NAMESPACE_RESOURCE_ID
Crie um Hub IoT com integração ADR
Crie um novo Hub IoT ligado ao namespace ADR e com o UAMI criado anteriormente.
az iot hub create --name <HUB_NAME> --resource-group <RESOURCE_GROUP> --location <HUB_LOCATION> --sku GEN2 --mi-user-assigned $UAMI_RESOURCE_ID --ns-resource-id $NAMESPACE_RESOURCE_ID --ns-identity-id $UAMI_RESOURCE_IDImportante
Como o hub IoT poderá ser descoberto publicamente como um ponto de extremidade DNS, evite inserir informações confidenciais ou pessoalmente identificáveis ao nomeá-lo.
Verifique se o IoT Hub tem a identidade correta e as propriedades ADR configuradas.
az iot hub show --name <HUB_NAME> --resource-group <RESOURCE_GROUP> --query identity --output json
Atribuir funções de IoT Hub para o acesso ao espaço de nomes ADR
Recuperar o ID principal da identidade gerida do namespace ADR. Esta identidade necessita de permissões para interagir com o IoT Hub.
ADR_PRINCIPAL_ID=$(az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP> --query identity.principalId -o tsv)Recupere o ID do recurso do IoT Hub. Este ID é usado como escopo para atribuições de funções.
HUB_RESOURCE_ID=$(az iot hub show --name <HUB_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)Atribuir a função "Contribuidor" à identidade ADR. Isto concede ao Contribuidor de identidade gerida do espaço de nomes ADR acesso ao IoT Hub. Esta função permite um acesso amplo, incluindo a gestão de recursos, mas sem atribuição de funções.
az role assignment create --assignee $ADR_PRINCIPAL_ID --role "Contributor" --scope $HUB_RESOURCE_IDAtribuir a função "Contribuidor do Registo do Hub IoT" à identidade ADR. Isto concede permissões mais específicas para gerir identidades de dispositivos no IoT Hub. Isto é essencial para que a ADR possa registar e gerir dispositivos no hub.
az role assignment create --assignee $ADR_PRINCIPAL_ID --role "IoT Hub Registry Contributor" --scope $HUB_RESOURCE_ID
Criar uma instância de Serviço de Provisionamento de Dispositivos com integração ADR
Cria uma nova instância de DPS ligada ao teu namespace ADR criado nas secções anteriores. A tua instância DPS deve estar localizada na mesma região do teu espaço de nomes ADR.
az iot dps create --name <DPS_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --mi-user-assigned $UAMI_RESOURCE_ID --ns-resource-id $NAMESPACE_RESOURCE_ID --ns-identity-id $UAMI_RESOURCE_IDVerifique se o DPS tem a identidade correta e as propriedades de ADR configuradas.
az iot dps show --name <DPS_NAME> --resource-group <RESOURCE_GROUP> --query identity --output json
Ligue o seu IoT Hub à instância do Device Provisioning Service
Liga o IoT Hub ao teu DPS.
az iot dps linked-hub create --dps-name <DPS_NAME> --resource-group <RESOURCE_GROUP> --hub-name <HUB_NAME>Verifique se o IoT Hub aparece na lista de hubs ligados para o DPS.
az iot dps linked-hub list --dps-name <DPS_NAME> --resource-group <RESOURCE_GROUP>
Executar sincronização de credenciais ADR
Sincronize a sua credencial e políticas com o IoT Hub. Este passo garante que o IoT Hub regista os certificados de CA e confia em quaisquer certificados folha emitidos pelas suas políticas configuradas.
az iot adr ns credential sync --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP>
Valide o certificado de CA do hub
Valide que o seu IoT Hub registou o seu certificado de CA.
az iot hub certificate list --hub-name <HUB_NAME> --resource-group <RESOURCE_GROUP>
Criar uma inscrição no DPS
Para provisionar dispositivos usando certificados leaf, crie um grupo de inscrição no DPS e atribua-o à política de credencial apropriada com o --credential-policy parâmetro.
O comando seguinte cria um grupo de inscrição, usando atestação de chave simétrica por padrão:
Observação
Se criou uma política com um nome diferente de "default", certifique-se de usar esse nome de apólice depois do --credential-policy parâmetro.
az iot dps enrollment-group create --dps-name <DPS_NAME> --resource-group <RESOURCE_GROUP> --enrollment-id <ENROLLMENT_ID> --credential-policy <POLICY_NAME>
O seu IoT Hub com integração ADR e gestão de certificados está agora configurado e pronto a usar.
Comandos opcionais
Os seguintes comandos ajudam-no a gerir os seus namespaces ADR, desativar dispositivos, criar políticas personalizadas e eliminar recursos quando já não são necessários.
Gerir os seus namespaces
Lista todos os namespaces no teu grupo de recursos.
az iot adr ns list --resource-group <RESOURCE_GROUP_NAME>Mostrar detalhes de um namespace específico.
az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>Liste todas as políticas no seu espaço de nomes.
az iot adr ns policy list --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>Mostre detalhes de uma apólice específica.
az iot adr ns policy show --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --name <POLICY_NAME>Liste todas as credenciais no seu espaço de nomes.
az iot adr ns credential list --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>
Desativar dispositivos
Liste todos os dispositivos no seu Hub IoT.
az iot hub device-identity list --hub-name <HUB_NAME> --resource-group <RESOURCE_GROUP_NAME>Desative um dispositivo atualizando o seu estado para
disabled. Certifica-te de substituir<MY_DEVICE_ID>pelo ID do dispositivo que queres desativar.az iot hub device-identity update --hub-name <HUB_NAME> --resource-group <RESOURCE_GROUP_NAME> -d <MY_DEVICE_ID> --status disabledVolte a ligar o dispositivo e verifique se não consegue ligar-se a um Hub IoT.
Criar uma política personalizada
Crie uma política personalizada usando o az iot adr ns policy create comando. Defina o nome, o assunto do certificado e o período de validade da apólice seguindo estas regras:
- O valor da política
namedeve ser único dentro do espaço de nomes. Se tentar criar uma política com um nome que já existe, recebe uma mensagem de erro. - O valor do sujeito
cert-subjectdo certificado deve ser único em todas as políticas do namespace. Se tentar criar uma política com um assunto que já existe, recebe uma mensagem de erro. - O valor do período
cert-validity-daysde validade deve ser entre 1 e 30 dias. Se tentar criar uma apólice com período de validade fora deste intervalo, recebe uma mensagem de erro.
O exemplo seguinte cria uma política chamada "custom-policy" com o sujeito "CN=TestDevice" e um período de validade de 30 dias.
az iot adr ns policy create --name "custom-policy" --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --cert-subject "CN=TestDevice" --cert-validity-days "30"
Eliminar recursos
Para eliminar o seu namespace ADR, deve primeiro eliminar quaisquer Hubs IoT e instâncias DPS ligadas ao namespace.
az iot hub delete --name <HUB_NAME> --resource-group <RESOURCE_GROUP_NAME>
az iot adr ns delete --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>
az iot dps delete --name <DPS_NAME> --resource-group <RESOURCE_GROUP_NAME>
az identity delete --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP_NAME>
Visão geral
Use o script PowerShell fornecido para automatizar a configuração do seu IoT Hub com integração com o Azure Device Registry. O script executa todos os passos necessários para criar os recursos necessários e ligá-los entre si, incluindo:
- Criar um grupo de recursos
- Configure os privilégios necessários da aplicação
- Criar uma identidade gerenciada atribuída pelo usuário
- Crie um namespace ADR com identidade gerida atribuída pelo sistema
- Crie uma credencial (CA raiz) e uma política (CA emissora) com âmbito desse espaço de nomes
- Crie um IoT Hub (pré-visualização) com namespace ligado e identidade gerida
- Crie um DPS com IoT Hub e namespace ligados
- Sincronize as suas credenciais e políticas (certificados CA) com o espaço de nomes ADR
- Crie um grupo de inscrição e ligue à sua apólice para permitir a disponibilização de certificados
Importante
Durante o período de pré-visualização, o IoT Hub com integração ADR e funcionalidades de gestão de certificados ativadas por cima do IoT Hub está disponível gratuitamente. O Serviço de Provisionamento de Dispositivos (DPS) é faturado separadamente e não está incluído na oferta de pré-visualização. Para detalhes sobre preços DPS, consulte preços Azure IoT Hub.
Prepare seu ambiente
- Descarregue o PowerShell 7 para Windows.
- Navegue até ao repositório GitHub e descarregue a pasta Scripts , que contém o ficheiro de scripts,
iothub-adr-certs-setup-preview.ps1.
Personalizar as variáveis do script
Abra o ficheiro de script num editor de texto e modifique as seguintes variáveis para corresponder à configuração desejada.
-
TenantId: O seu ID de inquilino. Pode encontrar este valor executandoaz account showno seu terminal. -
SubscriptionId: O seu ID de subscrição. Pode encontrar este valor executandoaz account showno seu terminal. -
ResourceGroup: O nome do seu grupo de recursos. -
Location: A região Azure onde queres criar os teus recursos. Consulte as localizações disponíveis para funcionalidades de pré-visualização na secção Regiões Suportadas . -
NamespaceName: O nome do seu espaço de nomes pode conter apenas letras minúsculas e hífenes ('-') no meio do nome, mas não no início ou no fim. Por exemplo, "msft-namespace" é um nome válido. -
HubName: O nome do seu hub só pode conter letras minúsculas e numerais. -
DpsName: O nome da sua instância de Serviço de Provisionamento de Dispositivos. -
UserIdentity: A identidade gerida atribuída pelo utilizador para os seus recursos. -
WorkingFolder: A pasta local onde o teu script está localizado.
Importante
Como o hub IoT poderá ser descoberto publicamente como um ponto de extremidade DNS, evite inserir informações confidenciais ou pessoalmente identificáveis ao nomeá-lo.
Executa o script de forma interativa
Abra o script e execute o PowerShell 7+ como administrador. Navega até à pasta que contém o teu script e executa
.\iothub-adr-certs-setup-preview.ps1.Se tiver um problema com a política de execução, tente executar
powershell -ExecutionPolicy Bypass -File .\iothub-adr-certs-setup-preview.ps1.Siga as instruções orientadas:
- Pressione
Enterpara avançar com um passo - Pressione
souSpara saltar um passo - Pressione
Ctrl+Cpara interromper
- Pressione
Observação
A criação do seu espaço de nomes ADR, IoT Hub, DPS e outros recursos pode demorar até 5 minutos cada.
Monitorizar a execução e validar os recursos
O script continua a executar quando surgem advertências e só é interrompido se um comando retornar um código de saída diferente de zero. Monitorize a consola para mensagens vermelhas de ERRO , que indicam problemas que exigem atenção.
Quando o script estiver concluído, valide a criação dos seus recursos visitando o seu novo Grupo de Recursos no portal Azure. Deverá ver os seguintes recursos criados:
- Instância IoT Hub
- Instância do Serviço de Provisionamento de Dispositivos (DPS)
- Azure Device Registry (ADR) namespace
- Identidade Gerida Atribuída pelo Utilizador (IGAU)
Próximos passos
Neste momento, o seu IoT Hub com integração ADR e gestão de certificados está configurado e pronto a usar. Agora pode começar a integrar os seus dispositivos IoT no hub usando a instância do Device Provisioning Service (DPS) e gerir os seus dispositivos IoT de forma segura usando as políticas e inscrições que configurou.
Novidade: A gestão de certificados é suportada em determinados SDKs de Dispositivos DPS. Agora pode integrar dispositivos usando a gestão de certificados X.509 apoiada pela Microsoft com os seguintes exemplos de SDK: