BITS 安全性、令牌和管理员帐户
HTTP 服务器证书回调
正确验证服务器证书是维护 HTTPS 安全性的关键部分。 BITS 可始终根据 SetSecurityFlags 指定的要求列表验证服务器证书。 默认情况下,BITS 使用“浏览器”样式证书验证。
还可以指定要调用的自定义函数,以便进一步验证证书。 使用 SetServerCertificateValidationInterface 方法设置服务器证书回调。 只有在操作系统根据 SetSecurityFlags 调用验证证书后,才会调用你的方法。
HTTP 客户端证书
可以使用两种不同的证书设置方法在 HTTP 作业上设置客户端证书。 可以按 ID 或证书使用者名称设置证书。 如果服务器需要客户端身份验证,则客户端证书将在 TLS 协商(或重新协商)期间使用。
只写 HTTP 标头
BITS 可帮助保护 HTTP 身份验证令牌免受不需要的访问。 通常,在下载或将文件上传到 HTTP 服务器时,HTTP 服务器需要某种安全令牌或字符串。
BITS 通过多种方式保护这些身份验证令牌。
- BITS 允许通过指定 HTTPS URL 来使用受 TLS 和 SSL 保护的 HTTP 连接。
- 自定义标头始终以加密格式保存在磁盘上。
- 可以使用 IBackgroundCopyJobHttpOptions3::MakeCustomHeadersWriteOnly 方法阻止客户标头返回到其他程序。
标准和管理员用户
管理员组中的用户可以使用标准用户访问或处于提升状态(具有管理员权限)运行进程。 只要用户登录到计算机,BITS 就会以任一状态运行作业。 但是,如果用户创建了作业或处于提升状态的作业的所有权,则用户必须处于提升状态才能检索或修改作业(否则,调用失败且访问被拒绝 (0x80070005))。 若要确定作业的提升状态,请调用 IBackgroundCopyJob4::GetOwnerElevationState 方法。
标准用户无法枚举或修改其他用户拥有的作业。
完整性级别
除了提升的状态外,令牌的完整性级别还可以确定用户是否可以修改作业。 客户端无法修改由具有较高完整性级别的令牌创建的作业。 特别是,许多本地系统令牌的完整性级别高于提升窗口的完整性级别,因此管理员无法从普通提升的命令窗口对其进行修改。 例如,Windows 更新和 SMS 作业作为 LocalSystem 运行,其完整性级别高于提升的令牌,因此管理员无法修改或删除这些作业。 若要修改这些作业,请创建一个作为本地系统运行的任务计划程序任务。 该任务可以执行使用 BITS API 的控制台应用程序,也可以执行调用 BitsAdmin.exe 的脚本。 若要确定使用的完整性级别,请调用 IBackgroundCopyJob4::GetOwnerIntegrityLevel 方法。
服务标识
从 Windows 10 2019 年 5 月更新(10.0;内部版本 18362)开始,从服务启动的 BITS 作业将维护服务标识。 这允许希望使用 BITS 的服务将文件下载到目录或从其权限绑定到服务 SID 的目录中上传文件。 此外,网络流量将正确归因于请求 BITS 作业的服务,而不是归因于 BITS。