Microsoft Defender for Cloud の Defender for Servers には、Just-In-Time マシン アクセス機能が用意されています。
Microsoft Defender for Cloud の Just-In-Time アクセスを使用して、承認されていないネットワーク アクセスから Azure VM を保護できます。 多くの場合、ファイアウォールには、VM を攻撃に対して脆弱なままにする許可規則が含まれています。 JIT を使用すると、アクセスが必要な場合、必要なポート、および必要な期間だけ、VM へのアクセスを許可できます。
この記事では、Just-In-Time アクセスを設定して使用する方法について説明します。これには、次の方法が含まれます。
- Azure portal またはプログラムで VM で Just-In-Time を有効にする
- Azure portal またはプログラムで Just-In-Time アクセスが有効になっている VM へのアクセスを要求する
- Just-In-Time アクセス アクティビティを監査 して、VM が適切にセキュリティ保護されていることを確認する
[前提条件]
Microsoft Defender for Servers プラン 2 は、サブスクリプションで有効にする必要があります。
サポートされている VM: Azure Resource Manager を介してデプロイされた VM、VM と同じ VNET 上の Azure Firewall によって保護された VM、AWS EC2 インスタンス (プレビュー)。
サポートされていない VM: クラシック デプロイ モデルでデプロイされた VM、Azure Firewall Manager によって制御される Azure Firewall によって保護された VM。
AWS VM で Just-In-Time アクセスを設定するには、 AWS アカウントを Microsoft Defender for Cloud に接続する必要があります。
JIT ポリシーを作成するには、対象となる VM 名と共にポリシー名を合計 56 文字以下にする必要があります。
閲覧者と SecurityReader のアクセス許可が必要です。または、カスタム ロールで JIT の状態とパラメーターを表示できます。
カスタム ロールの場合は、表にまとめられたアクセス許可を割り当てます。 VM への JIT アクセスのみを要求する必要があるユーザーに対して最小限の特権ロールを作成するには、 Set-JitLeastPrivilegedRole スクリプトを使用します。
| ユーザー アクション | 設定するアクセス許可 |
|---|---|
| VM の JIT ポリシーを構成または編集する |
ロールに次のアクションを割り当てます。
|
| VM への JIT アクセスを要求する |
次のアクションをユーザーに割り当てます。
|
| JIT ポリシーの読み取り |
次のアクションをユーザーに割り当てます。
|
注
AWS に関連するのは、 Microsoft.Security アクセス許可のみです。
VM への JIT アクセスのみを要求する必要があるユーザーに対して最小限の特権ロールを作成するには、Set-JitLeastPrivilegedRole スクリプトを使用します。
Microsoft Defender for Cloud を使用して JIT VM アクセスを操作する
Defender for Cloud を使用することも、独自のカスタム オプションを使用して JIT VM アクセスをプログラムで有効にすることも、Azure 仮想マシンから既定のハードコーディングされたパラメーターで JIT を有効にすることもできます。
Just-In-Time VM アクセスでは、基準に従ってグループ化されたVMが表示されます。
-
構成済み - Just-In-Time VM アクセスをサポートするように構成された VM と、次の情報が表示されます。
- 過去 7 日間に承認された JIT 要求の数
- 最後のアクセス日時
- 構成されている接続の詳細
- 最後のユーザー
- 未構成 - JIT が有効になっていない VM が、JIT をサポートできます。 これらの VM に対して JIT を有効にすることをお勧めします。
-
サポートされていません - 次の理由で JIT をサポートしていない VM
- ネットワーク セキュリティ グループ (NSG) または Azure Firewall が見つからない - JIT では、NSG を構成するか、ファイアウォール構成 (またはその両方) を構成する必要があります
- クラシック VM - JIT では、Azure Resource Manager 経由でデプロイされる VM がサポートされます。
- その他 - サブスクリプションまたはリソース グループのセキュリティ ポリシーで JIT ソリューションが無効になっています。
Microsoft Defender for Cloud から VM で JIT を有効にする
Defender for Cloud から、JIT VM アクセスを有効にして構成できます。
ワークロード保護を開き、高度な保護で Just-In-Time VM アクセスを選択します。
[ 未構成 の仮想マシン] タブで、保護する VM を JIT でマークし、[ VM で JIT を有効にする] を選択します。
[JIT VM アクセス] ページが開き、Defender for Cloud が次の保護を推奨するポートが一覧表示されます。
- 22 - SSH
- 3389 - RDP
- 5985 - WinRM
- 5986 - WinRM
JIT アクセスをカスタマイズするには:
[] を選択し、[] を追加します。
リスト内のポートのいずれかを選択して編集するか、他のポートを入力します。 ポートごとに、次の値を設定できます。
- プロトコル
- 許可されるソース IP
- 最大要求時間
[OK] を選択.
ポート構成を保存するには、[ 保存] を選択します。
Defender for Cloud を使用して JIT 対応 VM の JIT 構成を編集する
VM の Just-In-Time 構成を変更するには、その VM 用に保護する新しいポートを追加して構成するか、既に保護されているポートに関連するその他の設定を変更します。
VM の既存の JIT 規則を編集するには:
ワークロード保護を開き、高度な保護で Just-In-Time VM アクセスを選択します。
[ 構成済みの 仮想マシン] タブで、VM を右クリックし、[ 編集] を選択します。
JIT VM アクセス構成では、ポートの一覧を編集するか、[新しいカスタム ポートの追加] を選択できます。
ポートの編集が完了したら、[ 保存] を選択します。
Microsoft Defender for Cloud から JIT 対応 VM へのアクセスを要求する
VM で JIT が有効になっている場合は、VM に接続するためのアクセスを要求する必要があります。 JIT を有効にした方法に関係なく、サポートされているいずれかの方法でアクセス権を要求できます。
Just-In-Time VM アクセス ページで、[構成済み] タブを選択します。
アクセスする VM を選択します。
[接続の詳細] 列のアイコンは、ネットワーク セキュリティ グループまたはファイアウォールで JIT が有効になっているかどうかを示します。 両方で有効になっている場合は、ファイアウォール アイコンのみが表示されます。
[ 接続の詳細] 列には、VM にアクセスできるユーザーとポートが表示されます。
[アクセス権の要求] を選択します。 [ アクセスの要求 ] ウィンドウが開きます。
[ アクセスの要求] で、VM ごとに開くポート、ポートを開くソース IP アドレス、ポートを開く時間枠を選択します。
[ ポートを開く] を選択します。
注
アクセスを要求しているユーザーがプロキシの背後にある場合は、プロキシの IP アドレス範囲を入力できます。
JIT VM アクセスを操作するその他の方法
Azure 仮想マシン
Azure 仮想マシンから VM で JIT を有効にする
AZURE portal の Azure 仮想マシン ページから VM で JIT を有効にすることができます。
ヒント
VM で既に JIT が有効になっている場合は、VM 構成ページに JIT が有効であることが表示されます。 このリンクを使用して、Defender for Cloud で JIT VM アクセス ページを開き、設定を表示および変更できます。
Azure portal で、仮想マシンを検索して選択します。
JIT で保護する仮想マシンを選択します。
メニューの [ 構成] を選択します。
Just-In-Time アクセス で、Just-In-Time を有効にする を選択します。
既定では、VM の Just-In-Time アクセスでは次の設定が使用されます。
- Windows マシン:
- RDP ポート: 3389
- 許可される最大アクセス時間: 3 時間
- 許可されているソース IP アドレス: すべて
- Linux マシン:
- SSH ポート: 22
- 許可される最大アクセス時間: 3 時間
- 許可されているソース IP アドレス: すべて
- Windows マシン:
これらの値のいずれかを編集したり、JIT 構成にポートを追加したりするには、Microsoft Defender for Cloud の Just-In-Time ページを使用します。
Defender for Cloud のメニュー から、Just-In-Time VM アクセスを選択します。
[ 構成済み ] タブで、ポートを追加する VM を右クリックし、[ 編集] を選択します。
JIT VM アクセス構成では、既に保護されているポートの既存の設定を編集するか、新しいカスタム ポートを追加できます。
ポートの編集が完了したら、[ 保存] を選択します。
Azure 仮想マシンの接続ページから JIT 対応 VM へのアクセスを要求する
VM で JIT が有効になっている場合は、VM に接続するためのアクセスを要求する必要があります。 JIT を有効にした方法に関係なく、サポートされているいずれかの方法でアクセス権を要求できます。
Azure 仮想マシンからのアクセスを要求するには:
Azure portal で仮想マシンのページを開きます。
接続先の VM を選択し、[接続] ページを開きます。
Azure により、その VM で JIT が有効になっているかどうかが確認されます。
- VM に対して JIT が有効になっていない場合は、有効にするように求められます。
- JIT が有効になっている場合は、[アクセス権の要求] を選択し、要求元の IP、時間の範囲、その VM 用に構成されているポートを指定して、アクセス要求を渡します。
注
Azure Firewall によって保護された VM に対する要求が承認されると、Defender for Cloud は、VM への接続に使用する適切な接続の詳細 (DNAT テーブルからのポート マッピング) をユーザーに提供します。
PowerShell
PowerShell を使用して VM で JIT を有効にする
PowerShell から Just-In-Time VM アクセスを有効にするには、公式の Microsoft Defender for Cloud PowerShell コマンドレット Set-AzJitNetworkAccessPolicyを使用します。
例 - 次の規則を使用して、特定の VM で Just-In-Time VM アクセスを有効にします。
- ポート 22 と 3389 を閉じる
- 承認された要求ごとに開くことができるように、それぞれの最大時間枠を 3 時間に設定します
- アクセスを要求しているユーザーにソース IP アドレスの制御を許可する
- アクセスを要求しているユーザーが、承認された Just-In-Time アクセス要求で成功したセッションを確立することを許可する
次の PowerShell コマンドでは、この JIT 構成が作成されます。
VM の Just-In-Time VM アクセス規則を保持する変数を割り当てます。
$JitPolicy = (@{ id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME"; ports=(@{ number=22; protocol="*"; allowedSourceAddressPrefix=@("*"); maxRequestAccessDuration="PT3H"}, @{ number=3389; protocol="*"; allowedSourceAddressPrefix=@("*"); maxRequestAccessDuration="PT3H"})})VM Just-In-Time VM アクセス規則を配列に挿入します。
$JitPolicyArr=@($JitPolicy)選択した VM で Just-In-Time VM アクセス規則を構成します。
Set-AzJitNetworkAccessPolicy -Kind "Basic" -Location "LOCATION" -Name "default" -ResourceGroupName "RESOURCEGROUP" -VirtualMachine $JitPolicyArr-Name パラメーターを使用して VM を指定します。 たとえば、VM1 と VM2 という 2 つの異なる VM に対して JIT 構成を確立するには、
Set-AzJitNetworkAccessPolicy -Name VM1とSet-AzJitNetworkAccessPolicy -Name VM2を使用します。
PowerShell を使用して JIT 対応 VM へのアクセスを要求する
次の例では、ポート 22、特定の IP アドレス、および特定の時間について、特定の VM への Just-In-Time VM アクセス要求を確認できます。
PowerShell で次のコマンドを実行します。
VM 要求アクセス プロパティを構成します。
$JitPolicyVm1 = (@{ id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME"; ports=(@{ number=22; endTimeUtc="2020-07-15T17:00:00.3658798Z"; allowedSourceAddressPrefix=@("IPV4ADDRESS")})})配列に VM アクセス要求パラメーターを挿入します。
$JitPolicyArr=@($JitPolicyVm1)要求アクセスを送信する (手順 1 のリソース ID を使用)
Start-AzJitNetworkAccessPolicy -ResourceId "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Security/locations/LOCATION/jitNetworkAccessPolicies/default" -VirtualMachine $JitPolicyArr
詳細については、 PowerShell コマンドレットのドキュメントを参照してください。
REST API
REST API を使用して VM で JIT を有効にする
Just-In-Time VM アクセス機能は、Microsoft Defender for Cloud API を使用して使用できます。 この API を使用して、構成済みの VM に関する情報の取得、新しい VM の追加、VM へのアクセスの要求などを行います。
詳細については、 JIT ネットワーク アクセス ポリシーを参照してください。
REST API を使用して JIT 対応 VM へのアクセスを要求する
Just-In-Time VM アクセス機能は、Microsoft Defender for Cloud API を使用して使用できます。 この API を使用して、構成済みの VM に関する情報の取得、新しい VM の追加、VM へのアクセスの要求などを行います。
詳細については、 JIT ネットワーク アクセス ポリシーを参照してください。
Defender for Cloud での JIT アクセス アクティビティの監査
ログ検索を使用して、VM アクティビティに関する分析情報を得ることができます。 ログを表示するには:
Just-In-Time VM アクセスから、[構成済み] タブを選択します。
監査する VM の場合は、行の末尾にある省略記号メニューを開きます。
メニューから [アクティビティ ログ ] を選択します。
アクティビティ ログには、その VM に対する以前の操作のフィルター処理されたビューと、時刻、日付、サブスクリプションが表示されます。
ログ情報をダウンロードするには、[ CSV としてダウンロード] を選択します。