SSH転送(SSH Tunnel) を設定して、踏み台Compute経由の SQL Developer で Autunomous Database に接続する(OCI, Oralce Cloud Infrastructure)
タイトルの通り、SSH転送(SSH Tunnel)経由 の SQL Developer で Autonomous Database に接続してみるやで。
彡(゚)(゚)
1. 構成
構成は下記の通り。
ソフトウェア/サービスのバージョンは以下の通りです。
■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)を入力して踏み台インスタンスにログインします。
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 に接続して、ガンガン活用や!彡(^)(^)