本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
オンプレミス環境からOCI(Oracle Cloud Infrastructure)プライベートサブネット内のOracle Base DB / Autonomous DBインスタンスに接続する方法はいくつかあります。その中でも、踏み台サーバを経由する方法は最も一般的です。接続方法としては、主に以下の2つのパターンがあります。
方法-1. 二段階のログイン
メリット:
✅ 非常にシンプル。
✅ 踏み台サーバーへのログインが必要な作業に適している。
デメリット:
- 2回のログインが必要で、手間がかかる。
- 3389番ポートなどをパブリックに公開する必要がある。
- 接続先の秘密鍵(或いはADBのウォレット)を踏み台サーバに配置する必要がある。
NSGの関連設定
紐づいているインスタンス | 方向 | ソース・宛先CIDR | プロトコル | 宛先ポート | 説明 |
---|---|---|---|---|---|
踏み台 (Linux) |
Ingress | ソース: Client Public IP | TCP | 22 | 接続端末から踏み台へのSSHを許可 |
踏み台 (Linux) |
Egress | 宛先: 接続先のPrivate IP | TCP | 22 1521 443 1522 |
踏み台から接続先へのアクセスを許可 |
踏み台 (Windows) |
Ingress | ソース: Client Public IP | TCP | 3389 | 踏み台から接続先へのアクセスを許可 |
踏み台 (Windows) |
Egress | 宛先: 接続先のPrivate IP | TCP | 22 1521 443 1522 |
踏み台から接続先へのアクセスを許可 |
ターゲット(Base DB) | Ingress | ソース: 踏み台のPrivate IP | TCP | 22 1521 |
踏み台からのアクセス(SSH,SQL)を許可 |
ターゲット (ADB) |
Ingress | ソース: 踏み台のPrivate IP | TCP | 443 1522 |
踏み台からADBへのアクセスを許可 |
- Base DBと異なり、ADBインスタンスにSSHログインはできませんので、ご注意ください。
- ADBにはAPEXが実装されています。APEXを利用する場合は、443番ポートを許可する必要があります。SQLのみを利用する場合は、1522番ポートを許可するだけで問題ありません。
方法-2. SSHポート転送
踏み台サーバは Linux の場合、SSHポート転送の手段もあります。
メリット:
✅ 二段階のログインが不要になり、作業の手間を軽減できる。
✅ 公開する必要があるポートは22番のみで済むため、よりセキュアな接続が可能
✅ 接続先がLinuxの場合、秘密鍵を踏み台サーバに配置する必要がない。
✅ 踏み台サーバをLinuxで構築すれば、Windowsサーバを使用するよりコストを抑えられる。
a) 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) 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に変更してください。
ウォレットを利用してADBに接続するのは一般的な方法です。アクセス・タイプがパブリック(VCNに所属しない)の場合、ウォレットは必須です。一方、ADBがVCN内に配置されている場合(今回のケース)は、ウォレットを使用せずに接続することも可能です。
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へのアクセスを許可(オプション) |
踏み台サーバを経由する方法以外にも、さまざまな手段があります(OCI Bastionサービス、ロード・バランサ、Cloud Shellなど)。詳細については、次の記事をご参照ください。
プライベート・サブネット内のOracle Base DB と ADBインスタンスに接続する方法のまとめ
以上