Escenario: Conexión directa a la base de datos IoT
En este escenario se muestra cómo configurar el acceso para establecer una conexión directa a la base de datos IoT. Cada grupo de dominios IoT utiliza una instancia de base de datos dedicada, que comparten todos los dominios IoT de ese grupo de dominios.
El esquema de base de datos de dominio IoT contiene los metadatos y datos de los recursos de gemelo digital asociados a un dominio IoT.
Complete los siguientes pasos para configurar el acceso a los datos IoT para que pueda consultar el esquema de la base de datos IoT para ver tablas y colas de eventos transaccionales directamente en la base de datos.
Paso 1: Crear una VCN para permitir que se muestre la conectividad directa de la base de datos al host de datos
Configure una VCN con una subred y un gateway de servicio para acceder a una conexión privada y segura directamente a la base de datos.
- En su arrendamiento de Internet of Things, conéctese como administrador.
- Abra el menú de navegación, seleccione Red y, a continuación, seleccione Redes virtuales en el cloud.
- En la página de lista Redes virtuales en la nube, seleccione Crear VCN.
- Introduzca un nombre descriptivo para la VCN. No tiene que ser único y no se puede cambiar posteriormente en la consola (aunque puede cambiarlo más adelante con la API o la CLI del dominio de identidad). Evite introducir información confidencial.
- Verifique el compartimento donde desea crear la VCN y, si es necesario, seleccione otro compartimento. Nota
La VCN debe estar en la misma región que el grupo de dominios IoT, el dominio IoT y cualquier otro recurso IoT. El número máximo de VCN que puede asociar a un grupo de dominios IoT es 5. - En la sección Bloques de IPv4 CIDR, introduzca un rango de IP que pueda acceder a la base de datos, por ejemplo:
10.0.0.0/16
Para obtener una lista completa de la configuración, consulte Creación de una VCN.
- Seleccione Create a VCN.
- Se abre la página de detalles Red virtual en la nube, seleccione el separador Subredes. Seleccione Create Subnet.
Para obtener más información, consulte Creating a Subnet y Overview of VCNs and Subnets.
- En la página Crear una subred:
- Introduzca un nombre fácil de recordar para la subred. No es necesario que sea único y no se puede cambiar posteriormente en la consola (podrá cambiarlo más adelante con la API de dominio de identidad). Evite introducir información confidencial.
- Verifique el compartimento en el que desea crear la subred. Seleccione otro compartimento si es necesario.
- Seleccione el tipo de subred, Regional. Una subred regional significa que la subred puede contener recursos en cualquiera de los dominios de disponibilidad de la región.
- Introduzca un bloque de IPv4 CIDR, por ejemplo,
10.0.0.0/16
. - Seleccione el acceso de subred privada para prohibir la dirección IP pública para las instancias de esta subred.
- Seleccione la casilla de control Usar nombres de host DNS en esta subred.
- Introduzca el nombre de dominio DNS con el nombre de etiqueta DNS de subred:
<subnet_DNS_label>.<VCN_DNS_label>.oraclevcn.com
- Para el compartimento Opciones de DHCP, seleccione el compartimento con los recursos IoT. Para las opciones de Dhcp, seleccione las opciones de Dhcp predeterminadas.
- Para el compartimento de lista de seguridad, seleccione el compartimento con los recursos IoT. Seleccione Lista de seguridad.
- Seleccione Create Subnet.
- Se abre la página de detalles Red virtual en la nube, seleccione el separador Gateways. En Gateways de servicio, seleccione Crear gateway de servicio.
Para obtener más información, consulte las etiquetas CIDR de servicio disponibles en la página Creación de un gateway de servicio.
- Introduzca un nombre para el gateway de servicio. No tiene que ser único. Evite introducir información confidencial. Seleccione el compartimento en la que desea crear el gateway. Seleccione otro compartimento si es necesario.
- En Servicios, seleccione la opción: Todos <region> los servicios de Oracle Services Network.
- Seleccione Opciones avanzadas, en Asociación de tabla de rutas, seleccione el compartimento de tabla de rutas. Utilice el compartimento para los recursos IoT asociados. Sus recursos IoT pueden estar en distintos compartimentos y deben estar en la misma región.
- Seleccione Create Service Gateway.
- Se abre la página de detalles Redes virtuales en la nube, seleccione el separador Enrutamiento.
- En Tablas de rutas, seleccione la Tabla de rutas por defecto.
- Seleccione el separador Reglas de ruta y seleccione Agregar reglas de ruta.Para obtener más información, consulte Adición de una regla de enrutamiento.
- En Tipo de destino, seleccione Gateway de servicio.
- For Destination Service select All <region> Services In Oracle Services Network .
- Seleccione Compartimento de gateway de servicio de destino: seleccione el mismo compartimento que seleccionó al crear el gateway de servicio en el paso anterior.
- Seleccione el Gateway de servicio de destino creado en el paso anterior.
- Seleccione Agregar reglas de ruta.
- Se abre la página de detalles Red virtual en la nube, seleccione el separador Seguridad. Seleccione Crear grupo de seguridad de la red.
- Introduzca un nombre y seleccione el mismo compartimento que ha seleccionado en el paso anterior.
- En la sección Regla, en Dirección, seleccione Salida.
- Para el Tipo de destino, seleccione CIDR.
- En el campo CIDR de destino, introduzca el CIDR para su entorno, por ejemplo:
0.0.0.0/0
- En IP Protocols (Protocolos IP), seleccione All Protocols (Todos los protocolos).
- Seleccione Crear. Para obtener más información, consulte Network Security Group.
- Vea los detalles del grupo de seguridad de red.
- On the Virtual cloud network details page, copy the OCID for the VCN or VCNs. Utilice este OCID u OCID de VCN en el siguiente paso.
Paso 2: Agregue el OCID de la VCN al grupo de dominios IoT
Para realizar los siguientes pasos, el usuario debe tener al menos acceso de lectura a la VCN o las redes virtuales en la red que desea agregar al grupo de dominios IoT. To confirm if you have read access to the VCN, see Getting a VCN's Details to view the VCNs you have access to.
Allow any-user to {VCN_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
Utilice el comando
oci iot domain-group configure-data-access
y los parámetros necesarios para configurar el acceso a los datos para el grupo de dominios IoT. Sustituya<vcn-ocids>
por los OCID de las VCN para el grupo de dominios IoT. En función de la configuración, puede incluir un OCID de VCN o varios OCID de VCN con el siguiente formato:Para obtener instrucciones sobre cómo utilizar la consola o la API para agregar la VCN al grupo de dominios IoT, consulte Configuración de acceso a datos para un grupo de dominios IoT.oci iot domain-group configure-data-access --db-allow-listed-vcn-ids '["ocid1.vcn.OCID","ocid2.vcn.OCID"]' --iot-domain-group-id <domain-group-OCID>
Nota
El número máximo de redes virtuales en la nube que puede asociar a un grupo de dominios IoT es 5.Tras unos minutos, utilice el comando
oci iot domain-group get
y los parámetros necesarios para obtener los detalles del grupo de dominios IoT, incluidos los detalles de conexión a la base de datos del grupo de dominios, para confirmar que está configurado. Sustituya<iot-domain-group-OCID>
por el OCID del grupo de dominios IoT:oci iot domain-group get --iot-domain-group-id <iot-domain-group-OCID>
En esta respuesta de ejemplo se muestra que el grupo de dominios está activo,
"lifecycleState": "ACTIVE"
, y si está configurado, esta respuesta incluye los detalles de conexión a la base de datos para el grupo de dominios:db-allow-listed-vcn-ids
: observe que se muestra la VCN.db-connection-string
db-token-scope
{ "data": { "compartment-id": "<compartment-OCID>", "data-host": "
<domain-group-short-id>.iot-data.<region>.oci.oraclecloud.com
", "db-allow-listed-vcn-ids": '["<vcn-OCID>"]', "db-connection-string": null, "db-token-scope": null, "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/user", "CreatedOn": "2025-08-05T18:15:41.260Z" } }, "description": null, "display-name": "<your-iot-domain-group-name>", "freeform-tags": {}, "id": "<domain-group-OCID>", "lifecycle-state": "ACTIVE", "system-tags": {}, "time-created": "2025-08-05T18:15:43.054000+00:00", "time-updated": "2025-08-05T18:27:53.655000+00:00" }, "etag": "<unique-id>" }
Paso 3: Crear una instancia informática para el acceso SSH
Al crear una instancia informática y una red virtual en la nube (VCN) en Oracle Cloud Infrastructure, se proporciona acceso de shell seguro (SSH) a los recursos informáticos y se crea un entorno de red aislado y seguro para la máquina virtual. La VCN determina cómo se accede a la instancia, mientras que la instancia informática es el servidor virtual al que necesita conectarse.
Puede crear una instancia informática para alojar las aplicaciones, lo que proporciona potencia informática para la carga de trabajo y se dirige a una red virtual en la nube (VCN) para crear la instancia en una red privada y segura en la nube, que controla su conectividad y aislamiento de otras redes y de la red pública de Internet. El uso de una VCN es esencial para la seguridad y la conectividad de red, lo que le permite definir subredes, gateways y reglas para gestionar cómo se comunican las instancias con otros recursos. Para obtener más información, consulte Visión general de las redes virtuales en la nube y las subredes y Visión general del servicio informático.
- Abra el menú de navegación y seleccione Recursos informáticos. En Recursos informáticos, seleccione Instancias. Seleccione Crear instancia.
- Introduzca un nombre para la instancia. Puede agregar o cambiar el nombre posteriormente. No es necesario que el nombre sea único porque un identificador de Oracle Cloud (OCID) ya identifica de manera única la instancia. Evite introducir información confidencial. Seleccione el compartimento en el que se va a crear la instancia. Todos los recursos IoT deben estar en la misma región.
- En algunos casos, se pueden aplicar las opciones predeterminadas. Si desea configurar opciones específicas para la instancia informática, consulte Creación de una instancia. Seleccione el dominios de disponibilidad en los que desea crear la instancia. Seleccione Next (Siguiente).
- En Seguridad, cambie el conmutador para activar la instancia blindada. Seleccione Next (Siguiente).
- Confirme que la opción Seleccionar red virtual en la nube existente está seleccionada.
- Seleccione el compartimento de red en la nube virtual y la red virtual en la nube creada en el paso anterior.
- En Subred, confirme que la opción Seleccionar subred existente está seleccionada. Seleccione la subred regional creada en el paso anterior.
- En Agregar claves SSH, confirme la opción para Generar un par de claves para mí.
- Seleccione Download private key. Oracle Cloud Infrastructure genera un par para la instancia de claves RSA. La clave privada se descarga para que pueda conectarse a la instancia mediante SSH. Seleccione Next (Siguiente).
- Seleccione Crear.
Paso 4: Creación de un grupo dinámico de dominio de identidad
- En su arrendamiento IoT, conéctese como administrador a la consola de Oracle Cloud Infrastructure.
- Abra el menú de navegación y seleccione Identity & Security. En Identidad, seleccione Dominios.
- Seleccione el separador Grupos dinámicos y seleccione Crear grupo dinámico.
- Introduzca un nombre y, opcionalmente, una descripción. Seleccione Hacer coincidir cualquiera de las reglas definidas a continuación.
- Para la regla 1, introduzca la siguiente sustitución de
instance-OCID
por el OCID de la instancia informática creada en el paso anterior.any{instance.id='instance-OCID'}
Puede encontrar el OCID de instancia informática en la página de detalles de la instancia. Abra el menú de navegación y seleccione Recursos informáticos. En Recursos informáticos, seleccione Instancias. Seleccione la instancia que desea utilizar para abrir la página Detalles de instancia.
La instancia debe estar en la misma región que todos los recursos IoT.
- Seleccione Crear. La información de grupo dinámico se muestra con el OCID de grupo dinámico.
Paso 5: Crear un bastion
- En su arrendamiento IoT, conéctese como administrador a la consola de Oracle Cloud Infrastructure.
- Abra el menú de navegación, seleccione Identidad y seguridad y, a continuación, Bastión.
- En Configurar red, seleccione el compartimento de red virtual en la nube de destino y seleccione la red virtual en la nube de destino creada en el paso anterior.
- Seleccione el compartimento de subred de destino y seleccione la subred de destino creada en el paso anterior.
- Para la lista de permitidos del bloque CIDR, agregue uno o más rangos a las direcciones en notación CIDR que desee permitir la conexión a sesiones alojadas por este bastión, por ejemplo:
0.0.0.0/0
Introduzca un bloque CIDR en el campo de entrada y, a continuación, seleccione el valor o pulse Intro para agregar el valor a la lista. El número máximo permitido de bloques de CIDR es 20. Para obtener una lista completa de las opciones, consulte Creación de un bastión.
Un rango de direcciones más limitado ofrece mayor seguridad.
- Seleccione Agregar a lista.
- Seleccione Crear bastión.
- Se abre la página de detalles del bastión, con el OCID de este bastión.
- Seleccione el separador Sesiones y seleccione Crear sesión.
- En Session type (Tipo de sesión), seleccione SSH port forwarding session (Sesión de reenvío de puertos SSH). Introduzca un nombre de sesión. Para obtener más información, consulte Creación de una sesión de reenvío de puerto en Bastion.
- En Conectar al host de destino mediante, seleccione Nombre de instancia.
- Seleccione el compartimento de instancia informática y la instancia informática creada en el paso anterior.
- Introduzca el número de puerto al que desea conectarse en el recurso de destino, por ejemplo: un servidor SSH en una instancia de Linux:
22
(valor por defecto) - En Agregar clave SSH, seleccione Generar par de claves SSH. Seleccione Guardar clave privada y Guardar clave pública.
- En Advanced options (Opciones avanzadas), Session configuration Maximum session time-to-live (Tiempo máximo de duración de la sesión) es 180 y el intervalo es minutes (minutos). Seleccione Crear sesión. Se abre la página de lista de sesiones.
- Al final de la fila de la sesión que desea utilizar, seleccione el menú Acciones y seleccione Copiar comando SSH.
- Creación de una sesión de reenvío de puertos SSH a una máquina virtual, un túnel de reenvío de puertos SSH. Para ello, abra la línea de comandos o el terminal local y ejecute el comando SSH personalizado para su entorno.
Sustituya
<path-to-SSH-private-Key>
: por la ruta de acceso completa al archivo de clave privada correspondiente a la clave pública que descargó al crear la sesión de reenvío de puerto en el paso anterior. Sustituya<localPort>
: por un puerto local disponible en la máquina que desea utilizar para el túnel. Este es el puerto al que se conectará localmente para acceder al servicio reenviado.
Por ejemplo:ssh -i <path-to-SSH-private-Key> -p <localPort>:<targetResourceIP>:<targetPort> <sessionOCID>@<bastionPublicIP> -N
Siga las indicaciones para conectarse. Una vez que se esté ejecutando el comando SSH y se haya establecido el túnel al host de Bastion, puede acceder al servicio del recurso de destino conectándose al host de Bastion configurado en el paso anterior.ssh -i <privateKey> -p 1224:opc@127.0.0.1
[opc@compute-instance-name ~]$
- Instale la CLI de OCI.
El siguiente ejemplo es para Oracle Linux 9.
Utilice el comandodnf
para ejecutar el script del instalador de la interfaz de línea de comandos (CLI) de Oracle Cloud Infrastructure (OCI). Para obtener más información, consulte Interfaz de línea de comandos (CLI). Para instalar la CLI en otros sistemas operativos y entornos, consulte Installing the CLI.sudo dnf install -y python39-oci-cli
- Ahora puede utilizar los comandos de la CLI
oci iot
.
Paso 6: Agregar su grupo dinámico de dominio de identidad de OCI al dominio IoT
Si el acceso a los datos para el dominio IoT ya está configurado, utilice el comando oci iot domain get
para confirmar los detalles de conexión a la base de datos para un dominio IoT existente. Para obtener más información, consulte Getting an IoT Domain's Details.
O bien, utilice este comando oci iot domain configure-direct-data-access
y los parámetros necesarios para configurar el acceso de un dominio IoT para conectarse directamente a la base de datos.
Sustituya el OCID de arrendamiento por el OCID de arrendamiento IoT de su entorno y sustituya por el nombre del grupo de identidades por el grupo dinámico de identidades, siguiendo estas directrices.
Para el parámetro <identity-group-name>
, puede hacer referencia al grupo de identidades de los usuarios o al grupo dinámico de identidades. En este ejemplo, se hace referencia al grupo dinámico configurado en el paso anterior:
oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID>:<identity-group-name>"]'
Si <identity-domain-name>
no está en el dominio de identidad por defecto, debe especificar <identity-domain-name>
. Por ejemplo: <tenancy-OCID>:<identity-domain-name>/<identity-group-name>
oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID>:<identity-domain-name>/<identity-group-name>"]'
Paso 7: Recuperación de db-token del servicio de identidad mediante el ámbito db-token para conectarse a la base de datos
Tanto el usuario como la aplicación que se ejecuta en la máquina virtual o las máquinas, que se encuentran en la VCN incluida en la lista de permitidos, y pueden recuperar db-token
del servicio de identidad de IAM mediante db-token-scope
mediante el principal de instancia.
Utilice este comando: oci iam db-token get --scope --auth instance_principal
oci iam db-token get
para obtener el token de instancia. Sustituya urn:oracle:db::id::<database-compartment-OCID> por el ámbito de token de base de datos para el grupo de dominios IoT. oci iam db-token get --scope <urn:oracle:db::id::<database-compartment-OCID> --auth instance_principal
Por ejemplo:iam db-token get --auth instance_principal --scope urn:oracle:db::id::<database-compartment-OCID>
Private key written at /home/opc/.oci/db-token/oci_db_key.pem
db-token written at: /home/opc/.oci/db-token/token
db-token is valid until 2025-08-30 21:09:45
Paso 8: Uso de una Cadena de Conexión TLS de URL de JDBC para el Controlador JDBC Thin sin una Cartera para Conectar a la Base de Datos
Tanto el usuario como la aplicación pueden establecer una conexión al host de datos mediante db-connection-string
y el token de OCI para consultar los datos del dominio IoT.
A continuación, el cliente de base de datos utiliza db-token
recuperado, por ejemplo: SQL*Plus, SQLcl o un controlador JDBC para autenticar la conexión a una base de datos Oracle configurada para la autenticación de token de IAM.
Al conectarse a la base de datos, la aplicación JDBC proporciona un token a la base de datos. La base de datos verifica el token con una clave pública que solicita del servicio de autenticación y recupera la información de pertenencia al grupo de usuarios correspondiente para buscar las asignaciones de esquema y rol de la base de datos a fin de completar la autorización de usuario para la base de datos.
./sql /@"jdbc:oracle:thin:@tcps:adb.<region>.oraclecloud.com:<port>/<database-host-name>.adb.<region>.oraclecloud.com?TOKEN_AUTH=OCI_TOKEN"
Además, la aplicación envía una cabecera firmada, que demuestra que posee una clave privada que se empareja con una clave pública embebida en el token. Si tanto el token como la firma son válidos y existe una asignación entre el usuario de IAM y un usuario de base de datos, el acceso a la base de datos se otorga a la aplicación JDBC.
Para obtener más información sobre el uso de SQLcl, consulte la documentación de Oracle SQLcl.
Ahora, puede consultar los datos del dominio IoT directamente en la base de datos.