2.2 KiB
id, created, tags
| id | created | tags |
|---|---|---|
| 어플리케이션(서비스) 실행 20260413 | 2026-04-13 14:57 |
[!question] Q. 리눅스에서 서비스나 어플리케이션 새로 실행할 때 계정을 따로 생성해서 그 계정으로 실행하는 이유가 뭐야? A. 리눅스에서 Gitea, Jenkins와 같은 서비스를 전용 계정(Service Account)으로 실행하는 가장 큰 이유는 보안과 시스템 안정성 때문입니다. 만약 루트(root) 권한으로 서비스를 실행했다가 해당 서비스가 해킹당하면 시스템 전체가 장악될 수 있기 때문이죠.
1. 최소 권한의 원칙 (Principle of Least Privilege)
가장 핵심적인 개념입니다. 특정 서비스가 작동하는 데 필요한 최소한의 권한만 부여하는 것입니다.
-
격리: 전용 계정을 만들면 해당 계정은 자신의 홈 디렉터리와 서비스 관련 파일에만 접근할 수 있습니다.
-
피해 최소화: 서비스에 취약점이 있어 해커가 침입하더라도, 해커는 해당 계정의 권한만 갖게 됩니다. 시스템 설정 파일을 수정하거나 다른 사용자의 데이터를 훔쳐보는 것이 차단됩니다.
2. 시스템 자원 및 프로세스 관리
전용 계정을 사용하면 관리 효율성이 높아집니다.
-
자원 제한: 특정 계정이 사용할 수 있는 CPU, 메모리, 파일 열기 개수 등을 제한(ulimit 등)하여 하나의 서비스가 시스템 전체 자원을 독점하는 것을 방지할 수 있습니다.
-
로그 및 모니터링: 어떤 프로세스가 어떤 계정으로 실행 중인지 명확하므로, 로그를 분석하거나 문제를 추적할 때 훨씬 수월합니다.
3. 보안 사고 발생 시 대응
-
계정 차단: 특정 서비스 계정에서 이상 징후가 발견되면 시스템 전체를 내릴 필요 없이 해당 계정만 잠그거나 권한을 박탈하여 즉각 대응할 수 있습니다.
-
비로그인 계정: 보통 서비스용 계정은
nologin이나false쉘을 부여하여, 사람이 직접 SSH 등으로 로그인하는 것을 막아둡니다. 이는 외부 공격자가 해당 계정으로 서버에 직접 접속하는 경로를 원천 차단하는 효과가 있습니다.