windows中的服务隔离 service isolation and service SID(Virtual Account)

windows 中的服务隔离在windows vista 以及server 2008之后就有了,可以让管理员控制本地资源的使用(如文件、注册表等等)。之前windows版本中,系统内置了一些高权限的服务账号,大家所熟悉的有Local System,Network,LocalService

为了最小化权限使用,通常我们需要创建账号来赋予最小权限,然后配置服务以这个账号运行,但是如果服务较多,那么有许许多多的账号要维护,而且如果你有严格的密码策略的话,比如定期要更改服务账号的密码,那真是头疼。

window 中的Service SID(另外一个称呼是Virutal Account) 可以针对每个服务启用,它可以让管理员针对Service SID来隔离服务使用的资源。同时不必维护服务账号的密码。Service SID 账号访问网络资源是使用的凭据是计算机账号,DomainName\ComputerName$.

创建Service ID 可以使用

sc sidtype <service_name> unrestricted

sc sidtype <service_name> restricted

当然也可以使用sc qsidtype <serviec_name>来查询Service SID ,我这里针对微软的SCOM Agent health service 服务进行查询。

sidtype 有三种

  • None (0x0) – the service will not have a per-service SID.  服务默认设置为none
  • Unrestricted (0x1) – the service has a per-service SID  服务有一个service SID
  • Restricted (0x3) – the service has a per-service SID and a write-restricted token.服务有一个Service SID,同时加上了写保护 标签。

当服务配置使用Service SID时(无论restricted 或unrestricted) ,Service SID是一串SHA1 Hash.如果想看这个SID的具体值,可以使用

sc showsid <servicename>

然后我们看看wsearch 的执行账号配置为本地系统账号

那这个Service SID起了什么作用呢,拿SQL Server为例,SQL Server 2008 r2 之前的版本会默认让local system 账号放在数据库sysadmin 中,但是sql server 2012 之后就不放了,那么之前如果你有个服务运行在local system 账号,比如我们的SCOM监控服务访问SQL应该是没有权限问题的,但是在sql server 2012 上,你可能需要额外设置,因为这个时候会没有权限。这个时候我假设你给SCOM监控客户端服务启用了Service SID ,那么会在healthservice的服务进程上就会增加 nt service\healthservice 的令牌,这个时候如果你单独在SQL中创建nt service\healthservice 的登录,并赋予相应权限,那么这个healthservice 虽然是运行在local system 账号,但是他却能访问sql了。然后你可能还有另外的其他服务B也是以local system 账号运行,但是这个sql 的权限却只给了healthservice 服务,这个服务B却不能访问SQL。(之前在没有Service SID 的时候,你可能一股脑把权限开给了local system ,然后所有使用local system 登陆的服务都有了访问SQL 的权限)。

那么这个Service SID的实战作用在哪里呢?这就是这篇文章的终极目的。如果你用SCOM 监控SQL,那么更高版本的SQL Server的执行账号管理的问题,你可能已经很头痛了。使用service SID 可以轻松解决这个问题,然后还有个人专门另外创建了管理包,可以监视有SQL Server的机器上的healthservice 的Service SID有没有开启,然后可以用恢复任务来开启(这个恢复任务默认是禁用的)。然后还可以监控healthservice 的SID账号有没有数据库的权限。参考这个链接:

https://gallery.technet.microsoft.com/SQL-Server-RunAs-Addendum-0c183c32#content

windows内置系统账号权限及作用参考:

  • LocalService account (preferred)

    • Name: NT AUTHORITY\LocalService
    • the account has no password (any password information you provide is ignored)
    • HKCU represents the LocalService user account
    • has minimal privileges on the local computer
    • presents anonymous credentials on the network
    • SID: S-1-5-19
    • has its own profile under the HKEY_USERS registry key (HKEY_USERS\S-1-5-19)

    A limited service account that is very similar to Network Service and meant to run standard least-privileged services. However, unlike Network Service it has no ability to access the network as the machine accesses the network as an Anonymous user.

  • NetworkService account
    • NT AUTHORITY\NetworkService
    • the account has no password (any password information you provide is ignored)
    • HKCU represents the NetworkService user account
    • has minimal privileges on the local computer
    • presents the computer‘s credentials (e.g. MANGO$) to remote servers
    • SID: S-1-5-20
    • has its own profile under the HKEY_USERS registry key (HKEY_USERS\S-1-5-20)
    • If trying to schedule a task using it, enter NETWORK SERVICE into the Select User or Groupdialog

    Limited service account that is meant to run standard least-privileged services. This account is far more limited than Local System (or even Administrator) but still has the right to access the network as the machine (see caveat above).

  • LocalSystem account (dangerous, don‘t use!)
    • Name: .\LocalSystem (can also use LocalSystem or ComputerName\LocalSystem)
    • the account has no password (any password information you provide is ignored)
    • SID: S-1-5-18
    • does not have any profile of its own (HKCU represents the default user)
    • has extensive privileges on the local computer
    • presents the computer‘s credentials (e.g. MANGO$) to remote servers

http://windowsitpro.com/security/q-how-can-security-windows-service-benefit-service-isolation-feature-how-can-i-set-service-

https://blogs.technet.microsoft.com/voy/2007/03/22/per-service-sid/

https://support.microsoft.com/en-us/kb/2620201

http://thoughtsonopsmgr.blogspot.com/2014/09/sql-mp-challenge-run-as-accounts.html

时间: 2024-08-05 09:59:50

windows中的服务隔离 service isolation and service SID(Virtual Account)的相关文章

如何在Windows中删除服务好系统来教你

如何在Windows 7,Windows 8和Windows 10中删除服务 服务是一种在没有用户界面的情况下在系统后台运行的应用程序类型,类似于UNIX守护程序进程.服务提供核心操作系统功能,例如Web服务,事件记录,文件服务,打印,加密和错误报告. 有时您可能需要删除服务.例如,安装的软件无法正确卸载,并将其服务保留在"服务"列表中. 本教程将向您展示如何在 Windows 7, Windows 8和 Windows 10中删除服务. 您必须以管理员身份登录才能删除服务. 建议不要

看懂架构设计中的服务隔离

前言 我们在做系统架构设计的时候,经常离不开的一个话题就是进行服务的隔离设计. 那什么是「服务隔离」呢? 顾名思义,它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖.当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务. 其实隔离设计并非软件行业独创,它是借鉴于造船行业.行业有一个专业术语叫做「舱壁隔离」.利用舱壁将不同的船舱隔离起来,如果某一个船舱进了水,那么就可以立即封闭舱门,形成舱壁隔离,只损失那一个船舱,其他船

Windows中使用cmd实现自定义Service的安装与卸载

在项目中,有些时候我们需要自定义一些Service来定时处理一些业务逻辑,这时候就涉及到如何安装与卸载service的问题了,具体如何安装呢?在此整理一些解决方案供大家参考: 方案一: 1.运行--〉cmd:打开cmd命令框 2.在命令行里定位到InstallUtil.exe所在的位置 InstallUtil.exe 默认的安装位置是在C:\Windows\Microsoft.NET\Framework\v4.0.30319里面,所以你要在cmd里通过cd定位到该位置(cd C:/Windows

Windows Azure文件共享服务--File Service

部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件.通常,大家可能首先想到的是在一个虚拟机上开放一个共享目录或者NFS服务(Linux).其实,Windows Azure的文件共享服务就可以很好的解决这个问题,而且不需要在虚拟机上开放共享目录或者提供NFS服务. 文件共享服务是Windows Azure存储服务的一部分.每个存储账户(Storage Account)都

Android中的服务(service)详解(三)--远程服务(remote)

1. 引言: (1)AIDL的作用 在Android平台,每个应用程序都是一个单独的JVM,都运行在自己的进程空间里, 通常,一个进程不允许访问另一个进程的内存空间(一个应用不能访问另一个应用).当用户(程序开发人员)想在一个App中访问另一个App的进程空间的时候,就需要进程间通信.在Android中,远程服务为我们提供了实现进程间通信的方式,其中,AIDL是应用程序开发人员常的一种方式. AIDL (Android Interface Definition Language) 是一种IDL

windows中service.msc与regedit

Services.msc是Windows2000/XP/2003/Vista/7/2008/8/8.1/10系统中用来启动.终止并设置 Windows 服务的管理策略. 作用:控制系统服务. 性质:系统组建管理策略之一. 启动方式: win键+R键启动运行,在运行框中输入 services.msc 有时,我们需要开启或关闭Win10系统的某项服务,这就需要打开服务管理器才能进行启动或关闭服务的操作.本地服务管理器窗口如图: 例子:当我们使用windows时,有些时候我们不想更新我们的window

windows虚拟机中DNS服务配置

在linux虚拟机中进行DNS服务配置并进行正向解析反向解析我博客中已经写过,下面 我来介绍一下在windows虚拟机中DNS服务的配置使用. 1.打开一台windows虚拟机中服务器管理器——角色———添加角色 2.点击下一步——选定DNS服务——下一步——安装即可完成DNS服务安装 3.打开正向查找区域,右击更多操作选择新建区域 4.点击“下一步——主要区域——设置任意区域名——下一步——允许非安全和安全动态更新——完成” 5.打开正向查找区域,右击新建主机设置主机名和ip地址 我建了两个

Win7系统中哪些服务可以关闭?

Win7系统中很多服务和进程其实大家在平时都用不上,这些服务和进程不仅占用了很大部分的资源,而且还会影响系统的运行速度和安全.我们可以关闭那些不常用的服务和进程来加快系统运行速度,但对于一般的用户来说可能不太清楚哪些是可关闭,哪些是不可关闭的,因此下面我们就来详解下Win7系统中可以关闭的服务. Win7系统查看服务的方法:点击开始--运行--输入services.msc--回车. 1.Application Management 该服务主要适用于大型企业环境下的集中管理,普通用户关了没什么影响

docker swarm英文文档学习-8-在集群中部署服务

Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运行服务容器的镜像名称和标记有多少容器参与服务是否有任何端口暴露给集群之外的客户端当Docker启动时,服务是否应该自动启动重启服务时发生的特定行为(例如是否使用滚动重启)服务可以运行的节点的特征(例如资源约束和位置首选项)有关群模式的概述,请参见 Swarm mode key concepts.有关