Sécurité BITS, jetons et comptes d’administrateur
Rappels de certificat de serveur HTTP
La validation correcte des certificats de serveur est un élément clé de la maintenance de la sécurité HTTPS. BITS vous aide en validant toujours les certificats de serveur par rapport à une liste d’exigences spécifiées par SetSecurityFlags. Par défaut, BITS utilise la validation de certificat de style « navigateur ».
Vous pouvez également spécifier une fonction personnalisée à appeler afin de valider davantage le certificat. Définissez le rappel de certificat de serveur avec la méthode SetServerCertificateValidationInterface . Votre méthode n’est appelée qu’une fois que le système d’exploitation a validé le certificat en fonction de l’appel de SetSecurityFlag.
Certificats clients HTTP
Vous pouvez définir un certificat client sur un travail HTTP avec deux méthodes de paramètres de certificat différentes. Vous pouvez définir un certificat par ID ou par le nom de l’objet du certificat. Le certificat client sera utilisé pendant la négociation TLS (ou la renégociation) si le serveur nécessite l’authentification du client.
En-têtes HTTP en écriture seule
BITS vous aide à protéger les jetons d’authentification HTTP contre les accès indésirables. Souvent, un serveur HTTP a besoin d’un jeton de sécurité ou d’une chaîne lors du téléchargement ou du chargement d’un fichier sur des serveurs HTTP.
BITS protège ces jetons d’authentification de plusieurs façons.
- BITS vous permet d’utiliser des connexions HTTP protégées par TLS et SSL en spécifiant une URL HTTPS.
- Les en-têtes personnalisés sont toujours conservés dans un format chiffré sur le disque.
- Vous pouvez empêcher le retour d’en-têtes client à d’autres programmes avec la méthode IBackgroundCopyJobHttpOptions3::MakeCustomHeadersWriteOnly .
Utilisateurs Standard et Administrateur
Un utilisateur qui fait partie du groupe d’administrateurs peut exécuter un processus avec un accès utilisateur standard ou dans un état élevé (avec des privilèges d’administrateur). BITS exécute le travail dans l’un ou l’autre état tant que l’utilisateur est connecté à l’ordinateur. Toutefois, si l’utilisateur a créé le travail ou a pris possession du travail dans un état élevé, l’utilisateur doit être dans l’état élevé pour récupérer ou modifier le travail (sinon, l’appel échoue avec accès refusé (0x80070005)). Pour déterminer l’état élevé d’un travail, appelez la méthode IBackgroundCopyJob4::GetOwnerElevationState .
Un utilisateur standard ne peut pas énumérer ou modifier les travaux appartenant à d’autres utilisateurs.
Niveau d’intégrité
En plus de l’état élevé, le niveau d’intégrité du jeton peut déterminer si l’utilisateur peut modifier un travail. Un client ne peut pas modifier les travaux créés par un jeton avec un niveau d’intégrité plus élevé. En particulier, de nombreux jetons de système local ont un niveau d’intégrité supérieur au niveau d’intégrité d’une fenêtre avec élévation de privilèges, et ils ne peuvent donc pas être modifiés par un administrateur à partir d’une fenêtre de commande avec élévation de privilèges ordinaire. Par exemple, les travaux Windows Update et SMS s’exécutent en tant que LocalSystem qui a un niveau d’intégrité supérieur à un jeton élevé, de sorte qu’un administrateur ne peut pas modifier ou supprimer ces travaux. Pour modifier ces travaux, créez une tâche planificateur de tâches qui s’exécute en tant que système local. La tâche peut exécuter une application console qui utilise l’API BITS, ou exécuter un script qui appelle BitsAdmin.exe. Pour déterminer le niveau d’intégrité utilisé, appelez la méthode IBackgroundCopyJob4::GetOwnerIntegrityLevel .
Identité de service
À partir de la Mise à jour de mai 2019 de Windows 10 (10.0 ; Build 18362), les travaux BITS démarrés à partir d’un service conservent l’identité du service. Cela permet aux services qui souhaitent utiliser BITS de télécharger des fichiers vers ou de charger des fichiers à partir d’un répertoire dont les autorisations sont liées au SID de service. En outre, le trafic réseau est correctement attribué au service qui a demandé le travail BITS au lieu d’être attribué à BITS.