スマートスタイル TECH BLOG

データベース&クラウド技術情報

Bastion サービスを使用して MySQL Database Service に接続する

先月、Oracle Cloud に Bastion サービスがリリースされました。

今までは、MySQL Database Service(以降、MDS)は 基本的に Private Subnet に配置される為、オンプレから接続したい場合は、 Public Subnet にクライアントツールをインストールした Compute インスタンスを構築したり、VPN接続を作成したりする必要がありました。
Bastion サービスを利用する事により、ローカルから SSH ポート転送 を使用した接続が可能となりました。

今回は、Bastion サービスを使用して、ローカルから、MDSへ接続する手順について記載したいと思います。
なお、Bastion サービス についての詳細は、以下のリファレンスをご参照下さい。

前提

  • 事前に、MDS のインスタンスは作成済みであるものとします。
  • Bastion サービスを管理するのに必要なIAMポリシーが付与されているものとします。
    (必要なIAMポリシーについては、以下のリファレンスをご参照下さい。)
    Oracle Cloud Infrastructure Documentation / Managing Bastions

手順

Bastion の作成

コンソール画面にログインし、まずは、Bastion を作成します。
メニューが少し分かりにくい場所にあり、コンソール画面を日本語表示している場合は「要塞」と表示されている為、最初はメニューを探すのに一苦労された方もいるのではないでしょうか。
まずは、グローバルメニューの「アイデンティティとセキュリティ」-「要塞」をクリックします。

表示された画面から「要塞の作成」ボタンを押下します。

要塞の作成画面の「ネットワーキングの構成」では、MDSを配置している VCN と Subnet を選択します。
「CIDRブロック許可リスト」には、アクセスを許可するIPアドレスの範囲を設定します。

また、「拡張オプションの表示」をクリックすると、「最大セッション存続期間」が表示されます。
現時点では、Bastion の最大接続時間は 180分(3時間) となっているようです。
デフォルトでは、180分となっていますが、以降作成するセッションごとにも、ここで指定した時間以下で最大接続時間を指定する為、ここではデフォルトのままで問題ないかと思います。

要塞の作成後は、状態が「作成中」となります。

30秒程で、状態が「アクティブ」となり、作成が完了します。

セキュリティリストの更新

Bastion の詳細画面に表示される、「プライベート・エンドポイントIPアドレス」に表示されているIPアドレスからのアクセスを、MDSを配置している Subnet に設定しているセキュリティリストで許可する必要があります。

「ソースCIDR」に「プライベート・エンドポイントIPアドレス」に表示されているIPアドレス、「宛先ポート範囲」には、MDSのポート(3306)を設定してセキュリティリストに追加します。
(MDSのMySQLポートをデフォルトから変更されている場合は、適宜ご変更下さい。)

セッション の作成

作成した Bastion の詳細画面から、「セッションの作成」ボタンを押下し、セッションの作成画面を表示します。
「セッション・タイプ」には、 SSHポート転送セッション を選択します。
「IPアドレス」を選択し、MDSのプライベートIPアドレスと、「ポート」には、MDSのポート(3306)を設定します。
あとは、SSHポート転送に使用する公開鍵を設定します。

また、Bastion 作成時と同様に、「拡張オプションの表示」をクリックすると、「最大セッション存続期間」が表示されます。
ここでは、セッションの最大接続時間を設定しますが、Bastion に設定した最大接続時間が、設定できる最大値になっています。

以上で、セッションの作成は完了となります。

SSHポート転送の設定

次にSSHポート転送の設定を行います。
まずは、Bastion の詳細画面に表示されているセッションの右端にあるメニューをクリックし、「SSHコマンドのコピー」をクリックします。

クリップボードにコピーされたコマンドは、以下のようになっています。

<privateKey>と<localPort>を適宜変更し、私は使用しているPCが Windows10 である為、WSL の Ubuntu で以下のようにコマンドを実行しました。

MDSに接続

ここまでで、準備は整いましたので、MySQL Workbench を使用して、MDSへ接続してみます。
MySQL Workbench を起動し、起動後の以下の「+」ボタンから接続設定画面を表示します。

接続設定画面で、以下のように設定します。
ユーザ名、パスワードは、MDSに設定したユーザ情報に適宜変更して下さい。

パラメータ 設定するパラメータ値
Connection Method Standard(TCP/IP)を選択
Hostname 127.0.0.1
Port SSHポート転送コマンドで<localPort>に指定したポート番号
Username MDSに登録されているMySQLユーザのユーザ名
Password 上記ユーザのパスワード
Default Schema (任意のスキーマ名、省略可)

設定後は、同画面の「Test Connection」ボタンを押下し、接続可能か確認します。
接続できた場合は、以下のようなダイアログが出力されます。

以上で、Bastion サービスの SSHポート転送機能 を使用して、ローカルからMDSへの接続が確認できました。

最大接続時間を経過した場合

Bastion のセッションに設定した、最大セッション存続期間 が経過した場合、ローカルからMDSへの接続も切断されてしまいました。
再度、SSHポート転送の設定コマンドを実行しても、以下のように Permission denied (publickey) が返されます。

また、コンソール画面でセッションを確認すると、「状態」が「削除済」に変更されていました。

最大セッション存続期間 が経過したセッションは、使い回すことができず、新たにセッションを作成する必要があるようです。

まとめ

VPN接続を作成したり、Public Subnet にクライアントツールをインストールした Compute インスタンスを構築したりする必要がなくなり、MDSへ接続して簡単な確認を行いたい場合には、Bastion サービスの SSHポート転送機能を使用することで、恩恵を受ける方もおられるように思います。
また、Bastion サービスには使用料金がかからない点も見逃せません。

しかしながら、Bastion サービスのセッションの接続時間は、最小30分、最大180分と制限がありますので、本番運用や、開発で頻繁にMDSへアクセスするようなケースでは、使用できないものと考えられます。
また、その他の制限等も、以下にまとまっておりますので、利用を検討する際には、リファレンスとともにご確認頂ければと思います。


Oracle Cloud

MySQL

 

Return Top