第 12 章 仮想ネットワークを実装および管理する(15〜20%)
この章で学ぶこと
この章に出てくる用語
ネットワークセキュリティグループ(NSG)は、通信を許可・拒否する規則の集まりだ。サブネットとネットワークインターフェイス(NIC)に関連付けられる。
規則の評価には 5 タプル(送信元、送信元ポート、宛先、宛先ポート、プロトコル)を使う。そして NSG はステートフルだ。
試験では
ステートフルなので、許可した通信の応答は逆方向の規則を書かなくても通る。「送信を許可したが、戻りのために受信規則も要るか」→ 不要。ここを誤って余計な規則を足す選択肢が用意されている。
自分で作る規則の優先度は 100〜4096 の数値で、小さいほど優先度が高く、先に評価される。一致した時点で評価は止まる。

試験では
既定では外部からの受信はすべて拒否(DenyAllInbound, 65500)、送信インターネットは許可(AllowInternetOutBound, 65001)。この非対称が前提になっている設問が多い。「VM を作ったのに Web にアクセスできない」→ 受信許可規則を足す。
補足
既定規則は削除できないが、より小さい優先度番号の規則を作れば実質的に上書きできる。たとえば優先度 100 で「インターネットへの送信を拒否」を作れば、65001 の AllowInternetOutBound より先に評価されて送信を止められる。
NSG はサブネットと NIC の両方に付けられる。そのとき評価の順番が方向によって逆になる。

試験では
受信はサブネット → NIC、送信は NIC → サブネットの順に評価され、両方で許可されないと通らない。片方で許可しても、もう片方で拒否されていれば落ちる。実際に効いている結果を見るには、有効なセキュリティ規則(第 11 章の Network Watcher)を使う。
サービスタグは Storage や AzureLoadBalancer のように、Azure サービスの IP 範囲をまとめて表す名前だ。IP 範囲は Microsoft が自動で更新してくれる。
アプリケーションセキュリティグループ(ASG)は、VM の NIC を役割ごとにグループ化し、規則に IP ではなくグループ名を書けるようにする仕組みだ。

試験では
1 つの規則に複数の ASG は指定できない。サービスタグも 1 規則に 1 つだけ。「web と api の両方を 1 つの規則で許可したい」はできず、規則を分けるか ASG を 1 つにまとめる。
# NSG を作る (PowerShell: New-AzNetworkSecurityGroup)
az network nsg create -g rg -n nsg-web
# 規則を足す
az network nsg rule create -g rg \
--nsg-name nsg-web -n allow-https \
--priority 100 --destination-port-ranges 443 \
--access Allow --protocol Tcp
# ASG を作る
az network asg create -g rg -n asg-webVM にパブリック IP を付けずに、ポータルから TLS(443)経由で RDP / SSH 接続できるマネージドサービスだ。踏み台サーバーを自分で立てて運用する手間がなくなる。

試験では
VM 側にパブリック IP もエージェントも要らない。 ここが要点。「VM にパブリック IP を付けずに管理したい」と書かれていたら Bastion。
試験では
Bastion 専用サブネットの名前は AzureBastionSubnet でなければならず、サイズは /26 以上(2021-11-02 以降のデプロイ)。他のリソースは置けない。名前とサイズの両方が問われる。
Bastion のパブリック IP は、Developer とプライベート専用デプロイを除いて必要で、SKU は Standard、割り当ては静的でなければならない。
| SKU | 特徴 |
|---|---|
| Developer | 無料・共有インフラ・一度に 1 VM。開発とテスト向け |
| Basic | 専用デプロイ・2 インスタンス固定 |
| Standard | ホストスケーリング/ネイティブクライアント/共有可能リンク/カスタムポート/ファイル転送 |
| Premium | Standard の全機能 + セッション記録 + プライベート専用デプロイ |
試験では
セッション記録は Premium SKU 限定。「操作を録画して監査に残したい」なら Premium を選ぶ。また、同時接続数を増やすホストスケーリングは Standard 以上(Basic は 2 固定)。
ストレージアカウントや SQL Database のような PaaS サービスは、既定ではパブリックなエンドポイントを持っている。そこへの経路を絞る方法が 2 つあり、仕組みが根本的に違う。

| サービスエンドポイント | プライベートエンドポイント | |
|---|---|---|
| 宛先 IP | サービスのパブリック IP | VNet 内のプライベート IP |
| オンプレミスからの到達 | できない | できる(VPN / ExpressRoute 経由) |
| DNS の追加構成 | 不要 | 必要(プライベート DNS ゾーン) |
| 粒度 | サービス全体 | 特定のリソース(サブリソース単位) |
| 課金 | 無料 | 課金される |
サービスエンドポイントは、サブネットから PaaS への通信を Azure のバックボーンに閉じ、サービス側のファイアウォールで「このサブネットからを許可」と書けるようにする仕組みだ。宛先はあくまでサービスのパブリック IP のまま。無料で使える。
プライベートエンドポイントは、PaaS サービスに VNet 内のプライベート IP を割り当てる。読み取り専用の NIC が自動で作られ、以後その IP 宛てに通信する。
試験では
オンプレミスから到達させたいならプライベートエンドポイント。サービスエンドポイントはオンプレミスからは使えない。データ流出対策としてもプライベートエンドポイントのほうが強い。
試験では
プライベートエンドポイントを作ったら、プライベート DNS ゾーンの構成を忘れない。これが無いと、FQDN の名前解決がパブリック IP を返してしまい、プライベート IP に繋がらない。最も多いトラブルがこれ。
# サービスエンドポイントを有効にする
az network vnet subnet update -g rg \
--vnet-name vnet1 -n sub1 \
--service-endpoints Microsoft.Storage
# プライベートエンドポイントを作る (この後にプライベート DNS ゾーンの構成が要る)
az network private-endpoint create -g rg \
-n pe-storage --vnet-name vnet1 \
--subnet sub1 --private-connection-resource-id <ID> \
--group-id blob --connection-name c1この章のまとめ