사용자 계정과 서비스 계정의 차이점은 무엇입니까?


답변:


18

사용자 계정은 실제 사용자가 사용하고 서비스 계정은 웹 서버, 메일 전송 에이전트, 데이터베이스 등의 시스템 서비스에서 사용합니다. 규칙에 따라 서비스 계정은 낮은 범위 (예 : <1000 정도)의 사용자 ID를 갖습니다. . UID 0을 제외하고 서비스 계정에는 특별한 권한이 없습니다. 서비스 계정은 일반적으로 특정 리소스, 장치 특수 파일을 소유 할 수 있지만 수퍼 유저와 같은 권한은 없습니다.

서비스 계정은 일반 사용자 계정처럼 만들 수 있습니다 (예 :) useradd. 그러나 서비스 계정은 일반적으로 서비스 소프트웨어 설치시 패키지 관리자가 작성하고 구성합니다. 따라서 관리자 라하더라도 서비스 계정 생성에 직접적인 관심을 갖는 일은 거의 없습니다.

정당한 이유 : 사용자 계정과 달리 서비스 계정에는 종종 "적절한"로그인 셸이 없습니다. 즉, /usr/sbin/nologin로그인 셸 (또는 예전에는 /bin/false)입니다. 또한, 서비스 계정은 일반적으로 고정되어, 즉 그것은 (기존의 로그인하는 것은 불가능 /etc/passwd하고 /etc/shadow,이 같은 임의의 값에 암호 해시를 설정함으로써 달성 될 수있다 *거나 x). 이는 서비스 계정을 남용으로부터 보호하기위한 것입니다 (심층 방어 ).

각 서비스에 대해 개별 서비스 계정을 갖는 것은 두 가지 주요 목적을 제공합니다. 이는 하나의 서비스로 사건 발생시 영향을 줄이기위한 보안 조치 ( 분할 )이며, 어떤 서비스에 속하는 리소스를 쉽게 추적 할 수있어 관리를 간소화합니다. . 자세한 내용 은 관련 질문에 대한 this 또는 this answer를 참조하십시오.


4

원래 사용자는 시스템을 사용하여 사람과 어울리게 되었기 때문에 이름입니다. 각 프로세스는 특정 사용자로 실행되며 각 파일은 특정 사용자가 소유합니다. root라는 특수 사용자는 특정 인간 사용자, 즉 운영 체제 자체에 속하지 않는 것들에 사용됩니다. root는 운영 체제 자체에 해당하므로 모든 권한이 있습니다.

곧 사람들은 광범위한 권한없이 여러 시스템 사용자를 만드는 것이 편리하다는 것을 알게되었습니다. 이를 통해 머신에서 실행되는 다양한 서비스를 분리 할 수 ​​있으므로 서로의 발가락을 밟지 않습니다. 서비스 계정 (또는 "시스템 계정",이 두 용어는 동의어 임)은 시스템을 사용하는 사람이 아니라 시스템에서 실행되는 서비스에 해당하는 계정입니다. 일반적으로 시스템에서 자체 권한 세트 (예 : 자체 파일, 자체 네트워크 포트 등)가있는 각 작업에 대한 서비스 계정이 있습니다.

휴먼 vs 시스템 / 서비스 계정에 대한 공식적인 정의는 없습니다. 커널은 신경 쓰지 않습니다 (UID 0을 가진 사용자에게 많은 권한을 부여하는 것 제외). 대부분의 관리 명령도 중요하지 않습니다. 몇 가지 일반적인 차이점은 다음과 같습니다.

  • 사람 사용자는 "John Doe"와 같은 실제 이름을 사용하지만 시스템 사용자는 "Nasal daemon"과 같은 설명 이름을 갖거나 전혀 사용하지 않습니다.
  • 인간 사용자가 실제 로그인 쉘 (예를 들어이 /bin/sh/bin/bash또는 /bin/csh. 일부 시스템 사용자가 쉘 (거의 항상있다 /bin/sh), 다른 사람은 없습니다, 예를 들어 (그들이 사용하기위한 것입니다 방법에 따라서 할 su foo필요 foo) 쉘을 가지고.
  • 사람 사용자는 종종 암호를 가지고 있지만 항상 그렇지는 않습니다. 예를 들어, 원격 사용자는 SSH 키만 가질 수 있습니다. 현대적인 유니 세에서는 암호가 아닌와 /etc/passwd같은 다른 파일에 있습니다 /etc/shadow.
  • 휴먼 사용자의 홈 디렉토리는 일반적으로 /home(또는 일부 사이트 특정 위치)있는 반면 시스템 사용자의 홈 디렉토리는 일반적으로 아래에 /home있지 않고 존재하지 않을 수 있습니다 (그러나 예외는 있습니다).
  • 대부분의 사이트는 시스템 사용자를위한 다양한 사용자 ID와 사람 사용자를위한 분리 된 범위를 지정합니다. 100–65533 또는 500–65533 또는 1000–65533을 예약하는 것이 일반적이며 대부분의 배포는 500 또는 1000에서 실제 사용자 ID 할당을 시작하도록 설정되어 있습니다.

여러 컴퓨터에서 계정을 공유하는 사이트에는 일반적으로 NIS 또는 LDAP 를 통해 액세스 할 수있는 사용자 목록이 포함 된 중앙 서버가 있습니다 . 의 passwd항목은 /etc/nsswitch.conf사용자 정보를 찾을 위치를 지정합니다. /etc/passwd네트워크 전체 데이터베이스 의 로컬 및 실제 사용자에 시스템 사용자가있는 것이 일반적 이지만 네트워크 전체 데이터베이스에 시스템 사용자가있는 경우가 있습니다 (일관된 UID를 적용하여 서버 및 데이터 복제를 용이하게 함). 로컬 파일의 휴먼 사용자 (네트워크가 호스 인 된 경우에도 로그인 할 수 있도록 함).

시스템 사용자로 위장한 사람이 액세스 할 수있는 계정은 일반적으로 실제 이름은 없지만 시스템 범위에 사용자 ID가있는 동안 로그인 쉘과 비밀번호 세트 또는 SSH 키를 갖습니다. 실제로 제거하면 일부 서비스의 작동이 중지되는 실제 시스템 계정을 사용하는 것이 더 좋습니다. 그러나 잠재적 인 공격을 탐지하기위한 강력하고 빠른 규칙을 가질 수는 없습니다. 정의상 공격자는 규칙을 따르지 않습니다.

서비스 계정과 휴먼 계정은 동일한 명령으로 관리되며 동일한 파일에 기록됩니다. 계정 작성 명령에는 사람 대 서비스 사용자에게 적절한 기본값을 설정하는 옵션 (예 : 적절한 범위에서 사용자 ID를 선택하고 사람에 대한 비밀번호를 프롬프트하고 서비스에 대한 비밀번호 인증을 사용 안함)하는 옵션이 있습니다. 예를 들어 Linux의 adduservs adduser --system또는 useraddvs.useradd -r


3
    1. 서비스 계정, 일명 기술 계정은 일반 사용자가 아닌 서비스 / 응용 프로그램에서만 사용하도록 설계된 계정입니다.
    1. 응용 프로그램 및 서비스 개발자는 이러한 계정이 프로세스를 루트로 실행하는 대신 연결된 프로세스 권한 및 권한을 제한하기를 원합니다. 에 의해 시작으로 서비스 init, systemd루트로 실행하거나 유사한, 신속하게 위험을 제한하기 위해 서비스 계정으로 다운 그레이드. 사용 된 OS에 따라 응용 프로그램 계정에는 일반 계정보다 더 많은 권한이 부여 될 수 있습니다 (예 : 권한있는 TCP 포트에 바인딩 할 수있는 권한). 전화 fork/ exec. 이 경우 서비스를 서비스 계정으로 다운 그레이드 할 필요가 없으며 서비스 계정으로 시작할 수 있습니다.
    1. 사용 가능한 비밀번호가없고 작동하지 않는 쉘 (예 :)을 사용하여 계정을 만들 필요 /bin/false는 없으며 일반 사용자가 사용할 수 없습니다. 즉, 로컬 또는 원격으로 로그인 할 수있는 방법이 없습니다 (예 : 를 통해 ssh계정 이름을 사용합니다. 대부분의 제한 사항과 마찬가지로 루트 계정을 사용하거나 sudo극복 할 수 있습니다.

1

예를 들어 서비스 계정에는 셸을 사용하는 기능이 없을 수 있습니다. 제한된 범위 및 권한으로 서비스 (데몬)를 실행하는 데 사용됩니다. 내 의견은 권한과 그룹 멤버십에주의하면서 일반 사용자로 만들 수 있다는 것입니다. 그러나 대부분의 경우 프로그램은 설치 중에 자동으로 프로그램을 작성하기 때문에 필요하지 않습니다. 살펴보기/etc/passwd root:x:0:0:root:/root:/bin/bash

0은 UID이며, 사용자 공간에서 계정의 계층 구조를 특성화하고, 루트는 모든 사용자보다 상위에 있으며, 그룹 멤버쉽 :root을 홈 디렉토리 /root로 지정하여 계정 /bin/bash에서 시스템에 '로그인'하는 데 사용하는 쉘 입니다.

/usr/sbin/nologin로그인 권한을 원하지 않는 계정에 사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.