Habilitar configuración segura en Operaciones de IoT de Azure
La configuración segura para Operaciones de IoT de Azure incluye la configuración de la administración de secretos y una identidad administrada asignada por el usuario para las conexiones en la nube; por ejemplo, un servidor OPC UA o puntos de conexión de flujo de datos.
En este artículo, se proporcionan instrucciones para habilitar la configuración segura si no lo ha hecho durante la implementación inicial.
Requisitos previos
Una instancia de Operaciones de IoT de Azure implementada con la configuración de prueba. Por ejemplo, ha elegido Configuración de prueba al seguir las instrucciones de Implementación de Operaciones de IoT de Azure en un clúster de Kubernetes habilitado para Arc.
CLI de Azure instalada en la máquina de desarrollo. Este escenario requiere la versión 2.64.0 o posterior de la CLI de Azure. Use
az --version
para comprobar la versión yaz upgrade
para actualizarla si es necesario. Para obtener más información, consulte Cómo instalar la CLI de Azure.La versión más reciente de la extensión connectedk8s para la CLI de Azure. Use el siguiente comando para agregar la extensión o actualizarla a la versión más reciente:
az extension add --upgrade --name connectedk8s
Extensión Operaciones de IoT de Azure para la CLI de Azure. Use el siguiente comando para agregar la extensión o actualizarla a la versión más reciente:
az extension add --upgrade --name azure-iot-ops
Habilitación del clúster para la configuración segura
Para habilitar la sincronización de secretos para la instancia de Operaciones de IoT de Azure, el clúster debe estar habilitado como emisor de OIDC y para la federación de identidades de carga de trabajo. Esta configuración es necesaria para que la extensión Secret Store sincronice los secretos de un almacén de claves de Azure y los almacene en el perímetro como secretos de Kubernetes.
En el caso de los clústeres de Azure Kubernetes Service (AKS), las características de identidad del emisor de OIDC y de la carga de trabajo solo se pueden habilitar en el momento de la creación del clúster. En el caso de los clústeres de AKS Edge Essentials, el script automatizado habilita estas características de forma predeterminada. En el caso de los clústeres de AKS en Azure Local, siga los pasos para implementar y configurar la identidad de carga de trabajo en un clúster de AKS habilitado por Azure Arc para crear un clúster si no tiene uno con las características necesarias.
En el caso de los clústeres k3s en Kubernetes, puede actualizar un clúster existente. Para habilitar y configurar una versión de prueba, siga los pasos descritos a continuación:
Actualice el clúster para habilitar la identidad del emisor y la carga de trabajo de OIDC.
az connectedk8s update -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --enable-oidc-issuer --enable-workload-identity
Si ha habilitado las características de identidad de carga de trabajo y emisor de OIDC al crear el clúster, no es necesario volver a ejecutar el comando anterior. Use el siguiente comando para comprobar el estado del emisor de OIDC y las características de identidad de carga de trabajo del clúster:
az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
Obtenga la dirección URL del emisor del clúster.
az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
Anote la salida de este comando para usarla en los pasos siguientes.
Cree el archivo de configuración k3s:
sudo nano /etc/rancher/k3s/config.yaml
Agregue el siguiente contenido al archivo
config.yaml
, reemplazando el marcador de posición<SERVICE_ACCOUNT_ISSUER>
por la dirección URL del emisor del clúster que anotó anteriormente:kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
Guarde el archivo y salga del editor nano.
Reinicie el servicio k3s:
sudo systemctl restart k3s
Configuración de la administración de secretos
La administración de secretos para Operaciones de IoT de Azure usa la extensión Secret Store para sincronizar los secretos de un almacén de claves de Azure y almacenarlos en el perímetro como secretos de Kubernetes. La extensión Secret Store requiere una identidad administrada asignada por el usuario con acceso al almacén de claves de Azure donde se almacenan los secretos. Para más información, consulte ¿Qué son las identidades administradas de recursos de Azure?
Para configurar la administración de secretos:
Crear un Azure Key Vault que se usa para almacenar secretos y conceder a su cuenta de usuario permisos para administrar secretos con el rol de
Key Vault Secrets Officer
.Crear una identidad administrada asignada por el usuario para la extensión Almacén secreto.
Use el comando az iot ops secretsync enable para configurar la instancia de Operaciones de IoT de Azure para la sincronización de secretos. Este comando:
- Crea una credencial de identidad federada mediante la identidad administrada asignada por el usuario.
- Agrega una asignación de roles a la identidad administrada asignada por el usuario para acceder al Azure Key Vault.
- Agrega una clase de proveedor de secretos mínima asociada a la instancia de Operaciones de IoT de Azure.
# 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
Ahora que se ha completado la configuración de sincronización de secretos, puede consultar Administración de secretos de la implementación de Operaciones de IoT de Azure para aprender a usar secretos con Operaciones de IoT de Azure.
Configuración de una identidad administrada asignada por el usuario para conexiones en la nube
Algunos componentes de Operaciones de IoT de Azure, como los puntos de conexión de flujo de datos, usan una identidad administrada asignada por el usuario para las conexiones en la nube. Se recomienda usar una identidad independiente de la que usó para configurar la administración de secretos.
Crear una identidad administrada asignada por el usuario que se usa para las conexiones en la nube.
Nota:
Deberá conceder el permiso de identidad al recurso en la nube para el que usará la identidad administrada.
Use el comando az iot ops identity assign para asignar la identidad a la instancia de Operaciones de IoT de Azure. Este comando también crea una credencial de identidad federada mediante el emisor OIDC del clúster conectado indicado y la cuenta de servicio de operaciones de Azure IoT.
# 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
Ahora puede usar esta identidad administrada en puntos de conexión de flujo de datos para las conexiones en la nube.