本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
プライベートサブネット内の OCI(Oracle Cloud Infrastructure)Base DB / Autonomous DBインスタンスに接続する方法はいくつかあります。どの方法を選べばよいか迷っている方々に対し、各種接続方法の比較を紹介したいと思います。
一部の接続方法は、Computeインスタンスにも適用できます。プライベートサブネット内のComputeインスタンスに接続したい方は、こちらの取りまとめをご参考にしてください。
※、下記以外のオラクルの公式製品とサービス(VPN/FastConnectなど)も存在しますが、選択肢が多いため割愛させていただきます。
目次
1. プライベート・サブネット内のOracle Base DB/ADBインスタンスに接続する
1-1. 踏み台サーバ
踏み台サーバを経由するのは、最も一般的な接続方法です。方法としては、二段階のログインとSSHポート転送の2つのパターンがあります。
方法-a) 二段階のログイン
関連ポート一覧
接続元 | 接続先 | 宛先ポート | 用途 |
---|---|---|---|
On-P | 踏み台サーバ (Windows) |
3389 | Remote Desktop |
On-P | 踏み台サーバ(Linux) | 22 | SSH |
On-P | 踏み台サーバ(Linux) | 5901 | VNC (GUI ユーザー) |
踏み台サーバ | Base DB | 22 | SSH |
踏み台サーバ | Base DB | 1521 | SQL Plus, SQL Developer |
踏み台サーバ | Autonomous DB | 1522 | SQL Plus, SQL Developer |
メリット:
✅ 考え方はシンプルで、初心者向けです。
デメリット:
- 2回のログインが必要で、手間がかかる。
- パブリックにポート(3389,5901)を公開する必要がある。
方法-b) SSHポート転送
踏み台サーバは Linux の場合、SSHポート転送の手段もあります。
メリット:
✅ 二段階のログインが不要になり、手間を省ける。
✅ Base DBインスタンスにSSHログインする場合、秘密キーを踏み台サーバに置く必要がない。
✅ パブリックに公開するポートは22だけでOK。なお、踏み台サーバはLinuxでよいため、コストを節約できる。
Base DBにSSHで接続する場合
- Step-1) 踏み台サーバとBase DBの秘密キーをローカル端末に保存する。
※、Base DBの秘密キーを踏み台サーバに保存しないことを推奨する。 - Step-2) 踏み台サーバにSSHログインする。
ssh -L 22:<basedb_private_ip>:22 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key>
- Step-3) 上記のステップが成功したら、別のセッションを開いて、次のコマンドでターゲットに接続する。
ssh localhost -l opc -i C:\Users\<username>\.ssh\<target_private_key>
Base DBにSQL Plusで接続する場合
- Step-1) 踏み台サーバの秘密キーをローカル端末に保存する。
- Step-2) 踏み台サーバにSSHログインする。
ssh -L 1521:<basedb_private_ip>:1521 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key>
- Step-3) 上記のステップが成功したら、別のセッションを開いて、次のコマンドでターゲットDBに接続する。
sqlplus <username>/<password>@localhost:1521/<db_service_name>
※、ローカルポート番号22や1521が既に使われている場合、次のように8222や11521の番号に置き換えてください。
- step-2)
ssh -L 11521:<basedb_private_ip>:1521 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key>
- step-3)
sqlplus <username>/<password>@localhost:11521/<db_service_name>
NSGの関連設定
インスタンス | 方向 | ソース・宛先CIDR | プロトコル | 宛先 ポート |
---|---|---|---|---|
踏み台 | Ingress | ソース: Client Public IP | TCP | 22 |
踏み台 | Egress | 宛先: Private Subnet CIDR | TCP | 22,1521, 1522 |
ターゲット (Base DB) |
Ingress | ソース: 踏み台のPrivate IP | TCP | 22,1521 |
ターゲット(ADB) | Ingress | ソース: 踏み台のPrivate IP | TCP | 1522 |
1-2. OCI Bastionサービス
OCI Bastionサービスの本質はSSHトンネルです。つまり、上記のSSHポート転送の方法をサービスとして提供しています。これにより、踏み台サーバを立てることなく、プライベートサブネット内のインスタンスに簡単に接続できます。このサービスは無料で利用でき、Oracle Base DB/ADBインスタンスだけでなく、Computeインスタンス、或いはMySQL DBサービスにも接続できます。
セッション存続時間は最大3時間で、ご注意ください。
※、Base DBの構成図は上記と同じです(宛先のポート番号が異なる)。
メリット:
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ SSHトンネルで通信するので、セキュアな接続を確保できる。
✅ 設定方法は比較的にやり易い(数分間でOK)
✅ OCI Bastion自体は無料で利用できる。
OCI Bastionを作成する際には、ターゲットのVCNとサブネットを指定する必要がありますが、Bastion自体に対し、配置場所を指定する必要はありません(誤解されることがよくあります)。
接続方法の詳細について、以下の2記事をご参照ください。
OCI Bastion経由でプライベート・サブネット内のOracle DBに接続
OCI Bastion経由でプライベート・サブネット内のAutonomous DBに接続
1-3. ネットワーク・ロード・バランサ
踏み台サーバを立てずにインターネットから接続したい場合、パブリックサブネット内のネットワーク・ロード・バランサ(NLB)を経由する方法も選択肢の一つです。
メリット:
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ 設定方法は簡単で、管理者の一時作業に適している(数分間で設定完了)。
✅ レイヤー4通信であり、可用性が高くて、レイテンシが低い。
✅ OCI Bastionと比べて、セッション存続時間(最大3時間)の心配がない。
✅ NLB自体は"Always Free"でカバーできるので、無料で利用できる。
- LB経由でも接続できます(設定方法少し異なるが考え方は同じです)。
- NLB自体は停止できませんが、バックエンドをオフラインにすることは可能です。使用しないときにオフラインに切り替えることで、踏み台サーバを一時停止するのと同じような効果が得られます。
接続方法の詳細について、次の記事をご参照ください。
ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の Oracle Base DB と Autonomous DB に接続する
1-4. Cloud Shell
2022年8月に、Cloud Shellのプライベート・アクセス機能がリリースされました。これにより、Cloud Shellからパブリックネットワークを経由せずにプライベートネットワークのリソースにアクセスできるようになりました。
メリット:
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ OCIコンソールからパブリック・ネットワークを経由せずに、プライベート・アクセスで接続できる。
✅ 設定は簡単で、シリアルコンソールを使って手軽に接続したい時に便利です。(管理者の一時作業に適している)
制限事項:
- シリアルコンソールのため、SQL DeveloperのようなGUIがない。
接続方法の詳細について、以下の記事をご参考ください(Base DB/ADB 兼用)。
OCI Cloud Shell からプライベート・サブネット内のインスタンスに接続する
1-5. データベース・ツール
データベース・ツールはOCIのマネージド・サービスです。これを使用して、OCI内の任意のOracleまたはMySQL DBサービスへの接続を作成できます。
メリット:
✅SQLワークシートと併用することで、データベースへの直接SQLアクセスが可能です。
✅パスワードや「Autonomous DB」のウォレット・ファイルなどの機密情報は暗号化され、OCIボールトに安全に保存されます。
Oracle Base DBとADBの接続方法の詳細について、次の記事をご参照ください。
OCI データベース・ツールでオラクルDBへの接続方法
1-6. データベース・アクション(ADBのみ)
この方法は、Autonomous DBにのみ適用されます。
Autonomous Databaseの詳細 → データベース・アクション → SQL
※、「データベース・アクション」をクリックすると、次の画面が表示される場合があります。
原因
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で操作できます。
1-7. インスタンス・コンソール接続(Base DBのみ)
Base DBインスタンスのOSにログインする場合、コンソール接続という選択肢があります。トラブルシューティングの時に役立ちます。
作成方法
作成画面の入口:Oracle Base DB → DBシステム → DBシステムの詳細 → コンソール接続 → コンソール接続の作成
メニューからコマンドをコピーして、PowerShellで実行してください。
実行結果:
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 | No | 踏み台サーバを立てず、手軽に接続したい場合。 | ⏳セッション存続時間(最大3時間) |
NLB | No | 踏み台サーバを立てず、手軽に接続したい場合。 | 使わない時、バックエンドをオフラインすることは可能 |
Cloud Shell | No | 踏み台サーバを立てず、シリアル・コンソールで手軽に接続したい場合。 | ⏳セッションタイムアウト(20分) |
Database Tools | No | OCIコンソールから(Web GUIで)接続したい場合 | 認証情報はOCIボルトに格納する必要がある |
Database Actions | 必須ではない | 手軽にOCIコンソールから(Web GUIで)接続したい場合 | 1. ADBのみ 2. 踏み台(またはLB/NLB)を経由 |
コンソール接続 | No | トラブルシューティング | 1. Base DBのみ 2. パスワード認証 |
利用場面に応じて、適切な接続方法を選びましょう。
以上です。