ジャストインタイム アクセスを有効にする

Defender for Servers Microsoft Defender for Cloud では、Just-In-Time (JIT) マシン アクセス機能が提供されます。

Microsoft Defender for Cloudのジャストインタイムアクセスを利用して、Azure仮想マシン(VM)を不正なネットワークアクセスから保護できます。 多くの場合、ファイアウォールには、VM を公開したままにする許可規則が含まれます。 JIT を使用すると、必要な場合、必要なポート、および必要な時間だけアクセスを許可できます。

この記事では、Just-In-Time アクセスを設定して使用する方法について説明します。これには、次の方法が含まれます。

  • Azure portal またはプログラムで VM で Just-In-Time を有効にする
  • Azure portal またはプログラムで Just-In-Time アクセスが有効になっている VM へのアクセスを要求する
  • Just-In-Time アクセス アクティビティを監査 して、VM が適切にセキュリティ保護されていることを確認する

Prerequisites

  • サブスクリプションでMicrosoft Defender for Servers Plan 2を有効にしてください。

  • サポートされている VM: Azure Resource Manager経由でデプロイされた VM、VM と同じ仮想ネットワーク (VNet) 上のAzure Firewallによって保護された VM、および AWS EC2 インスタンス (プレビュー)。

  • サポートされていない VM: クラシック デプロイ モデルでデプロイされた VM、Azure Firewall Manager によって制御される Azure Firewall によって保護された VM。

  • AWS VMでジャストインタイムアクセスを設定するには、AWSアカウントをDefender for Cloudに接続してください。

  • JITポリシーを作成するには、ポリシー名とターゲットとなるVM名は56文字を超えてはなりません。

  • JIT の状態とパラメーターを表示するには、 閲覧者 と SecurityReader のアクセス許可が必要です。 カスタム ロールは、このアクセスを提供することもできます。

  • カスタムロールの場合は、以下の表にまとめられた権限を割り当てます。 VM への JIT アクセスのみを要求する必要があるユーザーに対して最小限の特権ロールを作成するには、 Set-JitLeastPrivilegedRole スクリプトを使用します。

ユーザー アクション 設定するアクセス許可
VM の JIT ポリシーを構成または編集する ロールに次のアクションを割り当てます。
  • VMに関連付けられたサブスクリプション(APIやPowerShellのみを使う場合はリソースグループ)の範囲について:
    Microsoft.Security/locations/jitNetworkAccessPolicies/write
  • VM のサブスクリプション (または API または PowerShell のみを使用する場合はリソース グループ) のスコープ:
    Microsoft.Compute/virtualMachines/write
VM への JIT アクセスを要求する 次のアクションをユーザーに割り当てます。
  • Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
  • Microsoft.Security/locations/jitNetworkAccessPolicies/*/read
  • Microsoft.Compute/virtualMachines/read
  • Microsoft.Network/networkInterfaces/*/read
  • Microsoft.Network/publicIPAddresses/read
JIT ポリシーの読み取り 次のアクションをユーザーに割り当てます。
  • Microsoft.Security/locations/jitNetworkAccessPolicies/read
  • Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
  • Microsoft.Security/policies/read
  • Microsoft.Security/pricings/read
  • Microsoft.Compute/virtualMachines/read
  • Microsoft.Network/*/read

Note

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が表示されます。

  • 構成:ジャストインタイムのVMアクセスをサポートするように設定されたVMです。 このビューは以下の通りです:

    • 過去 7 日間に承認された JIT 要求の数
    • 最後のアクセス日時
    • 構成されている接続の詳細
    • 最後のユーザー
  • 設定されていない:JITが有効でないVMですが、JITはサポート可能です。 これらのVMでJITを有効にしてください。

  • サポートされていないもの:JITをサポートしないVMで、理由は以下の通りです:

    • ネットワークセキュリティグループ(NSG)やAzure Firewallが欠けています。 JITはNSGの設定かファイアウォールの設定、またはその両方が必要です。
    • クラシックなVMです。 JITはResource Managerを通じて展開されるVMをサポートします。
    • その他。 JITソリューションはサブスクリプションまたはリソースグループのセキュリティポリシーで無効化されています。

Microsoft Defender for Cloud から VM で JIT を有効にする

Defender for Cloud から、JIT VM アクセスを有効にして構成できます。

Defender for Cloudから VM で JIT を有効にするには:

  1. ワークロード保護を開き、高度な保護で Just-In-Time VM アクセスを選択します。

    Microsoft Defender for Cloud で Just-In-Time VM アクセスを構成する方法を示すスクリーンショット。

  2. [ 未構成 の仮想マシン] タブで、保護する VM を JIT でマークし、[ VM で JIT を有効にする] を選択します。

    [JIT VM アクセス] ページが開き、Defender for Cloud が次の保護を推奨するポートが一覧表示されます。

    • 22 - SSH
    • 3389 - RDP(リモートデスクトッププロトコル)
    • 5985 - WinRM
    • 5986 - WinRM

    JIT アクセスをカスタマイズするには:

    1. [] を選択し、[] を追加します。

    2. リスト内のポートのいずれかを選択して編集するか、他のポートを入力します。 ポートごとに、次の値を設定できます。

      • プロトコル
      • 許可されるソース IP
      • 最大要求時間
    3. [OK] を選択.

  3. ポート構成を保存するには、[ 保存] を選択します。

Defender for Cloud を使用して JIT 対応 VM の JIT 構成を編集する

VM の Just-In-Time 構成を変更するには、その VM 用に保護する新しいポートを追加して構成するか、既に保護されているポートに関連するその他の設定を変更します。

VM の既存の JIT 規則を編集するには:

  1. ワークロード保護を開き、高度な保護で Just-In-Time VM アクセスを選択します。

  2. [ 構成済みの 仮想マシン] タブで、VM を右クリックし、[ 編集] を選択します。

  3. JIT VM アクセス設定でポートリストを編集するか、新しいカスタムポートを追加を選択します。

  4. ポートの編集が完了したら、[ 保存] を選択します。

Microsoft Defender for Cloud から JIT 対応 VM へのアクセスを要求する

仮想マシンにJITが有効になっている場合、接続するにはアクセス権を要求する必要があります。 JITを有効にした方法に関係なく、サポート可能な方法でアクセスをリクエストできます。

Defender for Cloudから JIT 対応 VM へのアクセスを要求するには:

  1. Just-In-Time VM アクセス ページで、[構成済み] タブを選択します。

  2. アクセスする VM を選択します。

    • [接続の詳細] 列のアイコンは、ネットワーク セキュリティ グループまたはファイアウォールで JIT が有効になっているかどうかを示します。 両方で有効になっている場合は、ファイアウォール アイコンのみが表示されます。

    • [ 接続の詳細] 列には、VM にアクセスできるユーザーとポートが表示されます。

  3. [ アクセスの要求] を選択します。 [ アクセスの要求 ] ウィンドウが開きます。

  4. [ アクセスの要求] で、VM ごとに開くポート、ポートを開くソース IP アドレス、ポートを開く時間枠を選択します。

  5. [ ポートを開く] を選択します。

    Note

    アクセスを要求しているユーザーがプロキシの背後にいる場合は、プロキシのIPアドレス範囲を入力します。

JIT VM アクセスを操作するその他の方法

また、Azure仮想マシン、PowerShell、REST APIを通じてジャストインタイムのVMアクセスを管理することも可能です。

Azure 仮想マシン

以下のタスクは、Azureポータル内のAzure仮想マシン体験からJITアクセスを有効化・要求する方法を示しています。

Azure 仮想マシンから VM で JIT を有効にする

AZURE portal の Azure 仮想マシン ページから VM で JIT を有効にすることができます。

Azure仮想マシンから VM で JIT を有効にするには:

Tip

VM で既に JIT が有効になっている場合は、VM 構成ページに JIT が有効であることが表示されます。 そのページの Just-in-time VM アクセス リンクを使用して、Defender for Cloudを開き、設定を確認または変更します。

  1. Azure portal で、仮想マシンを検索して選択します。

  2. JIT で保護する仮想マシンを選択します。

  3. メニューの [ 構成] を選択します。

  4. Just-In-Time アクセス で、Just-In-Time を有効にする を選択します。

    既定では、VM の Just-In-Time アクセスでは次の設定が使用されます。

    • Windows マシン:
      • RDP ポート: 3389
      • 許可される最大アクセス時間: 3 時間
      • 許可されるソース IP アドレス: 任意
    • Linux マシン:
      • SSH ポート: 22
      • 許可される最大アクセス時間: 3 時間
      • 許可されるソース IP アドレス: 任意
  5. これらの値のいずれかを編集したり、JIT 構成にポートを追加したりするには、Microsoft Defender for Cloud の Just-In-Time ページを使用します。

    1. Defender for Cloud のメニュー から、Just-In-Time VM アクセスを選択します。

    2. [ 構成済み ] タブで、ポートを追加する VM を右クリックし、[ 編集] を選択します。

      許可されたポートとアクセス期間のオプションを示す Just-In-Time VM アクセス設定の編集のスクリーンショット。

    3. JIT VM アクセス構成では、既に保護されているポートの既存の設定を編集するか、新しいカスタム ポートを追加できます。

    4. ポートの編集が完了したら、[ 保存] を選択します。

Azure 仮想マシンの接続ページから JIT 対応 VM へのアクセスを要求する

仮想マシンにJITが有効になっている場合、接続するにはアクセス権を要求する必要があります。 JITを有効にした方法に関係なく、サポート可能な方法でアクセスをリクエストできます。

選択したポートとアクセス期間を示す Just-In-Time VM アクセス要求のスクリーンショット。

Azure 仮想マシンからのアクセスを要求するには:

  1. Azure portal で、仮想マシンのページを開きます。

  2. 接続先の VM を選択し、[接続] ページを開きます。

    Azure では、その VM で JIT が有効になっているかどうかを確認します。

    • VM に対して JIT が有効になっていない場合は、有効にするように求められます。
    • JIT が有効になっている場合は、Request access を選択して、その VM 用に構成した要求元 IP、時間範囲、およびポートを含むアクセス要求を送信します。

Note

Azure Firewallで保護されたVMへのリクエストが承認されると、Defender for CloudはDNATテーブルからのポートマッピングを含む接続情報を提供し、VMに接続するための情報を提供します。

PowerShell

PowerShellコマンドレットを使ってJITアクセスを有効化・リクエストすることもできます。

PowerShell を使用して VM で JIT を有効にする

PowerShell から Just-In-Time VM アクセスを有効にするには、公式の Microsoft Defender for Cloud PowerShell コマンドレット Set-AzJitNetworkAccessPolicyを使用します。

PowerShell を使用して VM で JIT を構成するには:

この例は、以下のルールで特定のVMに対してジャストインタイムのVMアクセスを可能にします:

  • ポート 22 と 3389 を閉じる
  • 承認された要求ごとに開くことができるように、それぞれの最大時間枠を 3 時間に設定します
  • アクセスを要求しているユーザーにソース IP アドレスの制御を許可する
  • アクセスを要求しているユーザーが、承認された Just-In-Time アクセス要求で成功したセッションを確立することを許可する

次の PowerShell コマンドでは、この JIT 構成が作成されます。

  1. 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"})})
    
  2. VM Just-In-Time VM アクセス規則を配列に挿入します。

    $JitPolicyArr=@($JitPolicy)
    
  3. 選択した VM で Just-In-Time VM アクセス規則を構成します。

    Set-AzJitNetworkAccessPolicy -Kind "Basic" -Location "LOCATION" -Name "default" -ResourceGroupName "RESOURCEGROUP" -VirtualMachine $JitPolicyArr
    

    -Nameパラメータを使って各VMのJITポリシー名を指定します。 たとえば、VM1 と VM2 という 2 つの異なる VM に対して JIT 構成を確立するには、Set-AzJitNetworkAccessPolicy -Name VM1 と Set-AzJitNetworkAccessPolicy -Name VM2を使用します。

PowerShell を使用して JIT 対応 VM へのアクセスを要求する

次の例では、ポート 22、特定の IP アドレス、および特定の時間について、特定の VM への Just-In-Time VM アクセス要求を確認できます。

PowerShellを使ってJIT対応VMへのアクセスを要求するには、以下のコマンドを実行します。

  1. VM 要求アクセス プロパティを構成します。

    $JitPolicyVm1 = (@{
        id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME";
        ports=(@{
            number=22;
            endTimeUtc="2020-07-15T17:00:00.3658798Z";
            allowedSourceAddressPrefix=@("IPV4ADDRESS")})})
    
  2. 配列に VM アクセス要求パラメーターを挿入します。

    $JitPolicyArr=@($JitPolicyVm1)
    
  3. 要求アクセスを送信する (手順 1 のリソース ID を使用)

    Start-AzJitNetworkAccessPolicy -ResourceId "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Security/locations/LOCATION/jitNetworkAccessPolicies/default" -VirtualMachine $JitPolicyArr
    

詳細については、 PowerShell コマンドレットのドキュメントを参照してください。

REST API

Microsoft Defender for Cloud REST APIを使ってプログラム的にJIT VMアクセスを管理できます。

REST API を使用して VM で JIT を有効にする

ジャストインタイムのVMアクセス機能は、Microsoft Defender for Cloud APIと連携して使用できます。 この API を使用して、構成済みの VM に関する情報の取得、新しい VM の追加、VM へのアクセスの要求などを行います。

詳細については、 JITネットワークアクセスポリシーをご覧ください。

REST API を使用して JIT 対応 VM へのアクセスを要求する

ジャストインタイムのVMアクセス機能は、Microsoft Defender for Cloud APIと連携して使用できます。 この API を使用して、構成済みの VM に関する情報の取得、新しい VM の追加、VM へのアクセスの要求などを行います。

詳細については、 JITネットワークアクセスポリシーをご覧ください。

Defender for Cloud での JIT アクセス アクティビティの監査

ログ検索を使用して VM アクティビティを確認します。 ログを表示するには:

  1. Just-In-Time VM アクセスから、[構成済み] タブを選択します。

  2. 監査する VM の場合は、行の末尾にある省略記号メニューを開きます。

  3. メニューから [アクティビティ ログ ] を選択します。

    Defender for Cloud で Just-In-Time VM アクセス アクティビティ ログを選択するスクリーンショット。

    アクティビティ ログには、その VM に対する以前の操作のフィルター処理されたビューと、時刻、日付、サブスクリプションが表示されます。

  4. ログ情報をダウンロードするには、[ CSV としてダウンロード] を選択します。

次のステップ