允许在Intune管理的 S 模式设备上使用业务线 Win32 应用
注意
Windows Defender应用程序控制 (WDAC) 的某些功能仅在特定的 Windows 版本上可用。 有关详细信息,请参阅Windows Defender应用程序控制功能可用性。
可以使用Microsoft Intune在 S 模式设备Intune管理的Windows 10上部署和运行通常在 S 模式下阻止的关键 Win32 应用程序和 Windows 组件。 例如,PowerShell.exe。
使用 Intune,可以使用Windows Defender应用程序控制 (WDAC 配置托管 S 模式设备) 补充策略,该策略扩展 S 模式基本策略以授权组织使用的应用。 此功能将 S 模式安全态势从“Microsoft 已验证每个应用”更改为“Microsoft 或你的组织已验证每个应用”。
有关此功能的概述和简要演示,请参阅此视频:
策略授权过程
在 S 模式设备上扩展Intune托管Windows 10上的 S 模式基本策略的常规步骤是生成补充策略、对该策略签名、将签名的策略上传到Intune,并将其分配给用户或设备组。 由于需要访问 PowerShell cmdlet 才能生成补充策略,因此应在非 S 模式设备上创建和管理策略。 将策略上传到Intune后,在更广泛地部署策略之前,将其分配给 S 模式设备的单个测试Windows 10,以验证预期功能。
使用 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
此命令删除“审核模式”限定符。
由于要对策略进行签名,必须授权用于对策略进行签名的签名证书。 (可选)还可以授权一个或多个额外的签名者,这些签名者可用于将来对策略的更新进行签名。 整个流程的下一步是 签署策略,并对其进行更详细的描述。
若要将签名证书添加到 WDAC 策略,请使用 Add-SignerRule。
Add-SignerRule -FilePath <policypath> -CertificatePath <certpath> -User -Update
.bin
使用 ConvertFrom-CIPolicy 转换为 。ConvertFrom-CIPolicy -XmlFilePath "<path>\SupplementalPolicy.xml" -BinaryFilePath "<path>\SupplementalPolicy.bin>
对策略进行签名。
补充 S 模式策略必须经过数字签名。 若要对策略进行签名,请使用组织的自定义公钥基础结构 (PKI) 。 有关使用内部 CA 进行签名的详细信息,请参阅 为 WDAC 创建代码签名证书。
提示
有关详细信息,请参阅 Azure 代码签名,实现开发人员和使用者的信任民主化。
签名后,将策略重命名为
{PolicyID}.p7b
。 从补充策略 XML 获取 PolicyID 。使用 Microsoft Intune 部署已签名的补充策略。
转到Microsoft Intune门户,转到“客户端应用”页,然后选择“S 模式补充策略”。 将已签名的策略上传到Intune,并将其分配给用户或设备组。 Intune为租户和特定设备生成授权令牌。 然后,Intune将相应的授权令牌和补充策略部署到分配的组中的每个设备。 这些令牌和策略共同扩展了设备上的 S 模式基础策略。
注意
更新补充策略时,请确保新版本号严格大于上一个版本号。 Intune不允许使用相同的版本号。 有关设置版本号的详细信息,请参阅 Set-CIPolicyVersion。
通过 Intune 部署应用的标准过程
有关打包已签名目录和应用部署的现有过程的详细信息,请参阅 Microsoft Intune 中的 Win32 应用管理。
可选:使用目录部署应用的过程
补充策略可用于大幅放宽 S 模式基本策略,但这样做时必须考虑一些安全权衡。 例如,可以使用签名者规则信任外部签名者,但该规则授权由该证书签名的所有应用,其中可能包括你不希望允许的应用。
Intune具有使用已签名目录更轻松地授权现有应用程序的功能,而不是向组织外部的签名者授权。 此功能不需要重新打包或访问源代码。 当你不想信任可能共享同一签名证书的所有应用时,它适用于可能未签名甚至已签名的应用。
基本过程是使用包检查器为每个应用生成目录文件,然后使用自定义 PKI 对目录文件进行签名。 若要在补充策略中授权目录签名证书,请使用 Add-SignerRule PowerShell cmdlet,如 策略授权过程的步骤 1 前面所示。 之后,使用标准过程通过前面概述Intune部署应用。 有关生成目录的详细信息,请参阅 部署目录文件以支持 WDAC。
注意
每次应用更新时,都需要部署更新的目录。 尽量避免对自动更新的应用程序使用目录文件,并指示用户不要自行更新应用程序。
示例策略
以下策略是允许内核调试程序、PowerShell ISE 和注册表编辑器的示例。 它还演示如何指定组织的代码签名和策略签名证书。
<?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>
勘误表
如果 S 模式设备中的Windows 10具有策略授权令牌和补充策略从 1909 更新回滚到 1903 内部版本,则在下次刷新策略之前,它不会还原锁定 S 模式。 若要立即更改锁定的 S 模式状态,IT 专业人员应删除 %SystemRoot%\System32\CI\Tokens\Active 中的任何令牌。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈