托管服务账号配置计划任务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了托管服务账号配置计划任务相关的知识,希望对你有一定的参考价值。

背景

豆子需要设置一个计划任务然后用某个服务账号运行。传统的做法一般是创建一个服务账号,配置对应的权限,然后设定密码永不过期。这样的安全隐患是密码一直没改变。Windows 2008的时候微软推出了MSA(托管服务账号),本质是继承了计算机账户的特性,每次由计算机自动更换密码,这样完全不用管理人员的介入。但是当时MSA既不支持多台主机,也不支持计划任务,更别说第三方软件,所以实用性不大。Windows 2012以后,微软推出了新版本的gMSA,终于可以支持多台主机和计划任务了。gMSA每次改密码是由DC上面的KDS服务管理的,每次通过一个root key id,时间戳以及gMSA的SID通过某个复杂的算法生成一个随机的密码。注意这里的gMSA中的g代表的是group,也是说我们需要分配一个安全组给这个托管账户,安全组里面的所有计算机账户都可以去使用这个托管账户

具体操作

1. 创建一个KDS Root Key

技术分享图片

注意!创建以后,需要等待10个小时让所有的DC同步

2.创建一个安全组,然后把需要管理的计算机加进去,重启对应的计算机

技术分享图片

3. 创建gMSA账号

技术分享图片

创建成功以后可以在Management Service Accounts这个容器下看见对应的账号
技术分享图片

4. 安装gMSA到主机上

登录到对应的主机上面,执行下面的命令

技术分享图片

基本的安装就完成了。下面就可以用这个gMSA账号来配置服务或者计划任务了

5. 配置计划任务

一个很恶心的地方是,图形界面不支持gMSA的配置。如果直接查找对应的账号,他会报错 说不存在
技术分享图片

正确的方式是全程通过PowerShell实现

$F = "c:\scripts\syncErrornotification.ps1"

#The first command uses the New-ScheduledTaskAction cmdlet to assign the action variable $A to the executable file tskmgr.exe
$A = New-ScheduledTaskAction -Execute "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -Argument "-noexit -ExecutionPolicy Bypass -File $F"

#The second command uses the New-ScheduledTaskTrigger cmdlet to assign the trigger variable $T to the value AtLogon
$T = New-ScheduledTaskTrigger -daily -At 7am

#The third command uses the New-ScheduledTaskSettingsSet cmdlet to assign the settings variable $S to a task settings object
$S = New-ScheduledTaskSettingsSet -Compatibility Win8 -ExecutionTimeLimit 3600 -ThrottleLimit 2
#The fourth command assigns the principal variable to the New-ScheduledTaskPrincipal of the scheduled task, domainname\gMSA_account$
$P = New-ScheduledTaskPrincipal -UserId omnicom\svc-it$ -LogonType Password -RunLevel Highest

#The fifth command sets the description varible to $D for the task definition
$D = "Office365 Sync Errors"

#Register the scheduled task
Register-ScheduledTask test -Action $A -Trigger $T -Principal $P -Description $D

该主机上还需要授予执行脚本的权利,点开gpedit.msc, 添加对应logon as batch job的权限

技术分享图片

如果需要其他权限,例如本地管理员或者域管理员等权限,请自行添加。

6. 测试

第5步脚本会创建下面的计划任务,但是这个界面你如果用UI是无法实现的
技术分享图片

实际的跑一下,1分钟之后我就收到邮件了, 成功
技术分享图片

以上是关于托管服务账号配置计划任务的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ASE 中托管的 Linux 应用服务计划上配置 API 应用

struts(IDEA)的应用

Windows下配置多个Git账号

使用计时器在 JSF 托管 bean 中为计划任务生成线程

Git学习笔记

Linux 任务计划:crontab