Azure初心者の自分用のメモ。
前に一度勉強したけど、コロナとGWで久しぶりに手を動かしてみたんでレシピ的に整理。(2020/5/3時点)
前提として、Microsoft アカウントは作成済。
サブスクリプションも用意済。
-
リソースグループを作成
- MyRG1
-
仮想ネットワークを作成
- vn-yokohama , 10.0.0.0/16
- サブネットを二つ作成
- default , 10.0.0.0/24
- subnet-1 , 10.0.1.0/24
- subnet-2 , 10.0.11.0/24
-
ネットワークセキュリティーグループを作成
- nsg-public
- nsg-private -
サブネットとネットワークセキュリティーグループを紐づけ
- subnet-1 --> nsg-public
- subnet-2 --> nsg-private -
Virtual Machineを3台作成
- Web Server用
- subnet-1
- とりあえずubuntu
- vm-web1
- PIP(Public IP)はあり
- NICを指定する際に「ネットワークセキュリティーグループ」は「nsg-public」を指定
- DB Server用
- subnet-2
- とりあえず ubuntu
- vm-db1
- PIP(Public IP)なし
- NICを指定する際に「nsg-private]を指定
- Test用
- サブネットはdefault (10.0.0.0/24)
- とりあえずubuntu
- vm-default
- ネットワークセキュリティーグループはなんでもよし(新規作成でOK)
- Web Server用
#テスト
-
vm-defaultへログイン
- vm-defaultへログインしてから、vm-db1へログイン(ログインできるはず)
-
vm-web1へログイン
- 同様に、vm-db1へのログインができることを確認
-
nsg-privatenoの以下を変更
- 受信ポートの規則を追加
- ソースサービスタグ:VirtualNetwork
- ソースポート範囲: *
- 宛先:VirtualNetwork
- 宛先ポート範囲:*
- プロトコル:ANY
- アクション:拒否
- 優先度:200
- 名前: DenyInboundFromVNET
- 保存。有効になるまで1分程度待機。
- vm-default, vm-web1からvm-db1にログインできなくなっていることを確認
- 受信ポートの規則を追加
-
nsg-privateへ以下を追加
- 受信ポートの規則を追加
- ソース: IP Address
- ソースIPアドレス:10.0.1.0/24
- ソースポート範囲: *
- 宛先:Any
- 宛先ポート範囲:22
- プロトコル:TCP
- アクション:許可
- 優先度:100
- 名前: AllowSSHfromSub1
- 保存。有効になるまで1分程度待機。
- vm-db1へはvm-defaultからはログインできないが、vm-web1からは可能になる
- 受信ポートの規則を追加
# 気が付いたこと
- vm-db1にはPublic IPがないけど、インターネットへの通信ができる。(vm-db1からcurl www.google.comなどは応答される)
- これはAzureのネットワークにSNATというNAT機能が、標準利用されているため。
オンプレやAWSなどでNATインスタンスを用意するのに比べると少し独特だが、便利だし無料。ただし性能は限定的のようなのでSNATで処理しきれないようであれば、自分でNATインスタンスを用意して利用するのだそうだ。
- https://blog.nnasaki.com/entry/2019/12/11/073558
-
- Outboundもできないようにするなら、ネットワークセキュリティーグループの送信ポートの規則でできそう。
-AWSだとソースに別の「セキュリティーグループ」を設定できるけど、Azureだとネットワーク・セキュリティーグループはまずはネットワーク。アプリケーション・セキュリティーグループというでサーバーをグルーピングして指定する。両者一長一短ありそう。