本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
プライベートサブネット内の OCI(Oracle Cloud Infrastructure)Base DB / Autonomous DBインスタンスに接続する方法はいくつかあります。どの方法を選べばよいか迷っている方々に対し、各種接続方法の比較を紹介したいと思います。
一部の接続方法は、Computeインスタンスにも適用できます。プライベートサブネット内のComputeインスタンスに接続したい方は、こちらの取りまとめをご参考にしてください。
※、下記以外のオラクルの公式製品とサービス(VPN/FastConnectなど)も存在しますが、選択肢が多いため割愛させていただきます。
目次
1. プライベート・サブネット内のOracle Base DB/ADBインスタンスに接続する
1-1. 踏み台サーバ
踏み台サーバを経由するのは、最も一般的な接続方法です。方法としては、二段階のログインとSSHポート転送の2つのパターンがあります。
方法-a) 二段階のログイン
メリット:
✅ 非常にシンプル。
✅ 踏み台サーバーへのログインが必要な作業に適している。
デメリット:
- 2回のログインが必要で、手間がかかる。
- 3389番ポートなどをパブリックに公開する必要がある。
- 接続先の秘密鍵(或いはADBのウォレット)を踏み台サーバに配置する必要がある。
NSGの関連設定
紐づいているインスタンス | 方向 | ソース・宛先CIDR | プロトコル | 宛先ポート | 説明 |
---|---|---|---|---|---|
踏み台 (Linux) |
Ingress | ソース: Client Public IP | TCP | 22 | 接続端末から踏み台へのSSHを許可 |
踏み台 (Linux) |
Egress | 宛先: 接続先のPrivate IP | TCP | 22 1521 1522 443 |
踏み台から接続先へのアクセスを許可 |
踏み台 (Windows) |
Ingress | ソース: Client Public IP | TCP | 3389 | 踏み台から接続先へのアクセスを許可 |
踏み台 (Windows) |
Egress | 宛先: 接続先のPrivate IP | TCP | 22 1521 1522 443 |
踏み台から接続先へのアクセスを許可 |
ターゲット(Base DB) | Ingress | ソース: 踏み台のPrivate IP | TCP | 22 1521 |
踏み台からのアクセス(SSH,SQL)を許可 |
ターゲット (ADB) |
Ingress | ソース: 踏み台のPrivate IP | TCP | 1522 443 |
踏み台からADBへのアクセスを許可 |
- ADBインスタンスにSSHログインはできませんので、ご注意ください。
- ADBにはAPEXが実装されています。APEXを利用する場合は、443番ポートを許可する必要があります。SQLのみを利用する場合は、1522番ポートを許可するだけで問題ありません。
方法-b) SSHポート転送
踏み台サーバは Linux の場合、SSHポート転送の手段もあります。
メリット:
✅ 二段階のログインが不要になり、作業の手間を軽減できる。
✅ 公開する必要があるポートは22番のみで済むため、よりセキュアな接続が可能
✅ 接続先がLinuxの場合、秘密鍵を踏み台サーバに配置する必要がない。
✅ 踏み台サーバをLinuxで構築すれば、Windowsサーバを使用するよりコストを抑えられる。
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>
※、ADBにSQL Plusで接続する場合、上記の手順と同様ですが、ポート番号のところを1522に変更してください。
NSGの関連設定
紐づいているインスタンス | 方向 | ソース・宛先CIDR | プロトコル | 宛先ポート | 用途 |
---|---|---|---|---|---|
踏み台 | Ingress | ソース: Client Public IP | TCP | 22 | 接続端末から踏み台へのSSHを許可 |
踏み台 | Egress | 宛先: Private Subnet CIDR | TCP | 22 1521 443 1522 |
踏み台から接続先へのアクセスを許可 |
ターゲット (Base DB) |
Ingress | ソース: 踏み台のPrivate IP | TCP | 22 1521 |
踏み台からBase DBへのアクセスを許可 |
ターゲット(ADB) | Ingress | ソース: 踏み台のPrivate IP | TCP | 1522 | 踏み台からADBへのアクセスを許可 |
ターゲット(ADB) | Ingress | ソース: 踏み台のPrivate IP | TCP | 443 | 踏み台からAPEXへのアクセスを許可(オプション) |
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. パスワード認証 |
利用場面に応じて、適切な接続方法を選びましょう。
以上です。