Contextos de segurança para tarefas
As tarefas são registradas e executadas em um contexto de segurança específico. Os usuários podem criar aplicativos que registram, atualizam, excluem ou executam tarefas com êxito, mas o usuário deve fornecer as credenciais corretas quando uma tarefa é registrada e o aplicativo deve estar em execução em um processo com os privilégios corretos.
Especificando credenciais
Você pode especificar o contexto de segurança de uma tarefa especificando credenciais nos métodos ITaskFolder::RegisterTask ou ITaskFolder::RegisterTaskDefinition (TaskFolder.RegisterTask ou TaskFolder.RegisterTaskDefinition para script) ou atribuindo uma entidade de segurança à Propriedade Principal de ITaskDefinition (TaskDefinition.Principal para script). Se uma entidade de segurança for criada para uma definição de tarefa e, em seguida, a definição de tarefa for registrada usando o método RegisterTaskDefinition com credenciais diferentes especificadas nos parâmetros de método, as credenciais especificadas no método RegisterTaskDefinition substituirão as credenciais na entidade de segurança. Se uma entidade de segurança for criada para uma definição de tarefa usando XML e, em seguida, o XML da tarefa for registrado usando o método RegisterTask com credenciais diferentes especificadas nos parâmetros de método, as credenciais especificadas no método RegisterTask substituirão as credenciais na entidade de segurança.
Especifique uma conta de usuário ou grupo ao registrar uma tarefa ou especificar o princípio de uma tarefa. O contexto de segurança da conta de usuário ou grupo é usado para o contexto de segurança da tarefa. Nesses métodos e propriedades, você também define o tipo de logon. O tipo de logon é definido por uma das constantes na enumeração TASK_LOGON_TYPE .
As tarefas registradas com o sinalizador TASK_LOGON_PASSWORD ou TASK_LOGON_S4U só serão iniciadas se o usuário especificado tiver o logon como privilégio do Lote habilitado. Os usuários do grupo Administradores e Operadores de Backup têm esse privilégio habilitado por padrão.
Quando você chama o método ITaskService::Connect (TaskService.Connect para scripting), todas as chamadas de método subsequentes para o serviço agendador de tarefas usarão as credenciais que foram passadas para o método Connect . Isso é importante considerar ao registrar tarefas com um tipo de logon interativo. Quando você registra uma tarefa com o tipo de logon igual a TASK_LOGON_INTERACTIVE_TOKEN e a tarefa não tem credenciais especificadas na propriedade Principal da definição de tarefa, especificada nos parâmetros para RegisterTaskDefinition ou especificada no XML que é passado para RegisterTask, a tarefa será registrada com as credenciais do usuário que chamou o método Connect .
Segurança do UAC (Controle de Conta de Usuário) para Tarefas
O UAC (Controle de Conta de Usuário ) permite que os usuários exerçam funcionalidades gerais, como executar programas e salvar e modificar dados sem expor privilégios administrativos. Por padrão, uma tarefa é executada com privilégios de baixo nível quando o UAC é ativado. As tarefas podem especificar que elas serão executadas com privilégios elevados ou privilégios baixos definindo um nível de privilégio da enumeração TASK_RUNLEVEL_TYPE para a propriedade RunLevel de IPrincipal (Principal.RunLevel para script). O valor da propriedade RunLevel determina o nível de privilégio no qual as ações de uma tarefa serão executadas. Se as ações de uma tarefa precisarem ter privilégios elevados a serem executados, você deverá definir a propriedade RunLevel como TASK_RUNLEVEL_HIGHEST. Se uma tarefa for registrada usando o grupo Administradores para o contexto de segurança da tarefa, você também deverá definir a propriedade RunLevel como TASK_RUNLEVEL_HIGHEST se quiser executar a tarefa. Se uma tarefa for registrada usando a conta Builtin\Administrator ou as contas sistema local ou serviço local, a propriedade RunLevel será ignorada. O valor da propriedade também será ignorado se o UAC (Controle de Conta de Usuário) estiver desativado. O valor da propriedade RunLevel não afeta as permissões necessárias para executar ou excluir uma tarefa.
Observação
Depois de atualizar um sistema operacional do Windows XP para o Windows Vista, as tarefas que foram registradas usando a conta Builtin\Administrator no Windows XP terão a propriedade RunLevel definida como TASK_RUNLEVEL_LUA. Isso pode fazer com que algumas tarefas falhem. Você pode atualizar essa propriedade manualmente para garantir que todas as tarefas serão executadas.
Em um processo de baixo privilégio, você não pode registrar uma tarefa com a propriedade RunLevel igual a TASK_RUNLEVEL_HIGHEST, mas pode registrar uma tarefa com a propriedade RunLevel igual a TASK_RUNLEVEL_LUA. As ações da tarefa serão executadas com privilégios baixos. Você não tem permissão para registrar a tarefa como Builtin/Administrator, Local System ou para um grupo.
Em um processo de privilégios elevados, você pode registrar uma tarefa com a propriedade RunLevel igual a TASK_RUNLEVEL_HIGHEST ou TASK_RUNLEVEL_LUA. A tarefa será executada com um nível de privilégio decidido pela propriedade RunLevel , a menos que você esteja usando a conta administrador, nesse caso, a tarefa é executada com privilégios elevados.
Em um processo elevado, você pode registrar uma tarefa do Agendador de Tarefas 1.0. O serviço Agendador de Tarefas definirá o nível de execução da tarefa como TASK_RUNLEVEL_HIGHEST e a tarefa será executada com privilégios elevados.
Em um processo de baixo privilégio, você também pode registrar uma tarefa do Agendador de Tarefas 1.0. O serviço Agendador de Tarefas definirá o nível de execução da tarefa como TASK_RUNLEVEL_LUA e a tarefa será executada com privilégios baixos. Se essa tarefa for atualizada de um processo elevado, o nível de execução da tarefa permanecerá TASK_RUNLEVEL_LUA.
Segurança para registrar tarefas
Ao registrar uma tarefa de uma conta que é membro do grupo Administradores, você só precisa especificar uma senha ao registrar a tarefa nas seguintes situações:
- Se você registrar a tarefa a ser executada no contexto de segurança de sua conta ou conta de um usuário diferente e usar o sinalizador TASK_LOGON_PASSWORD no método RegisterTask ou RegisterTaskDefinition .
- Se você registrar a tarefa a ser executada no contexto de segurança da conta de um usuário diferente e usar o sinalizador TASK_LOGON_S4U no método RegisterTask ou RegisterTaskDefinition .
Você não pode usar um grupo de usuários como o contexto de segurança de uma tarefa ao registrar a tarefa usando o sinalizador TASK_LOGON_S4U ou o sinalizador TASK_LOGON_PASSWORD no método RegisterTask ou RegisterTaskDefinition .
Ao registrar uma tarefa de uma conta de usuário que não seja membro do grupo Administradores, você não precisará especificar uma senha ao registrar a tarefa se registrar a tarefa a ser executada no contexto de segurança da sua conta e usar o tipo de logon interativo ou S4U. Caso contrário, você precisará especificar uma senha ao registrar a tarefa. Além disso, você não pode registrar a tarefa usando a conta de Serviço Local ou usando um grupo para o contexto de segurança da tarefa.
Segurança para tarefas de leitura, atualização, exclusão e execução
Por padrão, um usuário que cria uma tarefa pode ler, atualizar, excluir e executar a tarefa. Um usuário deve ter permissão de gravação de arquivo em um arquivo de tarefa para atualizar uma tarefa, permissão de leitura de arquivo em um arquivo de tarefa para ler uma tarefa, excluir permissão em um arquivo de tarefa para excluir uma tarefa e permissão de execução de arquivo em uma tarefa para executar uma tarefa usando os métodos IRegisteredTask::Run ou RunEx (RegisteredTask.Run e RunEx para scripts). Os membros do grupo Administradores ou da conta SYSTEM podem ler, atualizar, excluir e executar qualquer tarefa. Os membros do grupo Usuários, da conta LocalService e da conta NetworkService só podem ler, atualizar, excluir e executar as tarefas que eles criaram. Esse comportamento padrão é alterado quando a DACL do arquivo de tarefa é alterada, nesse caso, a DACL define quais usuários têm permissão de gravação, leitura, execução e exclusão de arquivos. Para definir permissões para um arquivo de tarefa, use o método IRegisteredTask.SetSecurityDescriptor (RegisteredTask.SetSecurityDescriptor para script) ou defina o descritor de segurança ao registrar a tarefa usando os métodos RegisterTask ou RegisterTaskDefinition .
Um usuário deve ter permissão WriteDAC além das permissões de leitura/gravação para atualizar uma tarefa se a atualização de tarefa exigir uma alteração na DACL para a tarefa.
Tópicos relacionados