Habilitar configurações seguras nas Operações do Azure IoT
As configurações seguras para as Operações do Azure IoT incluem a configuração do gerenciamento de segredos e uma identidade gerenciada atribuída pelo usuário para conexões de nuvem; por exemplo, um servidor OPC UA ou pontos de extremidade de fluxo de dados.
Este artigo fornece instruções para habilitar configurações seguras se você não fez isso durante a implantação inicial.
Pré-requisitos
Uma instância de Operações IoT do Azure implantada com configurações de teste. Por exemplo, você escolheu Configurações de Teste ao seguir as instruções em Implantar Operações IoT do Azure em um cluster Kubernetes habilitado para Arc.
CLI do Azure instalada em sua máquina de desenvolvimento. Este cenário requer a CLI do Azure versão 2.53.0 ou superior. Use
az --version
para verificar sua versão eaz upgrade
atualizar, se necessário. Para obter mais informações, consulte Como instalar a CLI do Azure.A versão mais recente da extensão connectedk8s para a CLI do Azure. Use o seguinte comando para adicionar a extensão ou atualizá-la para a versão mais recente:
az extension add --upgrade --name connectedk8s
A extensão Azure IoT Operations para CLI do Azure. Use o seguinte comando para adicionar a extensão ou atualizá-la para a versão mais recente:
az extension add --upgrade --name azure-iot-ops
Habilite o cluster para configurações seguras
Para habilitar a sincronização de segredos para sua instância de Operações do Azure IoT, seu cluster deve ser habilitado como um emissor OIDC e para federação de identidades de carga de trabalho. Essa configuração é necessária para que a extensão do Repositório Secreto sincronize os segredos de um cofre de chaves do Azure e os armazene na borda como segredos do Kubernetes.
Para clusters do Serviço Kubernetes do Azure (AKS), o emissor do OIDC e os recursos de identidade da carga de trabalho podem ser habilitados somente no momento da criação do cluster. Para clusters no AKS Edge Essentials, o script automatizado habilita esses recursos por padrão. Para clusters AKS no Azure Local, siga as etapas para Implantar e configurar a identidade da carga de trabalho em um AKS habilitado pelo cluster do Azure Arc para criar um novo cluster se você não tiver um com os recursos necessários.
Para clusters k3s no Kubernetes, você pode atualizar um cluster existente. Para habilitar e configurar esses recursos, use as seguintes etapas:
Atualize o cluster para habilitar o emissor OIDC e a identidade da carga de trabalho.
az connectedk8s update -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --enable-oidc-issuer --enable-workload-identity
Se você habilitou o emissor OIDC e os recursos de identidade da carga de trabalho quando criou o cluster, não precisará executar o comando anterior novamente. Use o seguinte comando para verificar o status do emissor OIDC e os recursos de identidade da carga de trabalho para seu cluster:
az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
Obtenha a URL do emissor do cluster.
az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
Anote a saída deste comando para usar nas próximas etapas.
Crie o arquivo de configuração do k3s:
sudo nano /etc/rancher/k3s/config.yaml
Adicione o seguinte conteúdo ao
config.yaml
arquivo, substituindo o espaço reservado<SERVICE_ACCOUNT_ISSUER>
pela URL do emissor do cluster que você anotou anteriormente:kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
Salve o arquivo e saia do editor nano.
Reinicie o serviço k3s:
sudo systemctl restart k3s
Configurar a gestão de segredos
O gerenciamento de segredos para Operações IoT do Azure usa a extensão Repositório Secreto para sincronizar os segredos de um cofre de chaves do Azure e armazená-los na borda como segredos do Kubernetes. A extensão do Repositório Secreto requer uma identidade gerenciada atribuída pelo usuário com acesso ao cofre de chaves do Azure onde os segredos são armazenados. Para saber mais, consulte O que são identidades gerenciadas para recursos do Azure?.
Para configurar o gerenciamento de segredos:
Crie um cofre de chaves do Azure que é usado para armazenar segredos e conceda à sua conta de usuário permissões para gerenciar segredos com a
Key Vault Secrets Officer
função.Crie uma identidade gerenciada atribuída pelo usuário para a extensão Secret Store.
Use o comando az iot ops secretsync enable para configurar a instância do Azure IoT Operations para sincronização secreta. Este comando:
- Cria uma credencial de identidade federada usando a identidade gerenciada atribuída pelo usuário.
- Adiciona uma atribuição de função à identidade gerenciada atribuída pelo usuário para acesso ao cofre de chaves do Azure.
- Adiciona uma classe de provedor secreta mínima associada à instância de Operações do Azure IoT.
# Variable block AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>" RESOURCE_GROUP="<RESOURCE_GROUP>" USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>" KEYVAULT_NAME="<KEYVAULT_NAME>" #Get the resource ID of the user-assigned managed identity USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Get the resource ID of the key vault KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Enable secret synchronization az iot ops secretsync enable --instance $AIO_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \ --kv-resource-id $KEYVAULT_RESOURCE_ID
Agora que a configuração da sincronização secreta está concluída, você pode consultar Gerenciar segredos para sua implantação de Operações do Azure IoT para saber como usar segredos com as Operações do Azure IoT.
Configurar uma identidade gerenciada atribuída pelo usuário para conexões na nuvem
Alguns componentes do Azure IoT Operations, como pontos de extremidade de fluxo de dados, usam uma identidade gerenciada atribuída pelo usuário para conexões de nuvem. Recomendamos que você use uma identidade separada daquela que você usou para configurar o gerenciamento de segredos.
Crie uma identidade gerenciada atribuída pelo usuário que seja usada para conexões de nuvem.
Nota
Você precisará conceder a permissão de identidade para qualquer recurso de nuvem para o qual usará a identidade gerenciada.
Use o comando az iot ops identity assign para atribuir a identidade à instância do Azure IoT Operations. Este comando também cria uma credencial de identidade federada usando o emissor OIDC do cluster conectado indicado e a conta de serviço do Azure IoT Operations.
# Variable block AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>" RESOURCE_GROUP="<RESOURCE_GROUP>" USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>" #Get the resource ID of the user-assigned managed identity USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Assign the identity to the Azure IoT Operations instance az iot ops identity assign --name $AIO_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
Agora você pode usar essa identidade gerenciada em pontos de extremidade de fluxo de dados para conexões de nuvem.