Contextos de segurança para tarefas
As tarefas são registadas e executadas num 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 sendo executado em um processo com os privilégios corretos.
Especificando credenciais
Você pode especificar o contexto de segurança para uma tarefa especificando credenciais nos métodos ITaskFolder::RegisterTask ou ITaskFolder::RegisterTaskDefinition (TaskFolder.RegisterTask ou métodos TaskFolder.RegisterTaskDefinition para script) ou atribuindo uma entidade à propriedade principal de ITaskDefinition (TaskDefinition.Principal para scripting). 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 do método, as credenciais especificadas no método RegisterTaskDefinition substituirão as credenciais na entidade de segurança. Se uma entidade 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 do método, as credenciais especificadas no método RegisterTask substituirão as credenciais na entidade de segurança.
Você especifica uma conta de usuário ou grupo ao registrar uma tarefa ou especificar o princípio para 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 privilégio Fazer logon como lote habilitado. Os administradores e os usuários do grupo Operadores de Backup têm esse privilégio habilitado por padrão.
Quando você chama o método ITaskService::Connect (TaskService.Connect for scripting), qualquer chamada de método subsequente para o serviço Agendador de Tarefas usará 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 RegisterTaskDefinitionou especificada no XML que é passado para RegisterTask, em seguida, a tarefa será registrada com as credenciais do usuário que chamou o método Connect.
Segurança de Controle de Conta de Usuário (UAC) para Tarefas
de Controle de Conta de Usuário (UAC) 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 está ativado. As tarefas podem especificar que serão executadas com privilégios elevados ou baixos definindo um nível de privilégio a partir da enumeração TASK_RUNLEVEL_TYPE para a propriedade RunLevel de IPrincipal (Principal.RunLevel para scripting). 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 devem ter privilégios elevados para serem executadas, você deve 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 Local System ou Local Service, a propriedade RunLevel será ignorada. O valor da propriedade também será ignorado se o Controle de Conta de Usuário (UAC) 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 sejam executadas.
A partir de um processo de privilégios baixos, não é possível registrar uma tarefa com a propriedade RunLevel igual a TASK_RUNLEVEL_HIGHEST, mas você 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 Administrador/Interno, Sistema Local ou para um grupo.
A partir de um processo de privilégio elevado, 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 de Administrador, caso em que a tarefa é executada com privilégios elevados.
A partir de 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.
A partir de 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 esta tarefa for atualizada a partir de um processo elevado, o nível de execução da tarefa permanecerá TASK_RUNLEVEL_LUA.
Segurança para Registar Tarefas
Quando você registra 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 para ser executada no contexto de segurança da sua conta ou de uma conta de usuário diferente e usar o sinalizador TASK_LOGON_PASSWORD noRegisterTask doou método de RegisterTaskDefinition.
- Se você registrar a tarefa a ser executada no contexto de segurança de uma conta de usuário diferente e usar o sinalizador TASK_LOGON_S4U noRegisterTask doou método de RegisterTaskDefinition.
Não é possível usar um grupo de usuários como o contexto de segurança de uma tarefa quando você registra a tarefa usando o sinalizador TASK_LOGON_S4U ou o sinalizador TASK_LOGON_PASSWORD noRegisterTaskou método RegisterTaskDefinition.
Quando você registra uma tarefa de uma conta de usuário que não é membro do grupo Administradores, não precisa especificar uma senha ao registrar a tarefa se registrar a tarefa para 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, não é possível registrar a tarefa usando a conta Serviço Local ou usando um grupo para o contexto de segurança da tarefa.
Segurança para leitura, atualização, exclusão e execução de tarefas
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, permissão de exclusã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 scripting). Os membros do grupo Administradores ou da conta SYSTEM podem ler, atualizar, excluir e executar quaisquer tarefas. Os membros do grupo Usuários, da conta LocalService e da conta NetworkService só podem ler, atualizar, excluir e executar as tarefas que criaram. Esse comportamento padrão é alterado quando a DACL do arquivo de tarefa é alterada, caso em que 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 scripts) ou defina o descritor de segurança ao registrar a tarefa usando o RegisterTask ou métodos de 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 da tarefa exigir uma alteração na DACL da tarefa.
Tópicos relacionados