Azure SQL Database のDB に SQL Server Management Studio (SSMS) で手元のPC環境から接続したい、
だけど、会社のファイアウォールによって 1433 ポート(SQL Server接続用ポート)での通信が許可されていない。
だから、SSHポートフォワーディング(SSHトンネリング)で 踏み台用サーバ(JumpBox Server)経由で Azure SQL Database と通信する。
というケースは、まーまーあるんだと思います。
で、試しにやってみたら SSMS の接続設定の方法が結構よくわからず意味もなくハマってしまったので、今後のためにメモしました。
前提条件
今回試した環境等の条件です。条件が違っているとうまく行かない可能性もあります。
- Azure SQL Database の ファイアウォール設定
- パブリック ネットワーク アクセスの拒否 :
いいえ
- 接続ポリシー :
規定
- 踏み台サーバのIPアドレスからの接続は許可されている必要があります。
- パブリック ネットワーク アクセスの拒否 :
- 踏み台サーバ(JumpBox Server)
- Azureの外に配備
- Azureの中にSSH接続する踏み台サーバを用意すると、今回のやり方ではうまくいかないかもしれません。(ポート 1433 以外も絡んで来る可能性があるため)
- Azureの外に配備
- SSMS
- 18.8 を使用
本エントリではSSHポートフォワーディングはできている状態を想定しています。
今回の例では、ローカル の 11433 ポートへの通信が結果的に Azure SQL Databaseの1433ポートへの通信となる状況にしています。
ポートフォワーディング等については以下のエントリを参照してください。
SSMSの設定
SSMSの接続設定に関してタブごとに以下のようにします。
ログイン
- サーバの種類:
- データベースエンジン
- サーバ名:
- 127.0.0.1,11433
- IPアドレス と ポート番号 の間は
:
(コロン) ではなく,
(カンマ) - 11433 のポート番号は、実際のポートフォワーディングの設定に合わせて値を変更してください
- IPアドレス と ポート番号 の間は
- 認証:
- SQL Server 認証
- ログイン: <ユーザ名>@<DBサーバのサーバ名>
- 例:dbuser@dev-dbserver-01.database.windows.net
- パスワード:<DB接続用パスワード>
- 127.0.0.1,11433
<DBサーバのサーバ名> は、Azure portal で対象の SQL Database の概要に、「サーバー名」として表示されている値です。
接続プロパティ
- データベースへの接続:<接続するDB名>
- 例:Dev-DB-01
- 暗号化接続:チェックON
- サーバー証明書を信頼する:チェックON
Always Encrypted
デフォルトのまま
追加の接続パラメーター
デフォルトのまま(空白)
SSMSの接続の設定画面 例
実際に設定をしたSSMSのサーバへの接続ウィンドウの状況は以下のとおりです。
まとめ
ここに記載した設定をした状態でSSMSで「接続」を行えば、Azure SQL Database へのDBに接続できます。