Scénario : Connexion directe à la base de données IoT

Ce scénario montre comment configurer l'accès pour établir une connexion directe à la base de données IoT. Chaque groupe de domaines IoT utilise une instance de base de données dédiée, qui est partagée par tous les domaines IoT de ce groupe de domaines.

Le schéma de base de données de domaine IoT contient les métadonnées et les données des ressources du jumeau numérique associées à un domaine IoT.

Effectuez les étapes suivantes pour configurer l'accès à vos données IoT afin de pouvoir interroger votre schéma de base de données IoT pour voir les tables et les files d'attente d'événements transactionnels directement dans la base de données.

Ce diagramme décrit la configuration requise pour la connexion directe à la base de données.

Étape 1 : Créer un VCN pour lister la connectivité directe de la base de données à l'hôte de données

Configurez un VCN avec un sous-réseau et une passerelle de service pour accéder à une connexion privée et sécurisée directement à la base de données.

  1. Dans votre location Internet of Things, connectez-vous en tant qu'administrateur.
  2. Ouvrez le menu de navigation, sélectionnez Service de réseau, puis Réseaux en nuage virtuels.
  3. Dans la page de liste Réseaux en nuage virtuels, sélectionnez Créer un VCN.
  4. Entrez un nom descriptif pour le VCN. Il ne doit pas nécessairement être unique et ne peut pas être modifié plus tard dans la console, vous pouvez le modifier plus tard avec l'API de domaine d'identité ou l'interface de ligne de commande. Évitez d'entrer des informations confidentielles.
  5. Vérifiez le compartiment dans lequel vous voulez créer le VCN, sélectionnez un autre compartiment si nécessaire.
    Note

    Votre VCN doit se trouver dans la même région que votre groupe de domaines IoT, votre domaine IoT et toutes les autres ressources IoT. Le nombre maximal de réseaux en nuage virtuels que vous pouvez associer à un groupe de domaines IoT est de 5.
  6. Dans la section Blocs IPv4 CIDR, entrez un intervalle d'adresses IP autorisé à accéder à la base de données, par exemple : 10.0.0.0/16

    Pour obtenir la liste complète des paramètres, voir Création d'un réseau VCN.

  7. Sélectionnez Créer un réseau VCN.
  8. La page des détails du réseau en nuage virtuel s'ouvre et sélectionnez l'onglet Sous-réseaux. Sélectionnez Créer un sous-réseau.

    Pour plus d'informations, voir Création d'un sous-réseau et Aperçu des réseaux en nuage virtuels et des sous-réseaux.

  9. Dans la page Créer un sous-réseau :
    1. Entrez un nom convivial pour le sous-réseau. Il ne doit pas nécessairement être unique et ne peut pas être modifié plus tard dans la console, avec l'API du domaine d'identité. Évitez d'entrer des informations confidentielles.
    2. Vérifiez le compartiment dans lequel vous voulez créer le sous-réseau. Sélectionnez un autre compartiment, si nécessaire.
    3. Sélectionnez le type de sous-réseau, Régional. Un sous-réseau régional signifie que le sous-réseau peut contenir des ressources dans n'importe quel domaine de disponibilité de la région.
    4. Entrez un bloc IPv4 CIDR, par exemple 10.0.0.0/16.
    5. Sélectionnez l'accès à Sous-réseau privé pour interdire l'adresse IP publique des instances de ce sous-réseau.
    6. Cochez la case Utiliser les noms d'hôte DNS dans ce sous-réseau.
    7. Entrez le nom du domaine DNS avec le nom de l'étiquette DNS du sous-réseau :

      <subnet_DNS_label>.<VCN_DNS_label>.oraclevcn.com

    8. Pour le compartiment Options DHCP, sélectionnez le compartiment avec vos ressources IoT. Pour Options DHCP, sélectionnez Options DHCP par défaut.
    9. Pour le compartiment de liste de sécurité, sélectionnez le compartiment contenant vos ressources IoT. Sélectionner une liste de sécurité.
    10. Sélectionnez Créer un sous-réseau.
  10. La page des détails du réseau en nuage virtuel s'ouvre et sélectionnez l'onglet Passerelles. Sous Passerelles de service, sélectionnez Créer une passerelle de service.

    Pour plus d'informations, voir Étiquettes CIDR de service disponibles dans la page Création d'une passerelle de service.

  11. Entrez un nom pour la passerelle de service. Il ne doit pas nécessairement être unique. Évitez d'entrer des informations confidentielles. Sélectionnez le compartiment dans lequel créer la passerelle. Sélectionnez un autre compartiment, si nécessaire.
  12. Pour Services, sélectionnez l'option : Tous les <region> services dans Oracle Services Network.
  13. Sélectionnez Options avancées, sous Association de table de routage, sélectionnez le compartiment de la table de routage. Utilisez le compartiment pour les ressources IoT associées. Vos ressources IoT peuvent se trouver dans des compartiments différents et doivent se trouver dans la même région.
  14. Sélectionnez Créer une passerelle de service.
  15. La page des détails des réseaux en nuage virtuels s'ouvre et sélectionnez l'onglet Routage.
  16. Sous Tables de routage, sélectionnez la Table de routage par défaut.
  17. Sélectionnez l'onglet Règles de routage et sélectionnez Ajouter des règles de routage.
    • Pour Type de cible, sélectionnez Passerelle de service.
    • Pour Service de destination, sélectionnez Tous les services de <région> dans Oracle Services Network.
    • Sélectionnez Compartiment de la passerelle de service cible : Sélectionnez le même compartiment que celui que vous avez sélectionné lors de la création de la passerelle de service à l'étape précédente.
    • Sélectionnez la passerelle de service cible créée à l'étape précédente.
    • Sélectionnez Ajouter des règles de routage.
    Pour plus d'informations, voir Ajouter une règle d'acheminement.
  18. La page des détails du réseau en nuage virtuel s'ouvre, sélectionnez l'onglet Sécurité. Sélectionnez Créer un groupe de sécurité de réseau.
    • Entrez un nom et sélectionnez le compartiment que vous avez sélectionné à l'étape précédente.
    • Dans la section Règle, pour la direction, sélectionnez Trafic sortant.
    • Pour Type de destination, sélectionnez CIDR.
    • Dans le champ CIDR de destination, entrez le CIDR de votre environnement, par exemple : 0.0.0.0/0
    • Pour Protocoles IP, sélectionnez Tous les protocoles.
  19. Sélectionnez Créer. Pour plus d'informations, voir Groupe de sécurité de réseau.
  20. Voir les détails du groupe de sécurité de réseau.
  21. Dans la page des détails du réseau en nuage virtuel, copiez l'OCID du VCN ou des réseaux en nuage virtuels. Utilisez cet OCID ou ces OCID de VCN à l'étape suivante.

Étape 2 : Ajoutez l'OCID de votre VCN à votre groupe de domaines IoT

Pour effectuer les étapes suivantes, votre utilisateur doit disposer au moins d'un accès en lecture au VCN ou aux réseaux en nuage virtuels à ajouter au groupe de domaines IoT. Pour confirmer que vous disposez d'un accès en lecture au VCN, voir Obtention des détails d'un VCN pour voir les réseaux en nuage virtuels auxquels vous avez accès.

Un administrateur doit créer une politique pour permettre à tout utilisateur d'accéder en lecture à un VCN, ce qui permet au groupe de domaines IoT d'accéder en lecture à un compartiment spécifique du VCN.
Allow any-user to {VCN_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
  1. Utilisez la commande oci iot domain-group configure-data-access et les paramètres requis pour configurer l'accès aux données pour le groupe de domaines IoT. Remplacez <vcn-ocids> par les OCID des réseaux en nuage virtuels de votre groupe de domaines IoT. Selon votre configuration, vous pouvez inclure un OCID de VCN ou plusieurs OCID de VCN au format suivant :

    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>
    Pour obtenir des instructions à l'aide de la console ou de l'API pour ajouter le VCN au groupe de domaines IoT, voir Configuration de l'accès aux données pour un groupe de domaines IoT.
    Note

    Le nombre maximal de réseaux en nuage virtuels que vous pouvez associer à un groupe de domaines IoT est de 5.
  2. Au bout de quelques minutes, utilisez la commande oci iot domain-group get et les paramètres requis pour obtenir les détails du groupe de domaines IoT, y compris les détails de connexion à la base de données du groupe de domaines, pour confirmer qu'il est configuré. Remplacez <iot-domain-group-OCID> par l'OCID de votre groupe de domaines IoT :

    oci iot domain-group get --iot-domain-group-id <iot-domain-group-OCID>

    Cet exemple de réponse montre que le groupe de domaines est actif, "lifecycleState": "ACTIVE" et si elle est configurée, cette réponse inclut les détails de connexion à la base de données pour le groupe de domaines :

    db-allow-listed-vcn-ids : Notez que le VCN s'affiche.

    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>"
    }
    

Étape 3 : Créer une instance de calcul pour l'accès SSH

La création d'une instance de calcul et d'un réseau en nuage virtuel (VCN) dans Oracle Cloud Infrastructure fournit un accès SSH (Secure Shell) aux ressources de calcul et crée un environnement réseau isolé sécurisé pour votre machine virtuelle. Le VCN détermine le mode d'accès à votre instance, alors que l'instance de calcul est le serveur virtuel auquel vous devez vous connecter.

Vous pouvez créer une instance de calcul pour héberger les applications, en fournissant de la puissance de calcul pour votre charge de travail, et vous ciblez un réseau en nuage virtuel (VCN) pour créer l'instance dans un réseau privé et sécurisé dans le nuage, en contrôlant sa connectivité et son isolement des autres réseaux et de l'Internet public. L'utilisation d'un VCN est essentielle pour la sécurité et la connectivité du réseau, ce qui vous permet de définir des sous-réseaux, des passerelles et des règles pour gérer la façon dont les instances communiquent avec d'autres ressources. Pour plus d'informations, voir Aperçu des réseaux en nuage virtuels et des sous-réseaux et Aperçu du service de calcul.

  1. Ouvrez le menu de navigation et sélectionnez Calcul. Sous Calcul, sélectionnez Instances. Sélectionnez Créer une instance.
  2. Entrez le nom de l'instance. Vous pourrez ajouter ou modifier le nom ultérieurement. Le nom n'a pas besoin d'être unique car l'identificateur Oracle Cloud (OCID) identifie de manière unique l'instance. Évitez d'entrer des informations confidentielles. Sélectionnez le compartiment dans lequel créer l'instance. Toutes les ressources IoT doivent se trouver dans la même région.
  3. Dans certains cas, les options par défaut peuvent s'appliquer. Si vous voulez configurer des options spécifiques pour votre instance de calcul, voir Création d'une instance. Sélectionnez le domaine de disponibilité dans lequel vous souhaitez créer l'instance. Sélectionnez Suivant.
  4. Sous Sécurité, activez/désactivez le commutateur pour activer l'instance dotée d'une protection maximale. Sélectionnez Suivant.
  5. Confirmez que l'option Sélectionner un réseau en nuage virtuel existant est sélectionnée.
  6. Sélectionnez le compartiment du réseau en nuage virtuel et le réseau en nuage virtuel créé à l'étape précédente.
  7. Sous Sous-réseau, confirmez que l'option Sélectionner un sous-réseau existant est sélectionnée. Sélectionnez le sous-réseau régional créé à l'étape précédente.
  8. Sous Ajouter des clés SSH, confirmez l'option Générer une paire de clés pour moi.
  9. Sélectionnez Télécharger la clé privée. Oracle Cloud Infrastructure génère une paire de clés RSA pour l'instance. La clé privée est téléchargée afin que vous puissiez vous connecter à l'instance à l'aide de SSH. Sélectionnez Suivant.
  10. Sélectionnez Créer.

Étape 4 : Créer un groupe dynamique de domaine d'identité

En tant qu'administrateur, dans le service de gestion des identités et des accès (IAM), vous devez créer un groupe dynamique qui contient les instances de calcul autorisées à extraire le jeton de base de données. Vous pouvez définir des règles qui précisent quelles instances sont membres du groupe. Pour plus d'informations, voir Gestion des utilisateurs et groupes du service Oracle Identity Cloud dans la console Oracle Cloud Infrastructure.
  1. Dans votre location IoT, connectez-vous en tant qu'administrateur à la console Oracle Cloud Infrastructure.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Domaines.
  3. Sélectionnez l'onglet Groupes dynamiques, sélectionnez Créer un groupe dynamique.
  4. Entrez un nom et éventuellement une description. Sélectionnez Correspondance avec des règles quelconques définies ci-dessous.
  5. Pour la règle 1, entrez le remplacement instance-OCID suivant par l'OCID de l'instance de calcul créée à l'étape précédente.

    any{instance.id='instance-OCID'}

    Vous pouvez trouver l'OCID de l'instance de calcul dans la page des détails de l'instance. Ouvrez le menu de navigation et sélectionnez Calcul. Sous Calcul, sélectionnez Instances. Sélectionnez l'instance à utiliser pour ouvrir la page Détails de l'instance.

    L'instance doit se trouver dans la même région que toutes les ressources IoT.

  6. Sélectionnez Créer. Les informations sur le groupe dynamique s'affichent avec l'OCID du groupe dynamique.

Étape 5 : Créer un hôte bastion

Créez un hôte bastion dans un réseau en nuage virtuel (VCN) cible pour fournir un accès sécurisé, contrôlé et limité dans le temps à la base de données cible dans le VCN qui n'a pas de points d'extrémité publics. L'hôte bastion agit comme une passerelle, permettant aux utilisateurs autorisés d'établir des connexions SSH sécurisées à cette ressource privée sans l'exposer directement à Internet. Pour plus d'informations, voir Connexion à une instance sur un sous-réseau privé à l'aide d'un hôte bastion.
  1. Dans votre location IoT, connectez-vous en tant qu'administrateur à la console Oracle Cloud Infrastructure.
  2. Ouvrez le menu de navigation, sélectionnez Identité et sécurité, puis Hôte bastion.
  3. Sous Configurer le réseau, sélectionnez le compartiment du réseau en nuage virtuel cible et sélectionnez le réseau en nuage virtuel cible créé à l'étape précédente.
  4. Sélectionnez le compartiment du sous-réseau cible et sélectionnez le sous-réseau cible créé à l'étape précédente.
  5. Pour la liste d'autorisation du bloc CIDR, ajoutez un ou plusieurs intervalles d'adresses en notation CIDR que vous voulez autoriser à se connecter aux sessions hébergées par cet hôte bastion, par exemple : 0.0.0.0/0

    Entrez un bloc CIDR dans le champ d'entrée, puis sélectionnez la valeur ou appuyez sur Entrée pour ajouter la valeur à la liste. Le nombre maximal de blocs CIDR autorisés est 20. Pour obtenir la liste complète des options, voir Création d'un hôte bastion.

    Un intervalle d'adresses plus limité offre une meilleure sécurité.

  6. Sélectionnez Ajouter à la liste.
  7. Sélectionnez Créer un hôte bastion.
  8. La page des détails de l'hôte bastion s'ouvre, avec l'OCID de cet hôte bastion.
  9. Sélectionnez l'onglet Sessions, sélectionnez Créer une session.
  10. Pour Type de session, sélectionnez Session de transfert de port SSH. Entrez un nom de session. Pour plus d'informations, voir Création d'une session de réacheminement de port dans l'hôte bastion.
  11. Sous Se connecter à l'hôte cible à l'aide de, sélectionnez Nom de l'instance.
  12. Sélectionnez le compartiment de l'instance de calcul et l'instance de calcul créées à l'étape précédente.
  13. Entrez le numéro de port auquel vous voulez vous connecter sur la ressource cible, par exemple : un serveur SSH sur une instance Linux : 22 (par défaut)
  14. Sous Ajouter une clé SSH, sélectionnez Générer une paire de clés SSH. Sélectionnez Enregistrer la clé privée et Enregistrer la clé publique.
  15. Sous Options avancées, la configuration de session Durée de vie maximale de session est de 180 et l'intervalle de minutes. Sélectionnez Créer une session. La page de liste des sessions s'ouvre.
  16. À la fin de la rangée de la session à utiliser, sélectionnez le menu Actions et sélectionnez Copier la commande SSH.
  17. Créez une session de redirection de port SSH vers une machine virtuelle, un tunnel de redirection de port SSH. Pour ce faire, ouvrez la ligne de commande ou le terminal local et exécutez la commande SSH personnalisée pour votre environnement.

    Remplacez <path-to-SSH-private-Key> : par le chemin d'accès complet au fichier de clé privée correspondant à la clé publique que vous avez téléchargée lors de la création de la session de réacheminement de port à l'étape précédente. Remplacez <localPort> : par un port local disponible sur votre machine que vous souhaitez utiliser pour le tunnel. Il s'agit du port auquel vous allez vous connecter localement pour accéder au service transféré.

     ssh -i <path-to-SSH-private-Key> -p <localPort>:<targetResourceIP>:<targetPort> <sessionOCID>@<bastionPublicIP> -N
    Exemple :
     ssh -i <privateKey> -p 1224:opc@127.0.0.1
    Suivez les invites pour vous connecter. Une fois que la commande SSH est en cours d'exécution et que le tunnel vers votre hôte bastion est établi, vous pouvez accéder au service de la ressource cible en vous connectant à l'hôte bastion configuré à l'étape précédente.
    [opc@compute-instance-name ~]$
  18. Installez l'interface de ligne de commande OCI.

    L'exemple suivant est pour Oracle Linux 9.

    Utilisez la commande dnf pour exécuter le script d'installation de l'interface de ligne de commande (CLI) pour Oracle Cloud Infrastructure. Pour plus d'informations, voir Interface de ligne de commande. Pour installer l'interface de ligne de commande sur d'autres systèmes d'exploitation et environnements, voir Installation de l'interface de ligne de commande.
    sudo dnf install -y python39-oci-cli
  19. Vous pouvez maintenant utiliser les commandes de l'interface de ligne de commande oci iot.

Étape 6 : Ajouter votre groupe dynamique de domaines d'identité OCI au domaine IoT

Si l'accès aux données pour le domaine IoT est déjà configuré, utilisez la commande oci iot domain get pour confirmer les détails de connexion à une base de données pour un domaine IoT existant. Pour plus d'informations, voir Obtention des détails d'un domaine IoT.

Vous pouvez également utiliser cette commande oci iot domain configure-direct-data-access et les paramètres requis pour configurer l'accès d'un domaine IoT pour vous connecter directement à la base de données.

Remplacez l'OCID de la location par l'OCID de la location IoT pour votre environnement et remplacez-le par le nom du groupe d'identités par le groupe dynamique d'identités, conformément à ces directives.

Pour le paramètre <identity-group-name>, vous pouvez référencer le groupe d'identités des utilisateurs ou le groupe dynamique d'identités. Dans cet exemple, le groupe dynamique configuré à l'étape précédente est référencé :

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> ne se trouve pas dans le domaine d'identité par défaut, vous devez spécifier <identity-domain-name>. Par exemple : <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>"]'

Étape 7 : Extraire le jeton db du service d'identité à l'aide de la portée db-token-scope pour se connecter à la base de données

L'utilisateur ou l'application s'exécutant sur la ou les machines virtuelles, qui se trouvent dans le VCN sur liste d'autorisation, peut extraire db-token du service d'identité IAM à l'aide de db-token-scope à l'aide du principal d'instance.

Utilisez cette commande : oci iam db-token get --scope --auth instance_principal

Pour plus d'informations, voir Authentification du principal d'instance.

Connectez-vous à la machine virtuelle pour le groupe de domaines IoT et utilisez la commande oci iam db-token get pour obtenir le jeton d'instance. Remplacez urn:oracle:db::id::<database-compartment-OCID> par la portée du jeton de base de données pour le groupe de domaines IoT.
oci iam db-token get --scope <urn:oracle:db::id::<database-compartment-OCID> --auth instance_principal
Exemple :
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

Étape 8 : Utilisation d'une chaîne de connexion TLS d'URL JDBC pour le pilote léger JDBC sans portefeuille pour la connexion à la base de données

L'utilisateur ou l'application peut établir une connexion à l'hôte de données à l'aide de db-connection-string et du jeton OCI pour interroger les données du domaine IoT.

Le db-token extrait est ensuite utilisé par le client de base de données, par exemple : SQL*Plus, SQLcl ou un pilote JDBC pour authentifier la connexion à une base de données Oracle configurée pour l'authentification par jeton IAM.

Lors de la connexion à la base de données, l'application JDBC fournit un jeton à la base de données. La base de données vérifie le jeton avec une clé publique qu'elle demande au service d'authentification et extrait les informations d'appartenance au groupe d'utilisateurs correspondant pour rechercher le schéma de base de données et les mappages de rôle afin de terminer l'autorisation de l'utilisateur à la base de données.

./sql /@"jdbc:oracle:thin:@tcps:adb.<region>.oraclecloud.com:<port>/<database-host-name>.adb.<region>.oraclecloud.com?TOKEN_AUTH=OCI_TOKEN"

En outre, l'application envoie un en-tête signé, qui prouve qu'elle possède une clé privée qui est appariée à une clé publique intégrée dans le jeton. Si le jeton et la signature sont valides et qu'il existe un mappage entre l'utilisateur IAM et un utilisateur de base de données, l'accès à la base de données est accordé à l'application JDBC.

Pour plus d'informations sur l'utilisation de SQLcl, voir la documentation sur Oracle SQLcl.

Vous pouvez maintenant interroger les données du domaine IoT directement dans la base de données.