Segurança do BITS, tokens e contas de administrador
Retornos de chamada de certificado do servidor HTTP
A validação correta de certificados de servidor é uma parte fundamental da manutenção da segurança HTTPS. O BITS ajuda sempre validando certificados de servidor em relação a uma lista de requisitos especificados por SetSecurityFlags. Por padrão, o BITS usa a validação de certificado no estilo "navegador".
Você também pode especificar uma função personalizada para chamar para validar ainda mais o certificado. Defina o retorno de chamada do certificado do servidor com o método SetServerCertificateValidationInterface. Seu método só será chamado depois que o sistema operacional tiver validado o certificado com base na chamada SetSecurityFlag.
Certificados de cliente HTTP
Você pode definir um certificado de cliente em um trabalho HTTP com dois métodos de configurações de certificado diferentes. Você pode definir um certificado por ID ou pelo nome da entidade do certificado. O certificado do cliente será usado durante a negociação TLS (ou renegociação) se o servidor exigir autenticação do cliente.
Cabeçalhos HTTP somente gravação
O BITS ajuda a proteger tokens de autenticação HTTP contra acesso indesejado. Muitas vezes, um servidor HTTP precisará de algum tipo de token de segurança ou cadeia de caracteres ao baixar ou carregar um arquivo em servidores HTTP.
O BITS protege esses tokens de autenticação de várias maneiras.
- O BITS permite usar conexões HTTP protegidas por TLS e SSL especificando uma URL HTTPS.
- Os cabeçalhos personalizados são sempre mantidos em um formato criptografado no disco.
- Você pode impedir que cabeçalhos de clientes sejam retornados a outros programas com o método IBackgroundCopyJobHttpOptions3::MakeCustomHeadersWriteOnly.
Usuários padrão e administrador
Um usuário que está no grupo de administradores pode executar um processo com acesso de usuário padrão ou em um estado elevado (com privilégios de administrador). O BITS executará o trabalho em qualquer estado, desde que o usuário esteja conectado ao computador. No entanto, se o usuário criou o trabalho ou assumiu a propriedade do trabalho em um estado elevado, o usuário deve estar no estado elevado para recuperar ou modificar o trabalho (caso contrário, a chamada falhará com Acesso Negado (0x80070005)). Para determinar o estado elevado de um trabalho, chame o método IBackgroundCopyJob4::GetOwnerElevationState.
Um usuário padrão não pode enumerar ou modificar trabalhos de propriedade de outros usuários.
Nível de integridade
Além do estado elevado, o nível de integridade do token pode determinar se o usuário pode modificar um trabalho. Um cliente não pode modificar trabalhos criados por um token com um nível de integridade mais alto. Em particular, muitos tokens do sistema local carregam um nível de integridade superior ao nível de integridade de uma janela elevada e, portanto, não podem ser modificados por um administrador a partir de uma janela de comando elevada comum. Por exemplo, os trabalhos do Windows Update e do SMS são executados como LocalSystem, que tem um nível de integridade mais alto do que um token elevado, portanto, um administrador não pode modificar ou excluir esses trabalhos. Para modificar esses trabalhos, crie uma tarefa do Agendador de Tarefas que seja executada como sistema local. A tarefa pode executar um aplicativo de console que usa a API do BITS ou pode executar um script que chama BitsAdmin.exe. Para determinar o nível de integridade usado, chame o método IBackgroundCopyJob4::GetOwnerIntegrityLevel.
Identidade do serviço
A partir da atualização de maio de 2019 do Windows 10 (10.0; Build 18362), os trabalhos do BITS iniciados a partir de um serviço manterão a identidade do serviço. Isso permite que os serviços que desejam usar o BITS baixem ou carreguem arquivos de um diretório cujas permissões estejam vinculadas ao SID do serviço. Além disso, o tráfego de rede será atribuído corretamente ao serviço que solicitou o trabalho do BITS em vez de ser atribuído ao BITS.