踏み台サーバ経由でプライベートサブネット内の Oracle DB (Base DB/ADB) に接続する方法

Database

オンプレミス環境からOCI(Oracle Cloud Infrastructure)プライベートサブネット内のOracle Base DB / Autonomous AI DB インスタンスに接続する方法はいくつかあります。その中でも、踏み台サーバを経由する方法は最も一般的です。接続方法としては、主に以下の2つのパターンがあります。

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

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

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

デメリット:
⏳ 2回のログインが必要で、手間がかかる。
⚠️ 3389番ポートなどをパブリックに公開する必要がある。
🗝️ 接続先の秘密鍵(或いはADBのウォレット)を踏み台サーバに配置する必要がある。

NSGの関連設定

紐づいているインスタンス方向 ソース・宛先CIDRプロトコル宛先ポート用途
踏み台
(Linux)
Ingressソース: Client Public IPTCP22接続端末から踏み台へのSSHを許可
踏み台
(Linux)
Egress宛先: 接続先のPrivate IPTCP22
1521
443
1522
踏み台から接続先へのアクセスを許可
踏み台
(Windows)
Ingressソース: Client Public IPTCP3389接続端末から接続先へのアクセスを許可
踏み台
(Windows)
Egress宛先: 接続先のPrivate IPTCP22
1521
443
1522
踏み台から接続先へのアクセスを許可
ターゲット
(Base DB)
Ingressソース: 踏み台のPrivate IPTCP22
1521
踏み台からのアクセス(SSH,SQL)を許可
ターゲット
(ADB)
Ingressソース: 踏み台のPrivate IPTCP443
1522
踏み台からADBへのアクセスを許可
  • Base DBと異なり、ADBインスタンスにSSHログインはできませんので、ご注意ください。
  • ADBにはAPEXが実装されています。APEXを利用する場合は、443番ポートを許可する必要があります。SQLのみを利用する場合は、1522番ポートを許可するだけで問題ありません。

方法-2. SSHポート転送

踏み台サーバは Linux の場合、SSHポート転送の手段もあります。

empty

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

2-1. コマンドラインツールを使用

a) Oracle 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>

b) Oracle 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>

2-2. SQL Developerを使用

  • Step-1) 踏み台サーバとBase DBの秘密鍵をローカル端末に保存する。
  • Step-2) 踏み台サーバにSSHログインする(ここまでは上記の2-1-a)と同様)。
ssh -L 22:<basedb_private_ip>:22 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key>
  • Step-3) ローカル端末でSQL Developerを起動し、以下のように接続設定を行う。
    ホスト名の欄には localhost を入力empty

※、ADBにSQL Plusで接続する場合、上記の手順と同様ですが、ポート番号のところを1522に変更してください。

ウォレットを利用したADB接続は一般的な方法ですが、アクセス・タイプによってはウォレットが必須かどうかが変わります。
  • パブリックアクセスの場合(VCNに属さない): ウォレットが必須です。
  • VCN内に配置されている場合(今回の構成): ウォレットを使わずに接続することも可能です。

NSGの関連設定

紐づいているインスタンス方向ソース・宛先CIDRプロトコル宛先ポート用途
踏み台Ingressソース: Client Public IPTCP22接続端末から踏み台へのSSHを許可
踏み台Egress宛先: Private Subnet CIDRTCP22
1521
443
1522
踏み台から接続先へのアクセスを許可
ターゲット
(Base DB)
Ingressソース: 踏み台のPrivate IPTCP22
1521
踏み台からBase DBへのアクセスを許可
ターゲット(ADB)Ingressソース: 踏み台のPrivate IPTCP1522踏み台からADBへのアクセスを許可
ターゲット(ADB)Ingressソース: 踏み台のPrivate IPTCP443踏み台からAPEXへのアクセスを許可(オプション)
踏み台サーバを経由する方法以外にも、さまざまな手段があります(OCI Bastionサービス、ロード・バランサ、Cloud Shellなど)。詳細については、次の記事をご参照ください。
プライベートサブネット内の Oracle DB (Base DB/ADB) に接続する方法まとめ

以上

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