SSH転送(SSH Tunnel) を設定して、踏み台Compute経由の SQL Developer で Autunomous Database に接続する(OCI, Oralce Cloud Infrastructure)


タイトルの通り、SSH転送(SSH Tunnel)経由 の SQL Developer で Autonomous Database に接続してみるやで。
彡(゚)(゚)

1. 構成

構成は下記の通り。

PC端末 ⇒ (SSH) ⇒ Compute ⇒ (SQL*Net) ⇒ Autonomous Database

ソフトウェア/サービスのバージョンは以下の通りです。

■PC端末
Windows 10
SQL Developer 19.2.0
PuTTY 0.71
Teraterm 4.103

■Compute
VM.Standard2.1
OEL 7.6

■Autonomous Database
18c

2. Autonomous Database の ACL(Access Control List)設定

Computeインスタンス の Public IP からのみ接続を許可するように、Autonomous Database の ACL(Access Control List) を設定します。
なおスクショはSGW(Service Gatewary)経由のPrivate Networkからの接続を許可する設定も入ってます。

ハンバーガーメニュー ⇒ ATP or ADW ⇒ DB名クリック ⇒ Action ⇒ Access Control List ⇒ IP Address を記述して Save

参考マニュアルは下記となります。

Autonomous Data Warehouseでのアクセス制御リストの設定
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/autonomous-acess-control-list.html#GUID-B6389402-3F4D-45A2-A4DE-EAF1B31D8E50

3. Autonomous Database のウォレットをダウンロードして PC端末に展開

以下の手順で Autonomous Database の ウォレットをダウンロードします。

ハンバーガーボタン > Autonomous Data Warehouse or Transaction Processing > DB名 > DB Connection > Download

ダウンロードした Wallet の zip を PC端末で展開します。本記事では C:\tools\wallet\ に展開したものとします。

4. PC端末の環境変数設定

環境変数TNS_ADMIN を Wallet の zip を展開したフォルダに指定します。

設定 > コントロールパネル > システム > システムの詳細設定 > 環境変数 > ユーザ環境変数 > 新規
変数名:TNS_ADMIN
変数値:C:\tools\wallet

5. Walletを展開したフォルダ内の sqlnet.ora を修正

Walletを展開したフォルダ内の sqlnet.ora を修正します。WALLET_LOCATION の DIRECTORY を明示的に記述します。

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="C:\tools\wallet")))

6. Walletを解凍したフォルダ内のtnsmanes.oraの内容を置換

tnsnames.ora の port番号 および host名を修正します。

port番号は Well-known port ではない 任意のport にします。本記事では 15222 に修正します。

host は localhost に置換します。単純に置換すると CN= のホスト名も置換されてしまうので、
host=xxx.xxx.oraclecloud.com -> host=localhost で置換します。
※置換する前のホスト名はどこかにメモしておきます。

prdatp_tp = (description= (address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_xxxxxx_tp.atp.oraclecloud.com))(security=(ssl_server_cert_dn=
        "CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))   )

prdatp_tp = (description= (address=(protocol=tcps)(port=15222)(host=localhost))(connect_data=(service_name=xxxxxxxxxxxxxxx_xxxxxx_tp.atp.oraclecloud.com))(security=(ssl_server_cert_dn=
        "CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))   )

7a. SSH転送(SSH Tunnel)を設定(PuTTYの場合)

SSH転送(SSH Tunnel)を設定します。PyTTY の場合は下記のように設定します。

■Session
・Host Name(or IP address) => 踏み台サーバのIPアドレスを入力
・Port  =>22(自動入力)

■Connection > SSH > Auth
Authentication parameter > Private Key File
踏み台インスタンスにログインするための秘密鍵を指定

■Connection > SSH > Tunnel > 以下の設定を入力してAdd
Source Port:15222 ※6.で記述した任意のポート
Destination :xxx.xxx.oraclecloud.com:1522(※6.のtnsnames.oraの変更前ホスト名を入力)
ホスト:tnsnames.oraの旧ホスト名
ポート:1522

■Sessionに戻って任意の名前でSave

■Open ⇒ ユーザー名(opc)を入力して踏み台インスタンスにログインします。

参考マニュアル
https://docs.oracle.com/cd/E83857_01/paas/database-dbaas-cloud/csdbi/create-ssh-tunnel.html#GUID-BE797E70-CB3E-4A80-9620-A7DF1AA91B9E

7b. SSH転送を設定(Teratermの場合)

SSH転送を設定します。Teraterm の場合は下記のように設定します。

■設定 ⇒ SSH転送 ⇒ 追加 ⇒ 以下を設定してOK ⇒ OK

ローカルのポート:15222  ※6.で記述した任意のポート
リッスン:空(何も設定しない)
リモート側ホスト:tnsnames.oraの旧ホスト名(※6.のtnsnames.oraの変更前ホスト名を入力)
ポート:1522

■上記の設定を保存する。
設定 ⇒ 設定の保存 ⇒ Teratermのインストールディレクトリに TERATERM.INI として保存

■ターミナルソフト(Teraterm)をクローズして、起動し直す。

■踏み台Computeにログインして、上記のSSH転送設定が反映されているかを確認する。
ログイン後に 設定 ⇒ SSH転送 ⇒ 上記の転送設定が残っていればOK

8. SQL Developer の接続を新規作成、テスト、保存

ターミナルでComputeインスタンスに接続後、SQL Developerを起動してデータベースの接続を新規作成します。

接続名:任意の接続名
ユーザー名:ADBのユーザー名
パスワード:ADBユーザーのパスワード

接続タイプ:TNS
ロール:デフォルト
ネットワーク別名 or 接続識別子:接続するtnsnames.oraのTNS名を指定 ※
※環境変数が適切に設定されていれば、ネットワーク別名にtnsnames.oraの接続文字列が表示される

上記の接続を作成して、テストボタンを押して成功が出力されればOKです。
テストが成功したら、SQL Developerの接続設定を保存します。

9. まとめ

Computeの鍵とWalletのzipを持っているユーザーだけが、SQL DeveloperでAutonomous Database にアクセスできるようになります。
より安全に Autonomous Database に接続して、ガンガン活用や!彡(^)(^)