0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プライベート・サブネット内のOracle Base DB と ADBインスタンスに接続する方法のまとめ

Last updated at Posted at 2024-09-02

本ブログは、オラクル・クラウドの個人ブログの1つです。

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

一部の接続方法は、Computeインスタンスにも適用できます。プライベートサブネット内のComputeインスタンスに接続したい方は、こちらの取りまとめをご参考にしてください。

※、下記以外のオラクルの公式製品とサービス(VPN/FastConnectなど)も存在しますが、選択肢が多いため割愛させていただきます。

目次

1. プライベート・サブネット内のOracle Base DB/ADBインスタンスに接続する

1-1. 踏み台サーバ

踏み台サーバを経由するのは、最も一般的な接続方法です。方法としては、二段階のログインとSSHポート転送の2つのパターンがあります。

方法-a) 二段階のログイン

  • 踏み台サーバはWindowsの場合:
    image.png

  • 踏み台サーバはLinuxの場合:
    image.png

関連ポート一覧

接続元 接続先 宛先ポート 用途
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ポート転送の手段もあります。

image.png

メリット:
✅ 二段階のログインが不要になり、手間を省ける。
✅ 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で操作できます。
image.png

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

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

image.png

作成方法
作成画面の入口: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. パスワード認証

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

以上です。


関連記事
オラクル・クラウドの個人ブログ一覧
SQL Developerで様々なDBに接続する方法

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?