はじめに
今回はOracle Cloud Infrastructure(OCI)のBastionサービスを使って
プライベートサブネットに配置したAutonomous Database(ADB)の
Database Actionsにアクセスする方法を紹介したいと思います。
※ちょっとした小ネタです。
通常プライベートサブネットのリソースにアクセスするには
同じVCN内のパブリックサブネットに踏み台サーバを立てる
必要があるかと思いますが、Bastionを使えばSSHセッションや
ポート転送を使って踏み台サーバなしでもクライアントPCから
SSH(22)、RDP(3389)でリモートアクセスすることが可能です。
■参考
https://oracle-japan.github.io/ocitutorials/intermediates/bastion/
ただWebアクセスはどうなのか?
という疑問があるかと思います。
ADBにはDatabase ActionsというWebコンソール機能でSQLの実行や
データ変換、データロード、Machine Learning等の便利な機能が
ブラウザで使えるため、わざわざDB接続しないでも事足りるかと思います。
ですが、この機能はADBを「すべての場所からのセキュア・アクセスを許可」
という公開の状態にした時にしか外部(クライアントPCのブラウザ)からの
アクセスできないため、プライベートサブネット内のADBに対して
アクセスするには同じVCNのパブリックサブネットに踏み台サーバとして
Windows Serverを立てて、そこからブラウザでアクセスする形になります。
ただこのためだけにWindows Serverを立てるのもなんなので
Bastionを使ってアクセスしてみたらいいんじゃないかという話です。
■実行環境(クライアントPC)
OCI推奨のWebブラウザを使える環境ならなんでもOK
今回はWindows 11で実施
■事前準備
VCN、プライベートサブネット、セキュリティリスト等を
作成しておき、ADBを作成しておきます。
BastionではSSHキーを使用しますのでこちらも準備します。
作成方法については以下を参考にしてください。
■VCNの作成
https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/
■ADBの作成
https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/
※インスタンスはプライベートサブネットに立てます。
■SSHキーの作成
https://docs.oracle.com/ja/learn/generate_ssh_keys
◆目次
1.Bastionの作成
2.hostsファイルの変更
3.ADB Database Actionsの表示
1. Bastionの作成
左上メニュー[Ξ]からアイデンティティとセキュリティを選択し、
要塞(Bastion)を選択します。
下記の項目を入力・選択して、要塞の作成ボタンを実行します。
VCN: ADBと同じVCNを選択
サブネット: ADBが配置されているプライベートサブネットを選択
CIDR: 今回はどこからでもアクセスできるように0.0.0.0/0を入力
しばらくするとBastionの作成が完了するので名前を選択します。
以下の項目を入力・選択して、セッションの作成を実行します。
セッション・タイプ: SSHポート転送セッション
セッション名: 任意
IPアドレス: ADBのプライベートエンドポイントIP(プライベートIP)
ポート: 443
SSHキーの追加: 事前に用意していたSSHキー
セッションの作成が完了したら右の詳細リンクからSSHコマンドの表示を選択します。
以上でBastionの設定は終了です。
2. hostsファイルの変更
プライベートエンドポイントに配置したADBのDatabase Actionsにアクセスするには
hostsファイルの変更が必要となります。
個々のPC環境にもよるかもしれませんが、
Windows 11の場合、hostsファイルは以下に保存されています。
C:\Windows\System32\drivers\etc\hosts
hostsファイルにはADBのアクセスURLのFQDNを登録します。
例としてアクセスURLが以下の場合、
https://*****.adb.ap-tokyo-1.oraclecloudapps.com/ords/sql-developer
hostsファイルは以下のようにします。
127.0.0.1 *****.adb.ap-tokyo-1.oraclecloudapps.com
以上でhostsファイルの修正は終了です。
3. ADB Database Actionsの表示
予め保存しておいたSSHコマンドを編集します
■変更箇所
privateKey: 保存されているSSHのフルパス
<localPort>: 443
※ローカル環境で443ポートを使用していないことが前提です。
■変更前サンプル
ssh -i <privateKey> -N -L <localPort>:10.0.21.75:443 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.amaaaaaa*****.oraclecloud.com
■変更後サンプル
ssh -i C:\Users\id_rsa -N -L 443:10.0.21.75:443 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.amaaaaaa*****.oraclecloud.com
後は修正したコマンドをコマンドプロンプトから実行します。
(パスフレーズが設定されている場合は入力)
コマンドを実行した(セッションを張った)状態でADB Database Actionsの
URLにアクセスすると普通にサインインのページが表示されます。
これで簡単にプライベートサブネットに置いてあるADBの管理が可能となります。
おわり
わざわざ踏み台サーバを立てなくてもBastionサービスがあれば
ローカル環境で簡単に作業することが可能です。