Azureで素振り(データベースと踏み台サーバ)

DXソリューション開発部の吉倉です。

みなさん、クラウドで環境構築してますか?

環境構築は、慣れだと思っています。
やったことないならまず1回やってみる。
1回やってみたなら、その環境を改めて1から作ってみつつ、「改善点が無いか?」と設定を見返したり、他に便利なサービスが出ていないか?を探したりする。

私はこの行為を「素振り」と呼んでますが、この素振りが勉強になったり、楽しかったりします。
知見を深めるために、Azureでも「素振り」をやろうということでブログを起こしました。
参考になれば幸いです。

今回のお題

クラウド上のDBサーバにSQLを発行する作業を自宅PCから実施したい。
DBサーバはパブリックIPを持っていないため、直接接続はできない。
仮想ネットワーク内にPublicIPを持っている踏み台サーバを作成し、踏み台サーバ経由でDBサーバに接続する。
踏み台サーバは普段は停止しており、必要な時のみ起動する。

AWSだとこうです。

こうすれば、クライアントからリモートデスクトップでEC2にログインし、
リモートデスクトップから、RDSに接続ができます。
「Systems Managerは?」って声が聞こえて来そうですが、今回は仮想マシンを立てた例の説明ということでご容赦くださいませ。

今回の環境

  • Windows 10 Pro(21H1)
  • Windows ターミナル 1.12.10983.0
  • PowerShell 7.2.4
  • Azure CLI 2.37.0

事前準備(今回は詳細割愛)

  • Azure用のアカウント作成
  • サブスクリプション作成
  • Azure CLIのインストール
  • Azureにログイン

作成するリソース

  1. リソースグループの作成
  2. 仮想ネットワーク(Virtual Network)の作成
  3. Network Security Groupの作成
  4. 踏み台サーバ(Virtual Machine)の作成
  5. SQL Database(サーバ・データベース)
  6. Private Linkの作成

リソースビジュアライザで見るとこうなります。

リソースグループ内に最終的に出来上がるものは以下のとおりです。

なお、SQL Databaseは仮想ネットワーク上にデプロイできないので、今回の構成を満たすには以下のような方法を採る必要があります。

  1. パブリック接続にして、接続可能なIPアドレス以外はファイアウォール規則でブロック
  2. 仮想ネットワークにプライベートエンドポイントを持たせて、仮想ネットワーク内のリソースからしかアクセスできない状態を作る

今回は2の方法を採用します。

リソースグループの作成

仮想ネットワーク(Virtual Network)の作成

実行後、こうなります。


Network Security Groupの作成

実行後、こうなります。



踏み台サーバ(Virtual Machine)の作成

実行後、こうなります。

SQL Database(サーバ・データベース)

実行後、こうなります。


Private Linkの作成

実行後、こうなります。




検証

では、踏み台に接続して、データベースに接続してみましょう。
踏み台にsshで接続の後、以下を実行。
nc -zv dbserver-for-blog2.database.windows.net 1433

接続確認OK

Connection to dbserver-for-blog2.database.windows.net 1433 port [tcp/ms-sql-s] succeeded!

プライベートIPで参照してるよね、ということの確認もしましょう。
nslookup dbserver-for-blog2.database.windows.net

結果。プライベートIPアドレスが返ってきます。

Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
dbserver-for-blog2.database.windows.net canonical name = dbserver-for-blog2.privatelink.database.windows.net.
Name: dbserver-for-blog2.privatelink.database.windows.net
Address: 10.1.0.5

では、最後にSqlcmdで接続しましょう。(インストールは割愛)
sqlcmd -S tcp:dbserver-for-blog2.database.windows.net,1433 -U hogefugadb -d db-for-blog2
ログインして、SQLを発行。

———————————————–
db-for-blog2
(1 rows affected)

SELECT文が発行できました!

おわりに

素振りも数をこなせば、自分のものになっていくかと思います。
「AWSならこうやるけど、Azureなら?」を一つずつ積み上げていきます。

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

アーカイブ

カテゴリー

PAGE TOP