'로컬 시스템'계정과 '네트워크 서비스'계정의 차이점은 무엇입니까?


386

별도의 프로세스를 생성하는 Windows 서비스를 작성했습니다. 이 프로세스는 COM 개체를 만듭니다. 서비스가 '로컬 시스템'계정으로 실행되면 모든 것이 제대로 작동하지만 서비스가 '네트워크 서비스'계정으로 실행되면 외부 프로세스가 시작되지만 COM 개체를 만들지 못합니다. COM 개체 생성에서 반환 된 오류는 표준 COM 오류가 아닙니다 (생성중인 COM 개체에만 해당되는 것 같습니다).

그렇다면 '로컬 시스템'과 '네트워크 서비스'의 두 계정이 어떻게 다른지 어떻게 알 수 있습니까? 이 내장 계정은 매우 신비한 것으로 보이며 아무도 그것에 대해 많이 알지 못하는 것 같습니다.

답변:


701

표준 서비스 계정의 기능에 대해 혼동이 많으므로 빠른 실행을 시도합니다.

먼저 실제 계정 :

  • LocalService 계정 (권장)

    네트워크 서비스와 매우 유사하며 표준 최소 권한 서비스를 실행하는 제한된 서비스 계정입니다. 그러나 네트워크 서비스와 달리 네트워크는 익명 사용자 로 액세스합니다 .

    • 이름: NT AUTHORITY\LocalService
    • 계정에 비밀번호가 없습니다 (제공 한 모든 비밀번호 정보는 무시 됨)
    • HKCU는 LocalService 사용자 계정을 나타냅니다
    • 최소한의 로컬 컴퓨터에 권한을
    • 네트워크에 익명 자격 증명을 제공 합니다
    • SID : S-1-5-19
    • HKEY_USERS 레지스트리 키 ( HKEY_USERS\S-1-5-19) 아래에 자체 프로파일이 있습니다.

     

  • 네트워크 서비스 계정

    표준 권한 서비스를 실행하기위한 제한된 서비스 계정. 이 계정은 로컬 시스템 (또는 관리자)보다 훨씬 제한적이지만 여전히 머신으로 네트워크에 액세스 할 수있는 권한이 있습니다 (위의 경고 참조).

    • NT AUTHORITY\NetworkService
    • 계정에 비밀번호가 없습니다 (제공 한 모든 비밀번호 정보는 무시 됨)
    • HKCU는 NetworkService 사용자 계정을 나타냅니다
    • 최소한의 로컬 컴퓨터에 권한을
    • 컴퓨터의 자격 증명 (예 :) MANGO$을 원격 서버에 제공
    • SID : S-1-5-20
    • HKEY_USERS 레지스트리 키 ( HKEY_USERS\S-1-5-20) 아래에 자체 프로파일이 있습니다.
    • 를 사용하여 작업을 예약하려고하면, 입력 NETWORK SERVICE사용자 또는 그룹 선택 대화 상자

     

  • LocalSystem 계정 (위험, 사용하지 마십시오!)

    관리자 계정보다 완전히 신뢰할 수있는 계정. 단일 계정에는이 계정으로 할 수없는 것이 없으며 네트워크로 컴퓨터에 액세스 할 수있는 권한이 있습니다 (Active Directory가 필요하며 컴퓨터 계정에 권한 부여).

    • 이름 : .\LocalSystem( LocalSystem또는 사용 가능 ComputerName\LocalSystem)
    • 계정에 비밀번호가 없습니다 (제공 한 모든 비밀번호 정보는 무시 됨)
    • SID : S-1-5-18
    • 자체 프로파일이 없습니다 ( 기본 사용자를 HKCU나타냄 )
    • 광범위한 로컬 컴퓨터에 권한을
    • 컴퓨터의 자격 증명 (예 :) MANGO$을 원격 서버에 제공

     

위에서 네트워크 액세스에 관해 언급 할 때 이것은 다른 인증 메커니즘이 아닌 SPNEGO (협상), NTLM 및 Kerberos 만을 의미 합니다. 예를 들어, 실행중인 처리 LocalService는 여전히 인터넷에 액세스 할 수 있습니다.

기본 계정에서 표준으로 실행하는 일반적인 문제는 기본 사용 권한을 수정하면 해당 계정으로 실행되는 모든 작업이 확장 될 수 있다는 것입니다. 따라서 DBO를 데이터베이스에 부여하면 로컬 서비스 또는 네트워크 서비스로 실행되는 서비스는 해당 데이터베이스에 액세스 할 수있을뿐만 아니라 해당 계정으로 실행되는 다른 모든 서비스도 해당 데이터베이스에 액세스 할 수 있습니다. 모든 개발자가이 작업을 수행하면 컴퓨터에는 실질적으로 모든 작업을 수행 할 수있는 권한이있는 서비스 계정이 있습니다 (특히 해당 계정에 부여 된 다른 모든 추가 권한의 상위 집합).

보안 측면에서 서비스가 수행하는 작업을 수행하는 데 필요한 권한과 그 밖의 다른 작업을 수행하는 데 필요한 권한이있는 자체 서비스 계정으로 실행하는 것이 항상 바람직합니다. 그러나이 방법을 사용하려면 서비스 계정을 설정하고 암호를 관리해야합니다. 각 응용 프로그램에서 관리해야하는 균형 조정 작업입니다.

특정한 경우에 DCOM 또는 COM + 활성화가 지정된 계정 집합으로 제한된다는 문제가있을 수 있습니다. Windows XP SP2, Windows Server 2003 이상에서는 활성화 권한이 크게 제한되었습니다. 구성 요소 서비스 MMC 스냅인을 사용하여 특정 COM 개체를 검사하고 활성화 권한을 확인해야합니다. 네트워크에서 머신 계정으로 아무것도 액세스하지 않는 경우 로컬 서비스 (기본적으로 운영 체제 인 로컬 시스템 아님)를 사용하는 것이 중요 합니다.


윈도우 서버 2003에서 당신은 할 수없는 예약 된 작업 실행 등을

  • NT_AUTHORITY\LocalService (일명 지역 서비스 계정) 또는
  • NT AUTHORITY\NetworkService (일명 네트워크 서비스 계정).

이 기능 은 Windows Vista / Windows Server 2008 이상에서만 존재하는 Task Scheduler 2.0 에만 추가되었습니다 .

서비스 NetworkService는 네트워크에서 컴퓨터 자격 증명을 제공합니다. 컴퓨터가 호출 된 경우 있음이 수단 mango, 그것이 컴퓨터 계정으로 제시 것입니다 MANGO$ :

여기에 이미지 설명을 입력하십시오


7
관리 서비스 계정 은 계정을 설정하고 암호를 관리
Carl G

1
안녕하세요, 설명 감사합니다. 로컬 시스템 / 네트워크 서비스 계정을 사용하면 활성 디렉토리의 컨테이너에 항목을 추가 / 제거 할 수 있습니다 (활성 디렉토리의 컨테이너 가이 Windows 서비스가 실행되는 컴퓨터에 대한 모든 권한을 부여한 경우). 제발 모든 것을 내가 도메인 사용자의 하나로서 서비스를 실행할 때, 작업,하지만 유의하지 로컬 시스템 / (자세한 내용은 네트워크 서비스로 stackoverflow.com/questions/20943436/... ) 감사합니다
드리머

1
그렇습니다. 이 질문은 더 추상적이고 구체적인 구현이므로 귀하의 질문에 직접 대답하겠습니다.
피터 Oehlert

7
"익명"사용자는 "인증 된 사용자"의 구성원 일뿐만 아니라 Windows에서 "모두"의 구성원이 아닙니다. Windows 네트워크에서 '익명'은 '익명'에게 명시 적으로 부여 된 자원에만 액세스 할 수 있습니다. 기본적으로 아무것도 없습니다.
david

1
@HakamFostok 참조가 많지 않습니다. 내가 정확하게 기억한다면, Dan Brown은 그의 책 Programming Windows Security에서 그 중 일부를 다루었습니다. Windows 도움말 및 MSDN 문서에는 많은 것이 있지만 구체적인 참조는 없습니다. Soloman & Russinovich의 프로그래밍 윈도우와 Inside Windows (3rd 또는 4th Ed)에 관한 Jeff Richter의 저서도 있습니다.
Peter Oehlert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.