プライベートサブネット内の Oracle DB (Base DB/ADB) に接続する方法まとめ

Database

初めに

OCI (Oracle Cloud Infrastructure) プライベートサブネット内の Oracle Base DB / Autonomous AI DBに接続する方法はいくつかあります。どの方法を選べばよいか迷っている方々に対し、各種接続方法の比較を紹介したいと思います。

一部の接続方法は、OCI Computeインスタンスにも適用できます。プライベートサブネット内のComputeインスタンスに接続したい方は、次の記事をご参考にしてください。
プライベートサブネット内の OCI Compute (VM) に接続する方法まとめ
※、本記事では、Oracle が提供する公式の製品・サービスにのみ焦点を当て、サードパーティー製品については扱いません。なお、その他にも公式の製品・サービス(VPN / FastConnect など)は存在しますが、ここでは割愛させていただきます。

1. プライベートサブネット内のOracle Base DB/ADBに接続

1-1. 踏み台サーバ

踏み台サーバーを経由するのは、最も一般的な接続方法です。接続方法としては、主に以下の2つのパターンがあります。

方法-1. 二段階のログイン

  • 踏み台サーバはLinuxの場合:empty
  • 踏み台サーバはWindowsの場合:empty

メリット:
✅ 非常にシンプル。
✅ 踏み台サーバーへのログインが必要な作業に適している。

方法-2. SSHポート転送

Access Oracle Base DB / ADB in private subnet via bastion server

メリット:
✅ 二段階のログインが不要になり、作業の手間を軽減できる。
✅ 公開する必要があるポートは22番のみで済むため、よりセキュアな接続が可能
✅ 秘密鍵を踏み台サーバに配置する必要がない。
✅ 踏み台サーバをLinuxで構築すれば、Windowsサーバを使用するよりコストを抑えられる。

詳細については、次の記事をご参照ください。
踏み台サーバ経由でプライベートサブネット内の Oracle DB (Base DB/ADB) に接続する方法

1-2. OCI Bastionサービス

OCI Bastionサービスの本質はSSHトンネルです。つまり、上記のSSHポート転送の方法をサービスとして提供しています。これにより、踏み台サーバを立てることなく、プライベートサブネット内のインスタンスに簡単に接続できます。このサービスは無料で利用でき、Oracle Base DB/ADBインスタンスだけでなく、Computeインスタンス、或いはMySQL DBサービスにも接続できます。

セッション存続時間は最大3時間で、ご注意ください。

Access Oracle Base DB / ADB in private subnet via OCI Bastion service

※、Base DBの構成図は上記と同じです(宛先のポート番号が異なる)。

メリット:
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ SSHトンネルで通信するので、セキュアな接続を確保できる。
✅ 設定方法は比較的にやり易い(数分間でOK)
✅ OCI Bastion自体は無料で利用できる。

OCI Bastionを作成する際には、ターゲットのVCNとサブネットを指定する必要がありますが、Bastion自体に対し、配置場所を指定する必要はありません(誤解されることがよくあります)。

接続方法の詳細について、以下の2記事をご参照ください。
OCI Bastionサービスでプライベートサブネット内のOracle DBに接続する方法
OCI Bastion経由でプライベート・サブネット内のAutonomous DBに接続

1-3. Network Load Balancer (NLB)

踏み台サーバを立てずにインターネットから接続したい場合、パブリックサブネット内のネットワーク・ロード・バランサ(NLB)を経由する方法も選択肢の一つです。

Access Oracle Base DB / ADB in private subnet via NLB

メリット:
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ 設定方法は簡単で、管理者の一時作業に適している(数分間で設定完了)。
✅ レイヤー4通信であり、可用性が高くて、レイテンシが低い。
✅ OCI Bastionと比べて、セッション存続時間(最大3時間)の心配がない。
✅ NLB自体は"Always Free"でカバーできるので、無料で利用できる。

  • LB経由でも接続できます(設定方法少し異なるが考え方は同じです)。
  • NLB自体は停止できませんが、バックエンドをオフラインにすることは可能です。使用しないときにオフラインに切り替えることで、踏み台サーバを一時停止するのと同じような効果が得られます。

接続方法の詳細について、次の記事をご参照ください。
OCI NLB経由でプライベートサブネット内の Oracle DB (Base DB/ADB) に接続する方法

1-4. Cloud Shell

2022年8月に、Cloud Shellのプライベート・アクセス機能がリリースされました。これにより、Cloud Shellからパブリックネットワークを経由せずにプライベートネットワークのリソースにアクセスできるようになりました。
Access Oracle Base DB / ADB in private subnet via Cloud Shell

メリット:
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ OCIコンソールからパブリックネットワークを経由せずに、プライベート・アクセスで接続できる。
✅ 設定は簡単で、シリアルコンソールを使って手軽に接続したい時に便利です。(管理者の一時作業に適している)

制限事項:
⚠️シリアルコンソールのため、SQL DeveloperのようなGUIがない。

接続方法の詳細について、以下の記事をご参考ください(Base DB/ADB 兼用)。
OCI Cloud Shell からプライベート・サブネット内のインスタンスに接続する

1-5. データベース・ツール

データベース・ツールはOCIのマネージド・サービスです。これを使用して、OCI内の任意のOracleまたはMySQL DBサービスへの接続を作成できます。

Access Oracle Base DB / ADB in private subnet via Database Tools

メリット:
SQLワークシートと併用することで、データベースへの直接SQLアクセスが可能です。
✅パスワードやADBのウォレットなどの機密情報は暗号化され、OCIボールトに安全に保存されます。

Oracle Base DBとADBの接続方法の詳細について、次の記事をご参照ください。
OCI データベース・ツールでオラクルDBへの接続方法

1-6. データベース・アクション(ADBのみ)

この方法は、Autonomous AI Databaseにのみ適用されます。

ADBの詳細 → データベース・アクション → SQL
Startup DB Actions|SQL

※、「データベース・アクション」をクリックすると、次の画面が表示される場合があります。
Copy access URL

原因
ADBのプライベート・エンドポイントURLはVCN内部で識別されますが、外部からのアクセスはできません。

アクセスURLの例:https://xxxxxxx.adb.ap-tokyo-1.oraclecloudapps.com/ords/sql-developer

上記URLの中に、xxxxxxx.adb.ap-tokyo-1.oraclecloudapps.comの部分はADBのプライベート・エンドポイントURLとなります。

解決方法

  • 方法-1: ADBと同じVCN内にあるComputeインスタンスからアクセスしてください。
  • 方法-2: ADBと同じVCN内にLB(またはNLB)を設定し、クライアントとADB間の接続を確立します。その後、クライアントのWebブラウザでアクセスしてください。

データベース・アクションの画面に、SQL文の実行例は次の通りです。SQL Developer Webで操作できます。
Run SQL in DB Actions

1-7. インスタンス・コンソール接続(Oracle Base DBのみ)

Oracle Base DBインスタンスのOSにログインする場合、コンソール接続という選択肢があります。トラブルシューティングの時に役立ちます。

Access Oracle Base DB in private subnet via instance console connection

作成方法
作成画面の入口:Oracle Base DB → DBシステム → DBシステムの詳細 → コンソール接続 → コンソール接続の作成

公開キーを自動作成するか、既存のキーをアップロードします。
Create console connection

メニューからコマンドをコピーして、PowerShellで実行してください。
Copy SSH command

実行結果:

PS C:\Users\username> ssh -o ProxyCommand='ssh -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ap-tokyo-1.<中略>@instance-console.ap-tokyo-1.oci.oraclecloud.com' ocid1.instance.oc1.ap-tokyo-1.<中略>

=================================================
IMPORTANT: Use a console connection to troubleshoot a malfunctioning instance. For normal operations, you should connect to the instance using a Secure Shell (SSH) or Remote Desktop connection. For steps, see https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/accessinginstance.htm

For more information about troubleshooting your instance using a console connection, see the documentation: https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/serialconsole.htm#four
=================================================

Oracle Linux Server 8.9
<中略>

db19c login: opc
Password:
Last login: <Time stamp> from <IP address>
[opc@db19c ~]$

※、ログインする際に、秘密キー認証ではなく、パスワード認証になります。

2. 各種接続方法の比較

接続方法踏み台
の経由
利用場面注意事項
踏み台経由Yes一般的利用方法であり、セキュアかつ長時間なセッションを求める場合踏み台サーバが必要
OCI Bastion
(公式Doc)
No踏み台サーバを立てず、手軽に接続したい場合⏳セッション存続時間(最大3時間)
NLB
(公式Doc)
No踏み台サーバを立てず、手軽に接続したい場合使わない時、バックエンドをオフラインすることは可能
Cloud Shell
(公式Doc)
No踏み台サーバを立てず、シリアル・コンソールで手軽に接続したい場合⏳セッションタイムアウト(20分)
Database Tools
(公式Doc)
NoOCIコンソールから(Web GUIで)接続したい場合認証情報はOCIボルトに格納する必要がある
Database Actions
(公式Doc)
必須ではない手軽にOCIコンソールから(Web GUIで)接続したい場合1. ADBのみ
2. 踏み台(またはLB/NLB)を経由
コンソール接続
(公式Doc)
Noトラブルシューティング1. Base DBのみ
2. パスワード認証

利用場面に応じて、適切な接続方法を選びましょう。

以上

タイトルとURLをコピーしました