Cenário: Estabelecendo Conexão Diretamente com o Banco de Dados IoT

Este cenário mostra como configurar o acesso para estabelecer uma conexão direta com o banco de dados IoT. Cada grupo de domínios IoT usa uma instância de banco de dados dedicada, que é compartilhada por todos os domínios IoT nesse grupo de domínios.

O esquema do banco de dados do domínio IoT contém os metadados e os dados dos recursos gêmeos digitais associados a um domínio IoT.

Siga as etapas abaixo para configurar o acesso aos seus dados IoT para que você possa consultar seu esquema de banco de dados IoT para exibir tabelas e filas de eventos transacionais diretamente no banco de dados.

Este diagrama descreve a configuração necessária para conexão direta com o banco de dados.

Etapa 1: Criar uma VCN para Listar Permissões de Conectividade Direta do Banco de Dados ao Host de Dados

Configure uma VCN com uma sub-rede e um gateway de serviço para acessar uma conexão privada e segura diretamente com o banco de dados.

  1. Na sua tenancy do Internet of Things, faça log-in como administrador.
  2. Abra o menu de navegação, selecione Rede e, em seguida, selecione Redes Virtuais em Nuvem.
  3. Na página de lista Redes Virtuais na Nuvem, selecione Criar VCN.
  4. Informe um nome descritivo para a VCN. Não precisa ser exclusivo e não pode ser alterado posteriormente na Console; você pode alterá-lo posteriormente com a API ou a CLI do domínio de Identidades. Evite digitar informações confidenciais.
  5. Verifique o compartimento no qual você deseja criar a VCN e selecione outro compartimento, se necessário.
    Observação

    Sua VCN deve estar na mesma região do grupo de domínios IoT, do domínio IoT e de quaisquer outros recursos IoT. O número máximo de VCNs que você pode associar a um grupo de domínios IoT é 5.
  6. Na seção Blocos IPv4 CIDR, informe uma faixa de IPs que tenha permissão para acessar o banco de dados, por exemplo: 10.0.0.0/16

    Para obter uma lista completa de definições, consulte Criando uma VCN.

  7. Selecione Create a VCN.
  8. A página de detalhes Rede Virtual na Nuvem é aberta e selecione a guia Sub-redes. Selecione Criar Sub-rede.

    Para obter mais informações, consulte Criando uma Sub-rede e Visão Geral de VCNs e Sub-redes.

  9. Na página Create a Subnet:
    1. Informe um nome amigável para a sub-rede. Não precisa ser exclusivo e não pode ser alterado posteriormente na Console; você pode alterá-lo posteriormente com a API do domínio de Identidades. Evite digitar informações confidenciais.
    2. Verifique o compartimento no qual você deseja criar a sub-rede. Selecione outro compartimento, se necessário.
    3. Selecione o tipo de sub-rede, Regional. Uma sub-rede regional significa que a sub-rede pode conter recursos em qualquer domínio de disponibilidade da região.
    4. Informe um Bloco IPv4 CIDR, por exemplo, 10.0.0.0/16.
    5. Selecione o acesso à Sub-rede Privada para proibir o endereço IP público das Instâncias nesta sub-rede.
    6. Marque a caixa de seleção Usar nomes de host DNS nesta Sub-rede.
    7. Informe o Nome do Domínio DNS com o nome do label DNS da sub-rede:

      <subnet_DNS_label>.<VCN_DNS_label>.oraclevcn.com

    8. Para o compartimento Opções do DHCP, selecione o compartimento com seus recursos IoT. Para Opções de Dhcp, selecione Opções de Dhcp Padrão.
    9. Para o compartimento da Lista de Segurança, selecione o compartimento com seus recursos IoT. Selecione Lista de Segurança.
    10. Selecione Criar Sub-rede.
  10. A página de detalhes da Rede Virtual na Nuvem é aberta e selecione a guia Gateways. Em Gateways de Serviço, selecione Criar Gateway de Serviço.

    Para obter mais informações, consulte Labels CIDR de Serviço Disponíveis na página Criando um Gateway de Serviço.

  11. Informe um nome para o gateway de serviço. Ele não precisa ser exclusivo. Evite digitar informações confidenciais. Selecione o compartimento no qual você deseja criar o gateway. Selecione outro compartimento, se necessário.
  12. Para Serviços, selecione a opção: All <region> Services In Oracle Services Network.
  13. Selecione Opções avançadas, em Associação da Tabela de Roteamento, selecione o compartimento da tabela de roteamento. Use o compartimento para seus recursos IoT associados. Seus recursos do IoT podem estar em compartimentos distintos e devem estar na mesma região.
  14. Selecione Criar Gateway de Serviço.
  15. A página de detalhes Redes virtuais na nuvem é aberta e selecione a guia Roteamento.
  16. Em Tabelas de Roteamento, selecione a Tabela de Roteamento Padrão.
  17. Selecione a guia Regras de Roteamento e Adicionar Regras de Roteamento.
    • Para Tipo de Destino, selecione Gateway de Serviço.
    • Para Serviço de Destino, selecione Todos os Serviços <region> no Oracle Services Network .
    • Selecione Compartimento do Gateway de Serviço de Destino: Selecione o mesmo compartimento selecionado quando você criou o gateway de serviço na etapa anterior.
    • Selecione o Gateway de Serviço de Destino criado na etapa anterior.
    • Selecione Adicionar Regras de Roteamento.
    Para obter mais informações, consulte adicionar uma regra de roteamento.
  18. A página de detalhes Rede Virtual na Nuvem é aberta e selecione a guia Segurança. Selecione Criar Grupo de Segurança de Rede.
    • Digite um nome e selecione o mesmo compartimento que você selecionou na etapa anterior.
    • Na seção Rule, para a Direção, selecione Egress.
    • Para o Tipo de Destino, selecione CIDR.
    • No campo CIDR de Destino, informe o CIDR do seu ambiente, por exemplo: 0.0.0.0/0
    • Para Protocolos IP, selecione Todos os Protocolos.
  19. Selecione Criar. Para obter mais informações, consulte Grupo de Segurança de Rede,
  20. Veja os detalhes do Grupo de Segurança de Rede.
  21. Na página de detalhes Rede virtual na nuvem, copie o OCID da VCN ou das VCNs. Use esse OCID ou esses OCIDs da VCN na próxima etapa.

Etapa 2: Adicionar seu OCID da VCN ao seu Grupo de Domínios IoT

Para concluir as etapas a seguir, seu usuário deve ter pelo menos acesso de leitura à VCN ou às VCNs que você deseja adicionar ao grupo de domínios IoT. Para confirmar se você tem acesso de leitura à VCN, consulte Obtendo Detalhes de uma VCN para exibir as VCNs às quais você tem acesso.

Um administrador deve criar uma política para permitir que qualquer usuário tenha acesso de leitura a uma VCN. Isso permite que o grupo de domínios IoT tenha acesso de leitura a um compartimento específico da VCN.
Allow any-user to {VCN_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
  1. Use o comando oci iot domain-group configure-data-access e os parâmetros necessários para configurar o acesso aos dados para o grupo de domínios IoT. Substitua a <vcn-ocids> pelos OCIDs das VCNs do seu grupo de domínios IoT. Dependendo da sua configuração, você pode incluir um OCID de VCN ou vários OCIDs de VCN usando o seguinte formato:

    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>
    Para obter instruções sobre como usar a Console ou a API para adicionar a VCN ao grupo de domínios IoT, consulte Configurando o Acesso a Dados de um Grupo de Domínios IoT.
    Observação

    O número máximo de VCNs que você pode associar a um grupo de domínios IoT é 5.
  2. Após alguns minutos, use o comando oci iot domain-group get e os parâmetros necessários para obter os detalhes do grupo de domínios IoT, incluindo os detalhes de conexão do banco de dados do grupo de domínios, para confirmar se ele está configurado. Substitua o <iot-domain-group-OCID> pelo OCID do seu grupo de domínios IoT:

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

    Este exemplo de resposta mostra que o grupo de domínios está ativo, "lifecycleState": "ACTIVE" e, se estiver configurado, essa resposta incluirá os detalhes da conexão do banco de dados para o grupo de domínios:

    db-allow-listed-vcn-ids: Observe que a VCN é exibida.

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

Etapa 3: Criar uma Instância de Computação para Acesso SSH

A criação de uma Instância de Computação e de uma VCN (Rede Virtual na Nuvem) no Oracle Cloud Infrastructure fornece acesso SSH (Secure Shell) a recursos de computação e cria um ambiente de rede isolado seguro para sua máquina virtual. A VCN determina como sua instância é acessada, enquanto a instância de computação é o servidor virtual ao qual você precisa se conectar.

Você pode criar uma instância de computação para hospedar os aplicativos, fornecendo poder de computação para sua carga de trabalho, e direcionar uma VCN (Rede Virtual na Nuvem) para criar a instância em uma rede privada e segura na nuvem, controlando sua conectividade e isolamento de outras redes e da internet pública. O uso de uma VCN é essencial para segurança e conectividade de rede, permitindo que você defina sub-redes, gateways e regras para gerenciar como as instâncias se comunicam com outros recursos. Para obter mais informações, consulte Visão Geral de VCNs e Sub-redes e Visão Geral do Serviço de Computação.

  1. Abra o menu de navegação e selecione Compute. Em Compute, selecione Instâncias. Selecione Criar instância.
  2. Informe um nome para a instância. Você pode adicionar ou alterar o nome posteriormente. O nome não precisa ser exclusivo porque um OCID (Oracle Cloud Identifier) identifica com exclusividade a instância. Evite digitar informações confidenciais. Selecione o compartimento no qual criar a instância. Todos os recursos do IoT devem estar na mesma região.
  3. Em alguns casos, as opções padrão podem ser aplicadas. Se quiser configurar opções específicas para sua instância de computação, consulte Criando uma Instância. Selecione o domínio de disponibilidade no qual deseja criar a instância. Selecione Próximo.
  4. Em Segurança, alterne o switch para ativar a Instância blindada. Selecione Próximo.
  5. Confirme se a opção Selecionar rede virtual na nuvem existente está selecionada.
  6. Selecione o Compartimento da rede Virtual na nuvem e a Rede virtual na nuvem criada na etapa anterior.
  7. Em Sub-rede, confirme se a opção Selecionar sub-rede existente está selecionada. Selecione a sub-rede regional criada na etapa anterior.
  8. Em Add SSH Keys, confirme a opção de Generate a key pair for me.
  9. Selecione Fazer Download da chave privada. O Oracle Cloud Infrastructure gera um par De Chaves RSA para a instância. O download da chave privada é feito para que você possa estabelecer conexão com a instância usando SSH. Selecione Próximo.
  10. Selecione Criar.

Etapa 4: Criar um Grupo Dinâmico de Domínio de Identidades

Como administrador, no serviço IAM (Identity and Access Management), você deve criar um grupo dinâmico que contenha as instâncias de computação permitidas para recuperar o token do banco de dados. Você pode definir regras que especifiquem quais instâncias são membros do grupo. Para obter mais informações, consulte Gerenciando Usuários e Grupos do Oracle Identity Cloud Service na Console do Oracle Cloud Infrastructure.
  1. Na sua tenancy do IoT, acesse como administrador a Console do Oracle Cloud Infrastructure.
  2. Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Domínios.
  3. Selecione a guia Grupos Dinâmicos e Criar grupo dinâmico.
  4. Informe um nome e, opcionalmente, uma descrição. Selecione Corresponder a quaisquer regras definidas abaixo.
  5. Para a Regra 1, digite a seguinte substituição de instance-OCID pelo OCID da sua instância de computação criada na etapa anterior.

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

    Você pode encontrar o OCID da Instância de Computação na página de detalhes da Instância. Abra o menu de navegação e selecione Compute. Em Compute, selecione Instâncias. Selecione a Instância que você deseja usar para abrir a página Detalhes da instância.

    A instância deve estar na mesma região que todos os recursos do IoT.

  6. Selecione Criar. As informações do Grupo Dinâmico são exibidas com o OCID do grupo dinâmico.

Etapa 5: Criar um Bastion

Crie um bastion em uma VCN (Virtual Cloud Network) de destino para fornecer acesso seguro, controlado e limitado por tempo ao banco de dados de destino dentro da VCN que não tem pontos finais públicos. O bastion atua como um gateway, permitindo que usuários autorizados estabeleçam conexões SSH seguras com esse recurso privado sem expô-lo diretamente à internet. Para obter mais informações, consulte Estabelecendo Conexão com uma Instância em uma Sub-rede Privada Usando um Bastion.
  1. Na sua tenancy do IoT, acesse como administrador a Console do Oracle Cloud Infrastructure.
  2. Abra o menu de navegação, selecione Identidade e Segurança e, em seguida, Bastion.
  3. Em Configurar rede, selecione o Compartimento de rede virtual na nuvem de destino e selecione a Rede virtual na nuvem de destino criada na etapa anterior.
  4. Selecione o Compartimento da sub-rede de destino e selecione a Sub-rede do destino criada na etapa anterior.
  5. Para a lista de permissão de bloco CIDR, adicione uma ou mais faixas de endereços em notação CIDR que você deseja permitir que se conectem a sessões hospedadas por este bastion, por exemplo: 0.0.0.0/0

    Informe um bloco CIDR no campo de entrada e, em seguida, selecione o valor ou pressione Enter para adicionar o valor à lista. O número máximo permitido de blocos CIDR é 20. Para obter uma lista completa de opções, consulte Criando um Bastion.

    Um intervalo de endereços mais limitado oferece melhor segurança.

  6. Selecione Adicionar à lista.
  7. Selecione Create bastion.
  8. A página de detalhes do Bastion é aberta, com o OCID desse bastion.
  9. Selecione a guia Sessões, selecione Criar sessão.
  10. Para Tipo de sessão, selecione Sessão de encaminhamento de porta SSH. Informe um Nome de sessão. Para obter mais informações, consulte Criando uma Sessão de Encaminhamento de Porta no Bastion.
  11. Em Estabelecer conexão com o host de destino usando, selecione Nome da instância.
  12. Selecione o compartimento da instância do Compute e a instância do Compute criada na etapa anterior.
  13. Informe o número da porta com o qual você deseja estabelecer conexão no recurso de destino, por exemplo: um servidor SSH em uma instância do Linux: 22 (padrão)
  14. Em Adicionar chave SSH, selecione Gerar par de chaves SSH. Selecione Salvar chave privada e Salvar chave pública.
  15. Em Opções avançadas, a configuração da Sessão Tempo máximo de vida útil da sessão é 180 e minutos de intervalo. Selecione Criar sessão. A página da lista de sessões é aberta.
  16. No final da linha da sessão que você deseja usar, selecione o menu Ações e selecione Copiar comando SSH.
  17. Crie uma Sessão de Encaminhamento de Porta SSH para uma máquina virtual, um Túnel de Encaminhamento de Porta SSH. Para fazer isso, abra sua linha de comando local ou terminal e execute o comando SSH personalizado para o seu ambiente.

    Substitua <path-to-SSH-private-Key>: pelo caminho completo para o arquivo de chave privada correspondente à chave pública que você baixou ao criar a sessão de encaminhamento de porta na etapa anterior. Substitua <localPort>: por uma porta local disponível na sua máquina que você deseja usar para o túnel. Esta é a porta com a qual você se conectará localmente para acessar o serviço encaminhado.

     ssh -i <path-to-SSH-private-Key> -p <localPort>:<targetResourceIP>:<targetPort> <sessionOCID>@<bastionPublicIP> -N
    Por exemplo:
     ssh -i <privateKey> -p 1224:opc@127.0.0.1
    Siga os prompts para se conectar. Depois que o comando SSH estiver em execução e o túnel para o seu Bastion host for estabelecido, você poderá acessar o serviço do recurso de destino estabelecendo conexão com o Bastion host configurado na etapa anterior.
    [opc@compute-instance-name ~]$
  18. Instale a CLI do OCI.

    O exemplo a seguir é para o Oracle Linux 9.

    Use o comando dnf para executar o script do instalador da CLI (Interface de Linha de Comando) do OCI (Oracle Cloud Infrastructure). Para obter mais informações, consulte Interface de Linha de Comando (CLI). Para instalar a CLI em outros sistemas operacionais e ambientes, consulte Instalando a CLI.
    sudo dnf install -y python39-oci-cli
  19. Agora você pode usar os comandos da CLI oci iot.

Etapa 6: Adicionar seu Grupo Dinâmico de Domínio de Identidades do OCI ao Domínio IoT

Se o acesso aos dados do domínio IoT já estiver configurado, use o comando oci iot domain get para confirmar os detalhes da conexão do banco de dados para um domínio IoT existente. Para obter mais informações, consulte Obtendo detalhes de um domínio IoT.

Ou use este comando oci iot domain configure-direct-data-access e os parâmetros necessários para configurar o acesso de um domínio IoT para estabelecer conexão diretamente com o banco de dados.

Substitua o OCID da tenancy pelo OCID da tenancy IoT do seu ambiente e substitua pelo nome do grupo de Identidades pelo grupo dinâmico de Identidades, seguindo estas diretrizes.

Para o parâmetro <identity-group-name>, você pode fazer referência ao grupo de identidades de usuários ou ao grupo dinâmico de identidades. Neste exemplo, o grupo dinâmico configurado na etapa anterior é referenciado:

oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID>:<identity-group-name>"]'

Se o <identity-domain-name> não estiver no domínio de identidades padrão, especifique o <identity-domain-name>. Por exemplo: <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>"]'

Etapa 7: Recuperar o db-token do Serviço de Identidade Usando o db-token-scope para Estabelecer Conexão com o Banco de Dados

O usuário ou o aplicativo em execução na(s) máquina(s) virtual(is), que estão localizados na VCN da lista de permissões e podem recuperar o db-token do serviço IAM Identity usando o db-token-scope usando o controlador de instâncias.

Use este comando: oci iam db-token get --scope --auth instance_principal

Para obter mais informações, consulte Autenticação do Controlador de Instâncias.

Faça log-in na máquina virtual do grupo de domínios IoT e use o comando oci iam db-token get para obter o token da instância. Substitua o urn:oracle:db::id::<database-compartment-OCID> pelo escopo do token do banco de dados para o grupo de domínios IoT.
oci iam db-token get --scope <urn:oracle:db::id::<database-compartment-OCID> --auth instance_principal
Por exemplo:
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

Etapa 8: Usando uma String de Conexão TLS do URL JDBC para o Driver JDBC Thin sem uma Wallet para Estabelecer Conexão com o Banco de Dados

O usuário ou o aplicativo pode estabelecer uma conexão com o host de dados usando o db-connection-string e o token do OCI para consultar os dados do domínio IoT.

O db-token recuperado é então usado pelo cliente do banco de dados, por exemplo: SQL*Plus, SQLcl ou um driver JDBC para autenticar a conexão com um banco de dados Oracle configurado para autenticação de token do IAM.

Ao se conectar ao banco de dados, o aplicativo JDBC fornece um token ao banco de dados. O banco de dados verifica o token com uma chave pública que ele solicita do serviço de autenticação e recupera as informações de associação do grupo de usuários correspondente para localizar os mapeamentos de esquema e atribuição do banco de dados para concluir a autorização do usuário para o banco de dados.

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

Além disso, o aplicativo envia um cabeçalho assinado, que prova que possui uma chave privada que é emparelhada a uma chave pública incorporada no token. Se o token e a assinatura forem válidos e houver um mapeamento entre o usuário do IAM e um usuário do banco de dados, o acesso ao banco de dados será concedido ao aplicativo JDBC.

Para obter mais informações sobre como usar o SQLcl, consulte a documentação do Oracle SQLcl.

Agora, você pode consultar os dados do domínio IoT diretamente no banco de dados.