Sécurité, jetons et comptes d’administrateur BITS
Rappels de certificat de serveur HTTP
La validation correcte des certificats de serveur est une partie essentielle de la maintenance de la sécurité HTTPS. BITS permet de toujours valider les certificats de serveur par rapport à une liste des 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 pour valider davantage le certificat. Définissez le rappel de certificat de serveur avec la méthode SetServerCertificateValidationInterface. Votre méthode est appelée uniquement une fois que le système d’exploitation a validé le certificat en fonction de l’appel 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 est utilisé pendant la négociation TLS (ou la renégociation) si le serveur requiert 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 type de 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 les en-têtes clients d’être retournés à d’autres programmes avec la méthode IBackgroundCopyJobHttpOptions3 ::MakeCustomHeadersWriteOnly.
Utilisateurs standard et administrateur
Un utilisateur qui se trouve dans le 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 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 des 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é supérieur. En particulier, de nombreux jetons de système local comportent un niveau d’intégrité supérieur au niveau d’intégrité d’une fenêtre avec élévation de privilèges et 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é afin qu’un administrateur ne puisse pas modifier ou supprimer ces travaux. Pour modifier ce travail, créez une tâche du 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 la tâche peut exécuter un script qui appelle BitsAdmin.exe. Pour déterminer le niveau d’intégrité utilisé, appelez la méthode IBackgroundCopyJob4 ::GetOwnerIntegrityLevel.
Identité du 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 pour télécharger ou 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.