Intuneマネージド S モード デバイスで基幹業務 Win32 アプリを許可する

Windows Defender アプリケーションコントロール (WDAC) の一部の機能は、特定の Windows バージョンでのみ使用できます。 詳細については、「アプリケーション制御機能の可用性Windows Defender」を参照してください。

Microsoft Intuneを使用すると、S モード デバイスの Intune マネージド Windows 10で、重要な Win32 アプリケーションと、通常 S モードでブロックされる Windows コンポーネントを展開して実行できます。 たとえば、PowerShell.exe。

Intuneを使用すると、Windows Defender アプリケーション制御 (WDAC) 補助ポリシーを使用してマネージド S モード デバイスを構成できます。これは、S モードの基本ポリシーを展開して、organizationが使用するアプリを承認します。 この機能により、S モードのセキュリティ体制が "Microsoft によってすべてのアプリが検証されました" から "Microsoft または organization によってすべてのアプリが検証されました" に変更されます。

この機能の概要と簡単なデモについては、次のビデオを参照してください。

ポリシー承認プロセス

ポリシー承認フローの基本的な図。

S モード デバイスでIntuneマネージド Windows 10の S モード 基本ポリシーを展開するための一般的な手順は、補足ポリシーを生成し、そのポリシーに署名し、署名済みポリシーをIntuneにアップロードして、ユーザーまたはデバイス グループに割り当てることです。 補足ポリシーを生成するには PowerShell コマンドレットにアクセスする必要があるため、S モード以外のデバイスでポリシーを作成して管理する必要があります。 ポリシーがIntuneにアップロードされたら、ポリシーをより広範に展開する前に、S モード デバイスの 1 つのテスト Windows 10に割り当てて、期待される機能を確認します。

  1. WDAC ツールを使用して補足ポリシーを生成します。

    このポリシーは、S モードの基本ポリシーを拡張して、より多くのアプリケーションを承認します。 S モードの基本ポリシーまたは補足ポリシーによって承認されたものは、実行が許可されます。 補足ポリシーでは、ファイルパス規則、信頼された発行元などを指定できます。

    補足ポリシーの作成の詳細については、「 複数の WDAC ポリシーを展開する」を参照してください。 ポリシー用に作成する適切なルールの種類の詳細については、「 WDAC ポリシー ルールとファイル ルールの展開」を参照してください。

    次の手順は、S モード補助ポリシーを作成するための基本的なセットです。

    • New-CIPolicy を使用して新しい基本ポリシーを作成します。

      New-CIPolicy -MultiplePolicyFormat -ScanPath <path> -UserPEs -FilePath "<path>\SupplementalPolicy.xml" -Level FilePublisher -Fallback SignedVersion,Publisher,Hash
      
    • Set-CIPolicyIdInfo を使用して補足ポリシーに変更します。

      Set-CIPolicyIdInfo -SupplementsBasePolicyID 5951A96A-E0B5-4D3D-8FB8-3E5B61030784 -FilePath "<path>\SupplementalPolicy.xml"
      

      S モードの基本ポリシーを補完するポリシーの場合は、 を使用します -SupplementsBasePolicyID 5951A96A-E0B5-4D3D-8FB8-3E5B61030784。 この ID は S モード ポリシー ID です。

    • Set-RuleOption を使用してポリシーを適用モードにします。

      Set-RuleOption -FilePath "<path>\SupplementalPolicy.xml>" -Option 3 -Delete
      

      このコマンドは、'audit mode' 修飾子を削除します。

    • ポリシーに署名するため、ポリシーの署名に使用する署名証明書を承認する必要があります。 必要に応じて、今後ポリシーの更新に署名するために使用できる 1 人以上の追加署名者も承認します。 プロセス全体の次の手順である ポリシーに署名し、詳細に説明します。

      署名証明書を WDAC ポリシーに追加するには、 Add-SignerRule を使用します

      Add-SignerRule -FilePath <policypath> -CertificatePath <certpath> -User -Update
      
    • ConvertFrom-CIPolicy を使用して に.bin変換します。

      ConvertFrom-CIPolicy -XmlFilePath "<path>\SupplementalPolicy.xml" -BinaryFilePath "<path>\SupplementalPolicy.bin>
      
  2. ポリシーに署名します。

    補助 S モード ポリシーはデジタル署名されている必要があります。 ポリシーに署名するには、organizationのカスタム公開キー 基盤 (PKI) を使用します。 内部 CA を使用した署名の詳細については、「 WDAC 用のコード署名証明書を作成する」を参照してください。

    ヒント

    詳細については、「 Azure Code の署名、開発者とコンシューマーの信頼の民主化」を参照してください。

    署名したら、ポリシーの名前を に {PolicyID}.p7b変更します。 補足ポリシー XML から PolicyID を取得します。

  3. Microsoft Intuneを使用して署名された補足ポリシーをデプロイします。

    Microsoft Intune ポータルに移動し、[クライアント アプリ] ページに移動し、[S モードの補足ポリシー] を選択します。 署名済みポリシーをIntuneにアップロードし、ユーザーまたはデバイス グループに割り当てます。 Intuneは、テナントと特定のデバイスの承認トークンを生成します。 Intune、割り当てられたグループ内の各デバイスに対応する承認トークンと補足ポリシーをデプロイします。 これらのトークンとポリシーを組み合わせることで、デバイス上の S モードの基本ポリシーが拡張されます。

補足ポリシーを更新するときは、新しいバージョン番号が以前のバージョン番号より厳密に大きくなっています。 Intuneでは、同じバージョン番号の使用は許可されません。 バージョン番号の設定の詳細については、「 Set-CIPolicyVersion」を参照してください。

Intuneを使用してアプリをデプロイするための標準プロセス

Intuneを使用してアプリをデプロイするための基本的な図。

署名付きカタログとアプリの展開をパッケージ化する既存の手順の詳細については、「Microsoft Intuneでの Win32 アプリ管理」を参照してください。

省略可能: カタログを使用してアプリをデプロイするプロセス

カタログを使用してアプリを展開するための基本的な図。

補足ポリシーを使用して S モードの基本ポリシーを大幅に緩和できますが、その際に考慮する必要があるセキュリティのトレードオフがあります。 たとえば、署名者ルールを使用して外部署名者を信頼できますが、その証明書によって署名されたすべてのアプリが承認されます。これには、許可しないアプリも含まれる場合があります。

organizationの外部で署名者を承認する代わりに、Intuneには、署名付きカタログを使用して既存のアプリケーションを簡単に承認できるようにする機能があります。 この機能では、ソース コードへの再パッケージ化やアクセスは必要ありません。 これは、同じ署名証明書を共有するすべてのアプリを信頼したくない場合に、署名されていないアプリや署名されたアプリに対しても機能します。

基本的なプロセスは、パッケージ インスペクターを使用してアプリごとにカタログ ファイルを生成し、カスタム PKI を使用してカタログ ファイルに署名することです。 補足ポリシーでカタログ署名証明書を承認するには、ポリシー承認プロセスの手順 1 で前述したように、Add-SignerRule PowerShell コマンドレットを使用します。 その後、前に説明したIntuneを使用してアプリをデプロイするための Standard プロセスを使用します。 カタログの生成の詳細については、「 WDAC をサポートするためのカタログ ファイルの展開」を参照してください。

アプリが更新されるたびに、更新されたカタログをデプロイする必要があります。 自動更新するアプリケーションにカタログ ファイルを使用しないようにし、ユーザーが自分でアプリケーションを更新しないように指示します。

サンプル ポリシー

次のポリシーは、カーネル デバッガー、PowerShell ISE、レジストリのエディターを許可するサンプルです。 また、organizationのコード署名証明書とポリシー署名証明書を指定する方法も示します。

<?xml version="1.0" encoding="utf-8"?>
<SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy" PolicyType="Supplemental Policy">
  <VersionEx>10.0.0.0</VersionEx>
  <PlatformID>{2E07F7E4-194C-4D20-B7C9-6F44A6C5A234}</PlatformID>
  <!--Standard S mode GUID-->
  <BasePolicyID>{5951A96A-E0B5-4D3D-8FB8-3E5B61030784}</BasePolicyID>
  <!--Unique policy GUID-->
  <PolicyID>{52671094-ACC6-43CF-AAF1-096DC69C1345}</PolicyID>
  <!--EKUS-->
  <EKUs />
  <!--File Rules-->
  <FileRules>
    <!--Allow kernel debuggers-->
    <Allow ID="ID_ALLOW_CBD_0" FriendlyName="cdb.exe" FileName="CDB.Exe" />
    <Allow ID="ID_ALLOW_KD_0" FriendlyName="kd.exe" FileName="kd.Exe" />
    <Allow ID="ID_ALLOW_WINDBG_0" FriendlyName="windbg.exe" FileName="windbg.Exe" />
    <Allow ID="ID_ALLOW_MSBUILD_0" FriendlyName="MSBuild.exe" FileName="MSBuild.Exe" />
    <Allow ID="ID_ALLOW_NTSD_0" FriendlyName="ntsd.exe" FileName="ntsd.Exe" />
    <!--Allow PowerShell ISE and Registry Editor-->
    <Allow ID="ID_ALLOW_POWERSHELLISE_0" FriendlyName="powershell_ise.exe" FileName="powershell_ise.exe" />
    <Allow ID="ID_ALLOW_REGEDIT_0" FriendlyName="regedit.exe" FileName="regedit.exe" />
  </FileRules>
  <!--Signers-->
  <Signers>
    <!--info of the certificate you will use to do any code/catalog signing-->
    <Signer ID="EXAMPLE_ID_SIGNER_CODE" Name="Example Code Signing Certificate Friendly Name">
      <CertRoot Type="TBS" Value="<value>" />
    </Signer>
    
    <!--info of the certificate you will use to sign your policy-->
    <Signer ID="EXAMPLE_ID_SIGNER_POLICY" Name="Example Policy Signing Certificate Friendly Name">
      <CertRoot Type="TBS" Value="<value>" />
    </Signer>
  </Signers>
  <!--Driver Signing Scenarios-->
  <SigningScenarios>
    <SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_KMCI" FriendlyName="Example Name">
      <ProductSigners />
    </SigningScenario>
    <SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_UMCI" FriendlyName="Example Name">
      <ProductSigners>
        <AllowedSigners>
          <AllowedSigner SignerId="EXAMPLE_ID_SIGNER_CODE" />
        </AllowedSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_CBD_0" />
          <FileRuleRef RuleID="ID_ALLOW_KD_0" />
          <FileRuleRef RuleID="ID_ALLOW_WINDBG_0" />
          <FileRuleRef RuleID="ID_ALLOW_MSBUILD_0" />
          <FileRuleRef RuleID="ID_ALLOW_NTSD_0" />
          <FileRuleRef RuleID="ID_ALLOW_POWERSHELLISE_0" />
          <FileRuleRef RuleID="ID_ALLOW_REGEDIT_0" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
  </SigningScenarios>
  <!--Specify one or more certificates that can be used to sign updated policy-->
  <UpdatePolicySigners>
    <UpdatePolicySigner SignerId="EXAMPLE_ID_SIGNER_POLICY" />
  </UpdatePolicySigners>
  <!--Specify one or more codesigning certificates to trust-->
  <CiSigners>
    <CiSigner SignerId="EXAMPLE_ID_SIGNER_CODE" />
  </CiSigners>
  <!-- example remove core isolation a.k.a. Hypervisor Enforced Code Integrity (HVCI) options, consider enabling if your system supports it-->
  <HvciOptions>0</HvciOptions>
  <Settings>
    <Setting Provider="PolicyInfo" Key="Information" ValueName="Name">
      <Value>
        <String>Example Policy Name</String>
      </Value>
    </Setting>
    <Setting Provider="PolicyInfo" Key="Information" ValueName="Id">
      <Value>
        <String>Example-Policy-10.0.0.0</String>
      </Value>
    </Setting>
  </Settings>
</SiPolicy>

ポリシーの削除

ユーザーを変更されていない S モード ポリシーに戻すには、ポリシーを受け取ったターゲット Intune グループからユーザーまたはユーザーを削除します。 このアクションにより、ポリシーと承認トークンの両方がデバイスから削除されます。

Intuneを使用して補足ポリシーを削除することもできます。

<?xml version="1.0" encoding="utf-8"?>
<SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy" PolicyType="Supplemental Policy">
  <VersionEx>10.0.0.1</VersionEx>
  <PlatformID>{2E07F7E4-194C-4D20-B7C9-6F44A6C5A234}</PlatformID>
  <BasePolicyID>{5951A96A-E0B5-4D3D-8FB8-3E5B61030784}</BasePolicyID>
  <PolicyID>{52671094-ACC6-43CF-AAF1-096DC69C1345}</PolicyID>
  <Rules>
  </Rules>
  <!--EKUS-->
  <EKUs />
  <!--File Rules-->

  <!--Signers-->
  <Signers>
    <!--info of the certificate you will use to sign your policy-->
    <Signer ID="EXAMPLE_ID_SIGNER_POLICY" Name="Example Policy Signing Certificate Friendly Name">
      <CertRoot Type="TBS" Value="<value>" />
    </Signer>
  </Signers>
  <!--Driver Signing Scenarios-->
  <SigningScenarios>
    <SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_KMCI" FriendlyName="KMCI">
      <ProductSigners>
      </ProductSigners>
    </SigningScenario>
    <SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_UMCI" FriendlyName="UMCI">
      <ProductSigners>
      </ProductSigners>
    </SigningScenario>
  </SigningScenarios>
  <UpdatePolicySigners>
    <UpdatePolicySigner SignerId="EXAMPLE_ID_SIGNER_POLICY" />
  </UpdatePolicySigners>
  <!-- example remove core isolation a.k.a. Hypervisor Enforced Code Integrity (HVCI) options, consider enabling if your system is supported-->
  <HvciOptions>0</HvciOptions>
  <Settings>
    <Setting Provider="PolicyInfo" Key="Information" ValueName="Name">
      <Value>
        <String>Example Policy Name - Empty</String>
      </Value>
    </Setting>
    <Setting Provider="PolicyInfo" Key="Information" ValueName="Id">
      <Value>
        <String>Example-Policy-Empty-10.0.0.1</String>
      </Value>
    </Setting>
  </Settings>
</SiPolicy>

Errata

ポリシー承認トークンと補足ポリシーを持つ S モード デバイスのWindows 10が 1909 更新から 1903 ビルドにロールバックされた場合、次のポリシー更新までロックダウン S モードに戻りません。 ロックダウン S モードの状態をすぐに変更するには、IT 担当者は %SystemRoot%\System32\CI\Tokens\Active 内のすべてのトークンを削除する必要があります。