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

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

デメリット:

  • 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ポート転送の手段もあります。

image.png

メリット:
✅ 二段階のログインが不要になり、作業の手間を軽減できる。
✅ 公開する必要があるポートは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で操作できます。
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?