Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure IoT Operations usa TLS para cifrar la comunicación entre todos los componentes. En este artículo se describe cómo administrar certificados para comunicaciones internas y externas y cómo traer su propio emisor de entidad de certificación (CA) para las comunicaciones internas en una implementación de producción.
Prerrequisitos
- Para administrar certificados para comunicaciones externas, necesita una instancia de Azure IoT Operations implementada con la configuración segura. Si ha implementado Operaciones de Azure IoT con la configuración de prueba, primero debe habilitar la configuración segura.
Administración de certificados para comunicaciones internas
Todas las comunicaciones de Azure IoT Operations se cifran mediante TLS. Para ayudarle a empezar, las operaciones de Azure IoT se implementan con una entidad de certificación raíz predeterminada y un emisor para los certificados de servidor TLS. Puede usar la configuración predeterminada para fines de desarrollo y pruebas. Para una implementación de producción, se recomienda usar su propio emisor de CA y una solución PKI empresarial.
Emisor autofirmado predeterminado y certificado de entidad de certificación raíz para certificados de servidor TLS
Para ayudarle a empezar, Operaciones de IoT de Azure se implementa con un emisor autofirmado predeterminado y un certificado CA raíz para los certificados de servidor TLS. Puede usar este emisor para desarrollo y pruebas. Operaciones de IoT de Azure usa cert-manager para administrar certificados TLS y trust-manager para distribuir conjuntos de confianza a componentes.
El certificado de entidad de certificación está autofirmado y no es de confianza para ningún cliente ajeno a las Operaciones de IoT de Azure. El asunto del certificado de entidad de certificación es
CN=Azure IoT Operations Quickstart Root CA - Not for Production
. Cert-Manager rota automáticamente el certificado de entidad de certificación.El certificado de entidad de certificación raíz se almacena en un secreto de Kubernetes denominado
azure-iot-operations-aio-ca-certificate
en el espacio de nombrescert-manager
.La parte pública del certificado de entidad de certificación raíz se almacena en un objeto ConfigMap denominado
azure-iot-operations-aio-ca-trust-bundle
en el espacio de nombresazure-iot-operations
. Puede recuperar el certificado de entidad de certificación del ConfigMap e inspeccionarlo con kubectl y openssl. El administrador de confianza mantiene el valor de ConfigMap actualizado cuando cert-manager rota el certificado de la entidad de certificación.kubectl get configmap azure-iot-operations-aio-ca-trust-bundle -n azure-iot-operations -o "jsonpath={.data['ca\.crt']}" | openssl x509 -text -noout
Certificate: Data: Version: 3 (0x2) Serial Number: <SERIAL-NUMBER> Signature Algorithm: sha256WithRSAEncryption Issuer: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production Validity Not Before: Sep 18 20:42:19 2024 GMT Not After : Sep 18 20:42:19 2025 GMT Subject: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: <MODULUS> Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: <SUBJECT-KEY-IDENTIFIER> Signature Algorithm: sha256WithRSAEncryption [Signature]
De forma predeterminada, ya hay un emisor configurado en el
azure-iot-operations namespace
denominadoazure-iot-operations-aio-certificate-issuer
. Se usa como emisor común para todos los certificados de servidor TLS para operaciones de IoT. El corredor MQTT usa un emisor creado a partir del mismo certificado de entidad de certificación que está firmado por el emisor autofirmado para emitir certificados de servidor TLS para el agente de escucha TLS predeterminado en el puerto 18883. Puede inspeccionar el emisor con el siguiente comando:kubectl get clusterissuer azure-iot-operations-aio-certificate-issuer -o yaml
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: creationTimestamp: "2024-09-18T20:42:17Z" generation: 1 name: azure-iot-operations-aio-certificate-issuer resourceVersion: "36665" uid: 592700a6-95e0-4788-99e4-ea93934bd330 spec: ca: secretName: azure-iot-operations-aio-ca-certificate status: conditions: - lastTransitionTime: "2024-09-18T20:42:22Z" message: Signing CA verified observedGeneration: 1 reason: KeyPairVerified status: "True" type: Ready
Traiga su propio emisor
En el caso de las implementaciones de producción, se recomienda configurar Azure IoT Operations con una PKI empresarial para administrar certificados y que traiga su propio emisor de CA que funcione con la PKI empresarial, en lugar de usar el emisor autofirmado predeterminado para emitir certificados TLS para las comunicaciones internas.
Para configurar Azure IoT Operations con su propio emisor para las comunicaciones internas, siga estos pasos antes de implementar una instancia en el clúster:
Siga los pasos descritos en Preparación del clúster para configurar el clúster.
Instalar cert-manager. Cert-manager administra los certificados TLS.
Instale trust-manager. Al instalar el administrador de confianza, establezca
trust namespace
en cert-manager. Por ejemplo:helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
Trust-manager se usa para distribuir un paquete de confianza a los componentes.
Cree el espacio de nombres de Operaciones de IoT de Azure.
kubectl create namespace azure-iot-operations
Implemente un emisor que funcione con cert-manager. Para obtener una lista de todos los emisores admitidos, consulte emisores de cert-manager.
El emisor puede ser de tipo
ClusterIssuer
oIssuer
. Si usaIssuer
, el recurso del emisor debe crearse en el espacio de nombres de Operaciones de IoT de Azure.Configure el conjunto de confianza en el espacio de nombres de Operaciones de IoT de Azure.
Para configurar el paquete de confianza, cree un ConfigMap en el espacio de nombres Operaciones de IoT de Azure. Coloque la parte de clave pública de su certificado de firma en el mapa de configuración con un nombre de clave de su elección.
Obtenga la parte de clave pública del certificado de entidad de certificación. Los pasos para adquirir la clave pública dependen del emisor que elija.
Cree el ConfigMap. Por ejemplo:
kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
Siga los pasos descritos en Implementación de Operaciones de IoT de Azure para implementar, con algunos cambios.
Agregue el parámetro
--user-trust
al preparar el clúster. Por ejemplo:az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME> -g <RESOURCE_GROUP> --user-trust
Agregue el parámetro
--trust-settings
con la información necesaria durante la implementación de Operaciones de IoT de Azure. Por ejemplo:
az iot ops create --subscription <SUBSCRIPTION_ID> -g <RESOURCE_GROUP> --cluster <CLUSTER_NAME> --custom-location <CUSTOM_LOCATION> -n <INSTANCE_NAME> --sr-resource-id <SCHEMAREGISTRY_RESOURCE_ID> --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
Administración de certificados para comunicaciones externas
La experiencia de administración de certificados para las comunicaciones externas usa Azure Key Vault como solución de almacén administrado en la nube. Los certificados se agregan al almacén de claves como secretos y se sincronizan con el perímetro como secretos de Kubernetes a través de la extensión de almacén de secretos de Azure Key Vault.
Por ejemplo, el conector para OPC UA usa la experiencia de administración de certificados para configurar la autenticación de aplicaciones cliente de OPC UA en un servidor OPC UA externo. Azure IoT Operations administra dos almacenes de certificados distintos para el conector para OPC UA: uno para la lista Confianza y otro para la lista emisor. Para obtener más información sobre cómo el conector de OPC UA usa certificados para establecer una confianza mutua con un servidor OPC UA, consulte Infraestructura de certificados de OPC UA para el conector para OPC UA.
Al implementar operaciones de Azure IoT con una configuración segura, puede empezar a agregar certificados a Azure Key Vault y sincronizarlos con el clúster de Kubernetes que se usará en los almacenes lista de confianza y lista de emisores para las conexiones de OPC UA:
Cargar certificado: carga un certificado que, a continuación, se agrega como secreto a Azure Key Vault y se sincroniza automáticamente con el clúster mediante la extensión Secret Store.
Sugerencia
- Vea los detalles del certificado una vez cargados para asegurarse de que tiene el certificado correcto antes de agregarlo a Azure Key Vault y sincronizarlo con el clúster.
- Utilice un nombre intuitivo para que pueda reconocer cuál de los secretos representa su secreto en el futuro.
Nota:
Simplemente cargar el certificado no agregará el secreto a Azure Key Vault ni lo sincronizará con el clúster. Debe seleccionar Aplicar para que se apliquen los cambios.
Agregar desde Azure Key Vault: agregue un secreto existente desde Azure Key Vault para que se sincronice con el clúster.
Nota:
Asegúrese de seleccionar el secreto que contiene el certificado que desea sincronizar con el clúster. Al seleccionar un secreto que no es el certificado correcto, se producirá un error en la conexión.
Con la vista de lista puede administrar los certificados sincronizados. Puede ver todos los certificados sincronizados y el almacén de certificados al que está sincronizado:
- Para obtener más información sobre los almacenes de lista de confianza y lista de emisores, consulte Configuración de la infraestructura de certificados OPC UA para el conector OPC UA.
También puede eliminar certificados sincronizados. Al eliminar un certificado sincronizado, solo elimina el certificado sincronizado del clúster de Kubernetes y no elimina la referencia secreta independiente de Azure Key Vault. Debe eliminar manualmente el secreto de certificado del almacén de claves.