Konteks Keamanan untuk Tugas

Tugas didaftarkan dan dijalankan di bawah konteks keamanan tertentu. Pengguna dapat membuat aplikasi yang berhasil mendaftar, memperbarui, menghapus, atau menjalankan tugas, tetapi pengguna harus memberikan kredensial yang benar ketika tugas terdaftar dan aplikasi harus berjalan dalam proses dengan hak istimewa yang benar.

Menentukan Kredensial

Anda dapat menentukan konteks keamanan untuk tugas dengan menentukan kredensial di ITaskFolder::RegisterTask atau ITaskFolder::RegisterTaskDefinition (TaskFolder.RegisterTask atau TaskFolder.RegisterTaskDefinition untuk pembuatan skrip) metode atau dengan menetapkan prinsipal ke Properti Utama ITaskDefinition (TaskDefinition.Principal untuk pembuatan skrip). Jika prinsipal dibuat untuk definisi tugas, dan kemudian definisi tugas didaftarkan menggunakan metode RegisterTaskDefinition dengan kredensial yang berbeda yang ditentukan dalam parameter metode, maka kredensial yang ditentukan dalam metode RegisterTaskDefinition akan menimpa kredensial di prinsipal. Jika prinsipal dibuat untuk definisi tugas menggunakan XML, lalu XML untuk tugas didaftarkan menggunakan metode RegisterTask dengan kredensial berbeda yang ditentukan dalam parameter metode, kredensial yang ditentukan dalam metode RegisterTask akan menimpa kredensial di prinsipal.

Anda menentukan akun pengguna atau grup saat mendaftarkan tugas atau menentukan prinsip untuk tugas. Konteks keamanan akun atau grup pengguna digunakan untuk konteks keamanan tugas. Dalam metode dan properti ini, Anda juga menentukan jenis masuk. Jenis masuk didefinisikan oleh salah satu konstanta dalam enumerasi TASK_LOGON_TYPE.

Tugas yang terdaftar dengan bendera TASK_LOGON_PASSWORD atau TASK_LOGON_S4U hanya akan diluncurkan jika pengguna yang ditentukan mengaktifkan hak istimewa Masuk sebagai Batch. Administrator dan pengguna grup Operator Cadangan mengaktifkan hak istimewa ini secara default.

Ketika Anda memanggil metode ITaskService::Koneksi (TaskService.Koneksi untuk pembuatan skrip), setiap panggilan metode berikutnya ke layanan Task Scheduler akan menggunakan kredensial yang diteruskan ke metode Koneksi. Ini penting untuk dipertimbangkan saat mendaftarkan tugas dengan jenis masuk interaktif. Ketika Anda mendaftarkan tugas dengan jenis masuk yang sama dengan TASK_LOGON_INTERACTIVE_TOKEN dan tugas tidak memiliki kredensial yang ditentukan dalam properti Utama definisi tugas, yang ditentukan dalam parameter ke RegisterTaskDefinition, atau ditentukan dalam XML yang diteruskan ke RegisterTask, maka tugas akan didaftarkan dengan kredensial pengguna yang memanggil metode Koneksi.

Keamanan Kontrol Akun Pengguna (UAC) untuk Tugas

Kontrol Akun Pengguna (UAC) memungkinkan pengguna menjalankan fungsionalitas umum seperti menjalankan program dan menyimpan dan memodifikasi data tanpa mengekspos hak istimewa administratif. Secara default, tugas berjalan dengan hak istimewa tingkat rendah saat UAC diaktifkan. Tugas dapat menentukan bahwa mereka akan berjalan dengan hak istimewa yang ditingkatkan atau hak istimewa rendah dengan mengatur tingkat hak istimewa dari enumerasi TASK_RUNLEVEL_TYPE untuk properti RunLevel IPrincipal (Principal.RunLevel untuk pembuatan skrip). Nilai properti RunLevel menentukan tingkat hak istimewa di mana tindakan tugas akan dijalankan. Jika tindakan tugas harus memiliki hak istimewa yang ditingkatkan untuk dijalankan, maka Anda harus mengatur properti RunLevel ke TASK_RUNLEVEL_HIGHEST. Jika tugas terdaftar menggunakan grup Administrator untuk konteks keamanan tugas, maka Anda juga harus mengatur properti RunLevel ke TASK_RUNLEVEL_HIGHEST jika Anda ingin menjalankan tugas. Jika tugas terdaftar menggunakan akun Builtin\Administrator atau akun Sistem Lokal atau Layanan Lokal, maka properti RunLevel akan diabaikan. Nilai properti juga akan diabaikan jika Kontrol Akun Pengguna (UAC) dinonaktifkan. Nilai properti RunLevel tidak memengaruhi izin yang diperlukan untuk menjalankan atau menghapus tugas.

Catatan

Setelah memutakhirkan sistem operasi dari Windows XP ke Windows Vista, tugas yang didaftarkan menggunakan akun Builtin\Administrator pada Windows XP akan mengatur properti RunLevel ke TASK_RUNLEVEL_LUA. Ini dapat menyebabkan beberapa tugas gagal. Anda dapat memperbarui properti ini secara manual untuk memastikan semua tugas akan berjalan.

 

Dari proses hak istimewa rendah, Anda tidak dapat mendaftarkan tugas dengan properti RunLevel sama dengan TASK_RUNLEVEL_HIGHEST, tetapi Anda dapat mendaftarkan tugas dengan properti RunLevel sama dengan TASK_RUNLEVEL_LUA. Tindakan tugas akan dijalankan dengan hak istimewa rendah. Anda tidak diizinkan untuk mendaftarkan tugas sebagai Bawaan/Administrator, Sistem Lokal, atau untuk grup.

Dari proses hak istimewa yang ditinggikan, Anda dapat mendaftarkan tugas dengan properti RunLevel sama dengan TASK_RUNLEVEL_HIGHEST atau TASK_RUNLEVEL_LUA. Tugas akan dijalankan dengan tingkat hak istimewa yang diputuskan oleh properti RunLevel kecuali Anda menggunakan akun Administrator, dalam hal ini tugas dijalankan dengan hak istimewa yang ditinggikan.

Dari proses yang ditinggikan, Anda dapat mendaftarkan tugas Penjadwal Tugas 1.0. Layanan Penjadwal Tugas akan mengatur tingkat eksekusi tugas ke TASK_RUNLEVEL_HIGHEST dan tugas akan berjalan dengan hak istimewa yang ditingkatkan.

Dari proses hak istimewa yang rendah, Anda juga dapat mendaftarkan tugas Task Scheduler 1.0. Layanan Penjadwal Tugas akan mengatur tingkat eksekusi tugas ke TASK_RUNLEVEL_LUA, dan tugas akan berjalan dengan hak istimewa rendah. Jika tugas ini diperbarui dari proses yang ditingkatkan, tingkat eksekusi tugas akan tetap TASK_RUNLEVEL_LUA.

Keamanan untuk Mendaftarkan Tugas

Saat Anda mendaftarkan tugas dari akun yang merupakan anggota grup Administrator, maka Anda hanya perlu menentukan kata sandi saat mendaftarkan tugas dalam situasi berikut:

  • Jika Anda mendaftarkan tugas untuk dijalankan di bawah konteks keamanan akun Anda atau akun pengguna yang berbeda dan Anda menggunakan bendera TASK_LOGON_PASSWORD dalam metode RegisterTask atau RegisterTaskDefinition.
  • Jika Anda mendaftarkan tugas untuk dijalankan di bawah konteks keamanan akun pengguna yang berbeda dan Anda menggunakan bendera TASK_LOGON_S4U dalam metode RegisterTask atau RegisterTaskDefinition.

Anda tidak dapat menggunakan grup pengguna sebagai konteks keamanan tugas saat mendaftarkan tugas menggunakan bendera TASK_LOGON_S4U atau bendera TASK_LOGON_PASSWORD dalam metode RegisterTask atau RegisterTaskDefinition.

Saat Anda mendaftarkan tugas dari akun pengguna yang bukan anggota grup Administrator, maka Anda tidak perlu menentukan kata sandi saat mendaftarkan tugas jika Anda mendaftarkan tugas untuk dijalankan di bawah konteks keamanan akun Anda dan Anda menggunakan jenis masuk S4U atau interaktif. Jika tidak, Anda perlu menentukan kata sandi saat mendaftarkan tugas. Selain itu, Anda tidak dapat mendaftarkan tugas menggunakan akun Layanan Lokal atau dengan menggunakan grup untuk konteks keamanan tugas.

Keamanan untuk Membaca, Memperbarui, Menghapus, dan Menjalankan Tugas

Secara default, pengguna yang membuat tugas dapat membaca, memperbarui, menghapus, dan menjalankan tugas. Pengguna harus memiliki izin tulis file pada file tugas untuk memperbarui tugas, izin baca file pada file tugas untuk membaca tugas, menghapus izin pada file tugas untuk menghapus tugas, dan izin eksekusi file pada tugas untuk menjalankan tugas menggunakan metode IRegisteredTask::Run atau RunEx (RegisteredTask.Run dan RunEx untuk pembuatan skrip). Anggota grup Administrator atau akun SISTEM dapat membaca, memperbarui, menghapus, dan menjalankan tugas apa pun. Anggota grup Pengguna, akun LocalService, dan akun NetworkService hanya dapat membaca, memperbarui, menghapus, dan menjalankan tugas yang telah mereka buat. Perilaku default ini diubah ketika DACL file tugas diubah, dalam hal ini DACL menentukan pengguna mana yang memiliki izin tulis, baca, eksekusi, dan hapus file. Untuk mengatur izin untuk file tugas, gunakan metode IRegisteredTask.SetSecurityDescriptor (RegisteredTask.SetSecurityDescriptor untuk pembuatan skrip) atau atur deskriptor keamanan saat Anda mendaftarkan tugas menggunakan metode RegisterTask atau RegisterTaskDefinition.

Pengguna harus memiliki izin WriteDAC selain izin baca/tulis untuk memperbarui tugas jika pembaruan tugas memerlukan perubahan pada DACL untuk tugas tersebut.

Informasi Pendaftaran Tugas

Tentang Penjadwal Tugas

Pengerasan Keamanan Tugas

TaskFolder.RegisterTaskDefinition

ITaskFolder::RegisterTaskDefinition

Properti Utama ITaskDefinition

TASK_LOGON_TYPE