VM の Just-In-Time アクセスを有効にする

Microsoft Defender for Cloud の Just-In-Time (JIT) アクセスを使用して、Azure 仮想マシン (VM) を未承認のネットワーク アクセスから保護できます。 多くの場合、ファイアウォールには、VM が攻撃に対して脆弱なままにする許可規則が含まれています。 JIT を使用すると、アクセスが必要な場合、必要なポート、必要な期間だけ VM へのアクセスを許可できます。

JIT のしくみと、JIT の構成と使用に必要なアクセス許可について説明します。

この記事では、次の方法を含む、セキュリティ プログラムに JIT を含める方法について説明します。

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

可用性

側面 詳細
リリース状態: 一般公開 (GA)
サポートされている VM: Azure Resource Manager を使用してデプロイされた VM
クラシック デプロイ モデルを使用してデプロイされた VM
VM と同じ VNET 上の Azure Firewall によって保護されている VM
Azure Firewall Manager によって制御される Azure Firewall によって保護されている VM
AWS EC2 インスタンス (プレビュー)
必要なロールとアクセス許可: 閲覧者SecurityReader、またはカスタム ロールは、JIT の状態とパラメーターを表示できます。
VM への JIT アクセスのみを要求する必要があるユーザーに対して最小特権のロールを作成するには、Set-JitLeastPrivilegedRole スクリプトを使用します。
クラウド: 商用クラウド
National (Azure Government、21Vianet によって運営される Microsoft Azure)
接続されている AWS アカウント (プレビュー)

前提条件

  • JIT では、サブスクリプションで Microsoft Defender for Servers Plan 2 を有効にする必要があります。

  • 閲覧者セキュリティ閲覧者ロールは、JIT の状態とパラメーターの両方を表示できます。

  • JIT で動作するカスタム ロールを作成する場合は、次の表にある詳細情報が必要となります。

    ユーザーを有効にする目的: 設定するアクセス許可
    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

    注意

    Microsoft.Security のアクセス許可のみが AWS に関連します。

  • アマゾン ウェブ サービス (AWS) VM に JIT を設定する場合は、Microsoft Defender for Cloud に AWS アカウントを接続する必要があります。

    ヒント

    VM への JIT アクセスを要求する必要があり、他の JIT 操作を実行しないユーザーに対して最小特権のロールを作成するには、Defender for Cloud GitHub コミュニティ ページにある Set-JitLeastPrivilegedRole スクリプトを使用します。

    Note

    カスタム JIT ポリシーを正常に作成するには、ポリシー名とターゲット VM 名を合わせて合計 56 文字以内にする必要があります。

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 は有効になっていないが、JIT をサポートできる VM。 これらの VM では JIT を有効にすることをお勧めします。
  • サポート対象外 - 次の理由で JIT をサポートしていない VM。
    • ネットワーク セキュリティ グループ (NSG) または Azure ファイアウォールが見つからない - JIT では、NSG が構成されていることか、ファイアウォール構成 (またはその両方) が必要です
    • クラシック VM - Azure Resource Manager を使用してデプロイされた VM は JIT でサポートされます。 クラシックと Azure Resource Manager のデプロイ モデルの詳細
    • その他 - サブスクリプションまたはリソース グループのセキュリティ ポリシーで JIT ソリューションが無効になっている場合です。

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

Screenshot showing configuring JIT VM access in Microsoft Defender for Cloud.

Defender for Cloud では、JIT VM アクセスの有効化と構成を行うことができます。

  1. [ワークロード保護] を開き、[高度な保護] から [Just-In-Time VM アクセス] を選びます。

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

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

    • 22 - SSH
    • 3389 - RDP
    • 5985 - WinRM
    • 5986 - WinRM

    JIT アクセスをカスタマイズするには、次を行います。

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

    2. 一覧のポートのいずれかを選択して編集するか、他のポートを入力します。 ポートごとに、次の設定を行うことができます。

      • [プロトコル] - 要求が承認されたときにこのポートで許可されるプロトコル
      • [許可されているソース IP] - 要求が承認されたときにこのポートで許可される IP 範囲
      • [最大要求時間] - 特定のポートを開放しておくことができる最大時間枠
    3. [OK] を選択します。

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

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

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

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

  1. [ワークロード保護] を開き、[高度な保護] から [Just-In-Time VM アクセス] を選びます。

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

  3. [JIT VM アクセス構成] では、ポートの一覧を編集するか、新しいカスタム ポートの [追加] を選択できます。

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

Microsoft Defender for Cloud から JIT が有効な VM へのアクセスを要求する

VM で JIT が有効になっている場合は、それに接続するためのアクセス権を要求する必要があります。 JIT を有効にした方法に関係なく、サポートされているいずれかの方法でアクセス権を要求できます。

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

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

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

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

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

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

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

    注意

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

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

Azure の仮想マシン

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

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

ヒント

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

  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 を右クリックして、[編集] を選択します。

      Editing a JIT VM access configuration in Microsoft Defender for Cloud.

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

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

Azure 仮想マシンの接続ページから JIT が有効な VM へのアクセス権を要求する

VM で JIT が有効になっている場合は、それに接続するためのアクセス権を要求する必要があります。 JIT を有効にした方法に関係なく、サポートされているいずれかの方法でアクセス権を要求できます。

Screenshot showing jit just-in-time request.

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

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

  2. 接続先の 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 構成が作成されます。

  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 を指定します。 たとえば、2 つの異なる VM (VM1 と VM2) の JIT 構成を確立するには、Set-AzJitNetworkAccessPolicy -Name VM1Set-AzJitNetworkAccessPolicy -Name VM2 を使用します。

PowerShell を使用して JIT が有効な VM へのアクセス権を要求する

次の例では、特定の IP アドレス、特定の期間でのポート 22 の特定の VM への Just-In-Time VM アクセス要求が示されています。

PowerShell で次のコマンドを実行します。

  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

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

Just-In-Time VM アクセス機能は、Microsoft Defender for Cloud API を介して使用できます。 構成済みの VM に関する情報を取得したり、新しい VM を追加したり、VM へのアクセス権を要求したりするには、この API を使用します。

詳細については、「JIT ネットワーク アクセス ポリシー」を参照してください。

REST API を使用して JIT が有効な VM へのアクセス権を要求する

Just-In-Time VM アクセス機能は、Microsoft Defender for Cloud API を介して使用できます。 構成済みの VM に関する情報を取得したり、新しい VM を追加したり、VM へのアクセス権を要求したりするには、この API を使用します。

詳細については、「JIT ネットワーク アクセス ポリシー」を参照してください。

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

ログ検索を使用して VM アクティビティについての情報が得ることができます。 ログを表示するには:

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

  2. 監査対象の VM で、行の最後にある省略記号メニューを開きます。

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

    Select just-in-time JIT activity log.

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

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

次の手順

この記事では、Just-In-Time VM アクセスを構成して使用する "方法" について説明しました。 JIT を使用する必要がある理由については、JIT が防御する脅威について説明した記事を参照してください。