Azure Security Center の Just-In-Time VM アクセスを触ってみた。

#はじめに
Azure Security Center は Azure のサービスの一つで、Azure 上で実行されているリソースのセキュリティを制御監視し、悪意のある攻撃から保護する機能を持っています。

また、潜在的なセキュリティ ホールを塞いだり、セキュリティ ガイドランの準拠を促すような推奨事項を提供したりしてくれます。
今回は ***Standard レベル*** で有効化できる、***Just-In-Time VM アクセス*** を触ってみました。

Azure Security Center は ***Free レベル*** と ***Standard レベル*** に 2 つのレベルがあり、できることが下記画面ショットのように異なります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/a95392d6-c98b-2ef9-fc59-d396c48ab5de.png)

Standard レベルは 30 日間であれば無料で試せるということですので、今回紹介する Just-In-Tine VM アクセスも無料で触ることができます。

なお、前提条件として、この「Azure Security Center」は Azure のサービスとなりますので、「Azure のサブスクリプション」が必要になります。

#####なぜ「Just-In-Time VM アクセス」が有効なのか。
下記 Microsoft 公開情報にも書かれているとおり、RDP (3389) や SSH (22) を利用して Windows コンピューターや Linux マシンにリモート アクセスしますが、悪意のあるアクターはブルート フォース アタックと呼ばれるユーザー名とパスワードの組み合わせを総当たり式で上記の管理ポートを主な対象として攻撃をしかけてきます。

-参考情報
Just-In-Time アクセスを使用して管理ポートをセキュリティで保護する 攻撃シナリオ
URL:https://docs.microsoft.com/ja-jp/azure/security-center/security-center-just-in-time#attack-scenario
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/a6291d2b-6864-15cc-c843-52a3cd972b16.png)

RDP や SSH などの管理ポートに NW 的にアクセス可能な状態である限り、常にその危険に晒されている状態、と言うこともできます。
これらの管理ポートを***必要な時にだけ、必要な時間、必要なコンピューターに対してのみアクセスを許可させる***機能が「Just-In-Time VM アクセス」の機能になります。

#やってみる
Azure のすべてのサービスから「セキュリティ センター」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/5b4b03fb-ece8-9407-e3d0-cfa9bee98870.png)

概要画面の左ペインより「Just In Time VM アクセス」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/cb795eb1-c101-8b02-8856-ae9053a307a2.png)

既に Just-In-Time VM アクセスが構成済みのコンピューターは「構成済み」の一覧に表示されます。
未構成の場合は、「推奨」タブをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/3fbed981-fbb5-4efb-efd7-fbace1daf978.png)

「推奨」タブには  Just-In-Time VM アクセスが構成可能なコンピューターの中で、未構成のコンピューターが表示されます。
下記「Windows10-0322」に対して有効化する場合は、チェックボックスにチェックを入れて、画面右の「○○台の VM で JIT を有効にする」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/980631a9-bc03-63df-236d-c3638b79cd26.png)

今回検証する RDP (3389) も含め Just-In-Time VM の制御対象とできるポートが含まれていることを確認し、「保存」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/8e775bcf-3fc1-ab02-d3b0-21eb786a6d37.png)

構成が開始されるのでしばらく待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/b867e301-3cc4-efc8-7131-df40577c7f77.png)

構成が完了すると下記画面ショットのように「構成済み」のタブに移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/22c304c8-c80c-f6c8-ddea-be12ccb60e0a.png)

この状態では、「3389」ポートも含め設定した項目が「拒否」されている状態です。設定内容を確認してみましょう。
「ネットワーク セキュリティ グループ」→「対象のグループ名 (Windows10-0322-nsg)」→「概要」に表示されている「SecurityCenter-JITRule_xxxx」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/ef2fc21d-e9c2-d7cb-1995-fa70370386be.png)

下記画面ショットのように、「3389」を含む宛先ポートのアクションが「拒否」とする JIT (Just In Time) ルールが追加されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/ee183c2e-2691-6b65-5390-eb9ffb842a8a.png)

上記状態で RDP アクセスを行いたい場合には、Just In Time アクセスの対象のコンピューターのチェックボックスにチェックを入れて画面右の「アクセス権の要求」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/32b245de-12db-bae3-7503-fa1e437398b6.png)

アクセス権の要求の画面にて、利用したいポートの切り替えを「オン」ン変更し、「要求の理由を入力してください」の欄で理由を入力し、画面右下の「ポートを開く」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/1c3e91b4-711f-b322-4107-709bad1829ae.png)

アクセス要求が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/5fa0e29c-6528-32f1-eb23-bb44af2cbaa9.png)

下記画面ショットのように「3389」ポートが「アクティブ」となっていることが確認できます。
再度ネットワーク セキュリティ グループのポリシーを見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/87d15835-ba64-094c-729e-0fe37ce49bcb.png)

下記画面ショットのように、ポリシーが追加されています。対象のポリシーをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/5f051eef-4350-57a2-f85b-2fc7bfba3465.png)

対象のコンピューターの「パブリック IP」に対して、「3389」のみが「許可」されるポリシーが追加されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/29717a40-abfa-3a61-3a9e-e620c4b7d36d.png)

#####有効期限が切れた場合の動作

有効期限が切れると、下記画面ショットのように、ネットワーク セキュリティ グループ (NSG) に自動的に追加された JITRule の許可ルールが削除されます。つまり、「3389」ポートを使って RDP アクセスできない状況に自動的に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/6ae6555d-2088-ff34-2618-e7f9dee13074.png)

再度アクセス許可を申請するためには、セキュリティ センターの下記画面より、「アクセス権の要求」をクリックします。
*(※有効期限が切れるまで待たなくてはいけない都合上、別のコンピューターを対象に検証をしていますが、手順としては同一となります*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/a743d9bc-6e24-ad73-1af9-c6a16d835faf.png)

下記画面ショットのように、「切り替え」を「オン」にし、画面右下の「ポートを開く」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/2fa32c68-b457-96fe-b9ef-5656b87b2334.png)

アクセス要求が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/a1cd4518-efc9-fa16-5d7e-3b50ec8b02b0.png)

再度ネットワーク セキュリティ グループにアクセスすると下記画面ショットのように、RDP (3389) を対象のコンピューターに対してのみ許可されるルールが追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/055094b2-1ea4-2390-456b-b1e2c0563ad2.png)

このルールの実体は以下で確認できます。
「Just In Time VM アクセス」の「構成済み」のタブから画面右の「・・・」をクリックし、表示される「アクティビティ ログ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/24ed7876-cc2b-5506-0f16-8bd93e79c59d.png)

操作名から「Initiate JIT Network Access Policy」→「Initiate」の順にクリックし、表示される「JSON」のタブをクリックします。
表示される「プロパティ」の項目から以下情報が読み取れます。

| 項目   |   意味 |    値 (例)  |
|:-----------------|:------------------|:------------------|
| User       |設定者 (UPN) |   test001@contoso.com|
| Id         |            対象リソース コンピューター Id |/subscriptions/xxxxxx/resourceGroups/cloud-shell-storage-southeastasia/providers/Microsoft.Compute/virtualMachines/Windows10-001   |
| number           |              ポート番号|   3389   |
| allowedSourceAddressPrefix|              許可対象パブリック IP アドレス|  60.xxx.xx.xxx   |
| endTimeUtc|              ポリシーが切れる時間 (UTC 表記)| 2020-03-22T10:16:11.7441903Z    |
| Justification| 「要求の理由を入力してください」の欄で入力した文字列 |対象のコンピューターに対して作業を行うので RDP アクセスを要求します  |

#おわりに
今回は Azure Security Center の Standard レベルで利用できる「Just-In-Time VM アクセス」を動作検証してみました。

NW 管理者が都度ルールを書く必要もなく、作業者側から申請するだけで自動的にポリシーが追加されて有効期限が切れた段階でポリシーが消えるのでポリシー管理の手間もかかりません。
悪意のあるアクターからの攻撃の余地を少しでも減らすためには、このような機能を活用しない手はないと思います。

今回の記事が少しでも参考になれば幸いです。