Creación y gestión de secretos para una instancia de gemelo digital
Si recibe datos de un dispositivo, debe utilizar la autenticación con la instancia de gemelo digital. En este escenario se explica cómo utilizar un secreto para autenticar una instancia de gemelo digital para un dispositivo.
El secreto es la contraseña del dispositivo. No se recomienda utilizar un secreto para la producción, solo utilice secretos de almacén para probar la configuración. Para la producción, utilice un certificado mTLS para la autenticación de dos instancias digitales.
Tareas
- Crear un secreto
- Crear o actualizar un ID de autenticación de instancia de gemelo digital
- Enviar datos
- Actualizar y gestionar secretos
- Solución de problemas
- Asegúrese de que tiene los permisos necesarios. Un administrador otorga acceso mediante la creación de las políticas necesarias. Para obtener más información, consulte Requisitos para conocer las políticas necesarias para los secretos y Detalles de política para la plataforma Internet of Things (IoT) para conocer las políticas necesarias para los recursos IoT.
- Agregue estas políticas al compartimento para permitir el acceso.Política de secretos de almacén de dominio IoT
Al crear una instancia de gemelo digital si utiliza un secreto para la autenticación, necesita la siguiente política para que un dominio IoT pueda leer el secreto en un almacén específico.
Permita a cualquier usuario IoT leer secretos en un compartimento y un almacén específicos para un dominio IoT:
Allow any-user to {SECRET_BUNDLE_READ, SECRET_READ} in compartment <compartment-name> where ALL {request.principal.type = 'iotdomain', target.vault.id = '<vault-OCID>'}
- Confirme que tiene un almacén, consulte Lista de almacenes o creación de un almacén. Para obtener más información, consulte Gestión de almacenes.Política de almacén
Para crear un almacén, el usuario debe agregar políticas al compartimento en el que desea crear un almacén y una clave.
Vamos a un grupo de usuarios a gestionar almacenes para un compartimento específico.
Allow group <group-name> to manage vaults in compartment <compartment-name> - Después de crear un almacén, debe tener una clave de cifrado simétrica (HSM) protegida por hardware existente en Oracle Cloud Infrastructure (OCI). Para comprobar si tiene una clave de cifrado maestra, consulte Listado de claves. O para crear una nueva clave que utilice el modo de protección de HSM, consulte Creating a Master Encryption Key.
Para obtener más información, consulte Overview of Vaults and Key Management y Rotating a Key.
Política de clavesVamos a un grupo de usuarios a gestionar claves para un compartimento específico.
Allow group <group-name> to manage keys in compartment <compartment-name>
Paso 1: Creación de un secreto
El secreto de texto sin formato es la contraseña del dispositivo. No se recomienda utilizar un secreto para la producción, solo utilice secretos de almacén para probar la configuración.
Cuando se conecte al dispositivo, utilice el contenido secreto de texto sin formato. Para obtener más información, consulte Gestión de secretos.
Paso 2: Crear una instancia gemela digital con un ID de autenticación secreto
Para autenticar un dispositivo para enviar datos, cree una instancia de gemelo digital mediante el parámetro --auth-id con el <secret-OCID> creado en el paso anterior. Utilice este comando y parámetros para crear una instancia de gemelo digital que utilice un secreto para autenticarse.
- Para el valor del parámetro
--external-key, sustituya<device-username-or-generated>por el nombre de usuario del dispositivo o, si no incluye la clave externa, se genera y aparece en la respuesta. - Sustituya
<secret-OCID>por el OCID del secreto que desea utilizar.
oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <secret-OCID> --external-key <device-username-or-generated>Para obtener una lista completa de los parámetros de la CLI, consulte oci iot digital-twin-instance create y consulte Creación de una instancia de gemelo digital para obtener más información.
También puede actualizar el parámetro --auth-id de una instancia de gemelo digital existente con el OCID de un secreto.
Paso 3: Enviar datos
Envíe datos para probar la configuración.
- Nombre de usuario del dispositivo: utilice
external-keyde la instancia gemela digital como nombre de usuario del dispositivo. - Contraseña de dispositivo: está asociada al ID de autenticación de la instancia de gemelo digital. Si la instancia de gemelo digital utiliza un OCID secreto de almacén para la autenticación, utilice el contenido del secreto de texto sin formato como contraseña del dispositivo.
Consulte Obtención del contenido de un secreto, Visualización de los detalles de un secreto o Visualización del contenido y las propiedades de un secreto y las versiones del secreto (paquetes de secretos) para buscar los detalles del secreto.
El uso de un secreto de almacén como contraseña de dispositivo solo se recomienda para pruebas, no para producción. Para la producción, la instancia de gemelo digital debe utilizar un certificado mTLS para autenticación.
Uso de Curl
Shells de estilo POSIX: utilice este comando
curlcuando utilice bash, zsh, terminal macOS, Linux o Git Bash en Windows.curl -u '<digital-twin-instance-external-key>:<device-password>' \ -H 'Content-Type: text/plain' \ -d 'sample data 1' \ 'https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic'Windows PowerShell: utilice este comando
curl.exepara enviar una solicitud POST con un cuerpo de solicitud mediante-d.curl.exe -u "<digital-twin-instance-external-key>:<device-password>" ` -H "Content-Type: text/plain" ` -d "sample data 1" ` "https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic"Al completar el Paso 4: Crear una instancia gemela digital, si ha definido el valor del parámetro de clave externa con comillas, debe incluir las comillas al enviar los datos:
"external-key". Para obtener más información sobre las mejores prácticas, consulte Solución de problemas.Utilice cualquier cliente MQTT, en este ejemplo se utiliza MQTTX con la siguiente configuración.
- Descargue y configure MQTTX siguiendo estas instrucciones. Consulte Getting Started with MQTTX. Abra MQTTX.
- Seleccione + Nueva conexión para crear una nueva conexión.
- Introduzca el valor
<unique-id>de la clave externa como Nombre de usuario. Puede encontrar la clave externa en la respuestaoci iot digital-twin-instance create, del Paso 4: Creación de una instancia gemela digital anterior:"external-key": "<unique-id>" - Introduzca la contraseña del dispositivo. Si está probando con un secreto de almacén, utilice el contenido del secreto de texto sin formato. Para un entorno de producción seguro, utilice un certificado mTLS.
- Introduzca el Host. Seleccione el protocolo
mqtts://en la lista desplegable de hosts e introduzca el host del dispositivo:<domain-short-id>.device.iot.<region>.oci.oraclecloud.comen el dominio IoT. - Introduzca el puerto, por ejemplo:
8883Nota
Actualmente, MQTT Secure (MQTTS) solo está soportado mediante el puerto8883. - Active el conmutador SSL/TLS.
- Active el conmutador SSL Secure.
- Para el certificado, seleccione la opción Certificado de servidor firmado por CA.
- Cuando configure la conexión MQTTX, elija el comportamiento de la sesión intencionadamente. Utilice
clean sessionpara una reconexión sin estado o desactive la sesión limpia con un ID de cliente estable para una sesión persistente que reanude las suscripciones existentes. El valorLast-Will-Retainsolo controla si se retiene el mensaje Last Will y no controla la persistencia de la suscripción. - Defina Último valor de QoS en 1.
- Seleccione Connect (Conectar).
Después de finalizar estos pasos, tiene una instancia de gemelo digital en la plataforma IoT que puede recibir datos de un dispositivo.
Actualizar un secreto o crear un nuevo secreto
Mejores prácticas de rotación secreta
Utilice un ciclo de vida definido para rotar las credenciales del dispositivo almacenadas en secretos de OCI Vault. Rote el contenido del secreto regularmente para reducir la exposición de credenciales y soportar los requisitos de auditoría/conformidad.
Política de línea base recomendada: rotar el contenido del secreto cada 90 a 180 días, revisar la cadencia de rotación anualmente y rotar inmediatamente cuando se produzca un evento de seguridad.
Rote el contenido del secreto inmediatamente cuando cambie el riesgo, como:
- Sospecha de compromiso secreto o acceso no autorizado.
- Incidente de seguridad de integración o dispositivo.
- Cambios de política o conformidad que requieren una duración de credencial más corta.
Cuando sea posible, utilice la automatización para ventanas de rotación predecibles y la rotación manual para eventos de emergencia.
Actualización de un secreto existente (el mismo OCID de secreto)
Utilice la actualización de un secreto existente para la rotación. Esta opción mantiene el mismo OCID secreto y el ciclo de vida:
- Uso de la consola: cree una nueva versión del secreto y, a continuación, edite las propiedades del secreto si es necesario.
- Uso de la CLI o la API: actualice el contenido del secreto; OCI crea automáticamente una nueva versión del secreto.
- Comportamiento sin tiempo de inactividad: el OCID secreto permanece igual, por lo que la instancia de gemelo digital puede seguir utilizando el
--auth-idexistente. - Preparación para el rollback: las versiones anteriores permanecen disponibles (a menos que se supriman) para un rollback, si es necesario.
Crear nuevo secreto (OCID de nuevo secreto)
Utilice un nuevo secreto cuando necesite un nuevo OCID secreto con un ciclo de vida independiente. Los casos de Uso Típicos incluyen:
- Credenciales únicas: un secreto por dispositivo o por instancia de gemelo digital.
- Separación del entorno: diferentes políticas, compartimentos, almacenes o límites de gobernanza.
- Nuevos requisitos de propiedad o nomenclatura: limpieza de la separación para operaciones y auditoría.
Después de crear un nuevo secreto, actualice la instancia de gemelo digital con el nuevo --auth-id.
Lista de comprobación de validación después de rotación de secreto
- Confirme que la nueva versión del secreto está activa y se puede recuperar.
- Verifique que la instancia de gemelo digital sigue resolviendo el
--auth-idconfigurado. - Valide la autenticación del dispositivo y el flujo de datos a través de HTTPS o MQTTS.
- Registre la fecha de rotación, la versión secreta y los resultados de las pruebas de auditoría.
Para obtener más información sobre los controles de ciclo de vida, consulte Actualización de reglas de un secreto, Reglas secretas y Preguntas frecuentes sobre secretos.
Resolución de errores de autorización
Error 404: error de servicio: NotAuthorizedOrNotFound
Si recibe un mensaje de error de servicio IoT relacionado con la autorización, podría estar relacionado con un secreto o con el parámetro de ID de autenticación --auth-id en la instancia de gemelo digital. Confirme que estos valores son correctos:
- Confirme que el parámetro
--auth-idde la instancia de gemelo digital contiene el OCID secreto correcto. - Confirme que tiene la política en el compartimento correspondiente para el almacén asociado, el secreto o el recurso IoT.
- En el servicio Gestión de secretos, confirme que el secreto está activo, enumere secretos o consulte el contenido de un secreto.
Si crea una instancia de gemelo digital con esta respuesta 404:
...ServiceError:
{
"client_version": "Oracle-PythonSDK/2.161.0, Oracle-PythonCLI/3.68.0",
"code": "NotAuthorizedOrNotFound",
"logging_tips": "Please run the OCI CLI command using --debug flag to find more debug information.",
"message": "Resource Auth id with OCID [ocid1.vaultsecret.oc1.iad.unique-id] not found",
"opc-request-id": "unique-id",
"operation_name": "create_digital_twin_instance",
"request_endpoint": "POST https://iot.region.oci.oraclecloud.com/20250531/digitalTwinInstances",
"status": 404...Por lo general, es por una de estas razones:
- El recurso no existe. Para confirmar los secretos a los que tiene acceso, utilice el comando
oci secrets secret-bundle get, consulte la solución a continuación.
oci secrets secret-bundle get --secret-id ocid1.vaultsecret.oc1.iad.unique-id - No tiene la política correcta para que el dominio IoT lea la credencial de secreto de almacén. Agregue esta política al compartimento para el almacén para que el dominio IoT pueda leer secretos en un almacén específico.
Allow any-user to {SECRET_BUNDLE_READ, SECRET_READ} in compartment <compartment-name> where ALL {request.principal.type = 'iotdomain', target.vault.id = '<vault-OCID>'}- Puede que el secreto no esté activo.