docs: [ops] 서버 계정 관리 문서 업데이트
- 09-security: 서버 계정 관리 섹션 신규 추가 (Linux/MySQL 계정 현황, 생성 절차, 잠금/해제) - 09-security: SSH 인증 정책 정리 (패스워드 허용, root 외부 접근 차단) - 01-server-overview: 3개 서버 사용자 정보 업데이트 (hskwon/pro/kkk) - 01-server-overview: 운영 DB 사용자 테이블에 pro, kkk 추가
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
| RAM | 8GB |
|
||||
| Swap | 4GB |
|
||||
| 디스크 | 98GB (여유 79GB) |
|
||||
| 사용자 | hskwon (SSH 키 인증, sudo NOPASSWD) |
|
||||
| 사용자 | hskwon(개발팀장), pro(개발실장/잠금), kkk(개발자/잠금) |
|
||||
|
||||
### 도메인 목록
|
||||
|
||||
@@ -117,6 +117,8 @@
|
||||
|--------|-----------|------|------|
|
||||
| codebridge@localhost | 비밀번호 | sam, sam_stage, sam_stat, codebridge | 애플리케이션 |
|
||||
| hskwon@localhost | auth_socket | ALL (WITH GRANT OPTION) | 관리자 |
|
||||
| pro@localhost | 비밀번호 (잠금) | codebridge, sam, sam_stage, sam_stat | 개발실장 |
|
||||
| kkk@localhost | 비밀번호 (잠금) | codebridge, sam, sam_stage, sam_stat | 개발자 (2026-03-13) |
|
||||
| root@localhost | auth_socket | ALL | 시스템 (sudo mysql) |
|
||||
| sam_backup@110.10.147.46 | 비밀번호 | SELECT, LOCK TABLES (sam, sam_stat) | CI/CD 백업 |
|
||||
|
||||
@@ -135,7 +137,7 @@
|
||||
| CPU | 4 vCPU |
|
||||
| RAM | 8GB (Swap 4GB) |
|
||||
| Disk | 98GB (사용 15GB / 여유 79GB) |
|
||||
| 사용자 | hskwon (SSH 키 인증, sudo NOPASSWD) |
|
||||
| 사용자 | hskwon(개발팀장), pro(개발실장/잠금), kkk(개발자/잠금) |
|
||||
|
||||
### 도메인 매핑
|
||||
|
||||
@@ -214,7 +216,7 @@
|
||||
| IP | 114.203.209.83 |
|
||||
| 호스트명 | sam-dev |
|
||||
| OS | Ubuntu 24.04.2 LTS |
|
||||
| 사용자 | hskwon (SSH 키 인증, sudo NOPASSWD) |
|
||||
| 사용자 | hskwon(개발팀장), pro(개발실장), kkk(개발자) |
|
||||
|
||||
### 서비스 현황
|
||||
|
||||
|
||||
@@ -4,16 +4,107 @@
|
||||
|
||||
---
|
||||
|
||||
## 서버 계정 관리
|
||||
|
||||
### Linux 계정 현황
|
||||
|
||||
| 계정 | 이름 | sam-dev | sam-prod | sam-cicd | 비고 |
|
||||
|------|------|---------|----------|----------|------|
|
||||
| hskwon | 권혁성 | sudo, users | sudo, users, webservice | sudo, users, webservice | 개발팀장 |
|
||||
| pro | 김보곤 | develop, sudo, users | pro, sudo, users, webservice (잠금) | pro, sudo, users, webservice (잠금) | 개발실장 |
|
||||
| kkk | 강영보 | develop, sudo, users | pro, sudo, users, webservice (잠금) | pro, sudo, users, webservice (잠금) | 개발자 (2026-03-13 생성) |
|
||||
|
||||
### MySQL 계정 현황
|
||||
|
||||
| 계정 | sam-dev | sam-prod | sam-cicd | 비고 |
|
||||
|------|---------|----------|----------|------|
|
||||
| hskwon | ALL *.* (auth_socket) | ALL *.* (auth_socket) | ALL *.* (auth_socket) | 개발팀장 |
|
||||
| codebridge | - | sam, sam_stage, sam_stat, codebridge | - | 앱 사용자 |
|
||||
| pro | chandj, sam, samdb | codebridge, sam, sam_stage, sam_stat (잠금) | codebridge, gitea, sam, sam_stage, sam_stat (잠금) | 개발실장 |
|
||||
| kkk | chandj, sam, samdb | codebridge, sam, sam_stage, sam_stat (잠금) | codebridge, gitea, sam, sam_stage, sam_stat (잠금) | 개발자 (2026-03-13 생성) |
|
||||
| sam_backup | - | - (운영 DB에서 원격 접근) | sam, sam_stat (원격 백업) | CI/CD 백업 |
|
||||
|
||||
### 신규 계정 생성 절차
|
||||
|
||||
```bash
|
||||
# 1. 개발서버 (전체 권한)
|
||||
ssh sam-dev "sudo useradd -m -s /bin/bash -G develop,sudo,users -c '이름' 계정명"
|
||||
ssh sam-dev "echo '계정명:비밀번호' | sudo chpasswd"
|
||||
|
||||
# 2. 운영/CICD (잠금 상태로 생성)
|
||||
ssh sam-prod "sudo useradd -m -s /bin/bash -G pro,sudo,users,webservice -c '이름' 계정명"
|
||||
ssh sam-prod "echo '계정명:비밀번호' | sudo chpasswd"
|
||||
ssh sam-prod "sudo usermod -L 계정명" # Linux 잠금
|
||||
|
||||
ssh sam-cicd "sudo useradd -m -s /bin/bash -G pro,sudo,users,webservice -c '이름' 계정명"
|
||||
ssh sam-cicd "echo '계정명:비밀번호' | sudo chpasswd"
|
||||
ssh sam-cicd "sudo usermod -L 계정명" # Linux 잠금
|
||||
|
||||
# 3. DB 계정 — 개발 (활성)
|
||||
ssh sam-dev "mysql -u root -p'<비밀번호>' -e \"
|
||||
CREATE USER '계정명'@'localhost' IDENTIFIED BY '비밀번호';
|
||||
GRANT ALL PRIVILEGES ON chandj.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON samdb.* TO '계정명'@'localhost';
|
||||
FLUSH PRIVILEGES;\""
|
||||
|
||||
# 4. DB 계정 — 운영/CICD (잠금)
|
||||
ssh sam-prod "sudo mysql -e \"
|
||||
CREATE USER '계정명'@'localhost' IDENTIFIED BY '비밀번호';
|
||||
GRANT ALL PRIVILEGES ON codebridge.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam_stage.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam_stat.* TO '계정명'@'localhost';
|
||||
ALTER USER '계정명'@'localhost' ACCOUNT LOCK;
|
||||
FLUSH PRIVILEGES;\""
|
||||
|
||||
ssh sam-cicd "sudo mysql -e \"
|
||||
CREATE USER '계정명'@'localhost' IDENTIFIED BY '비밀번호';
|
||||
GRANT ALL PRIVILEGES ON codebridge.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON gitea.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam_stage.* TO '계정명'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON sam_stat.* TO '계정명'@'localhost';
|
||||
ALTER USER '계정명'@'localhost' ACCOUNT LOCK;
|
||||
FLUSH PRIVILEGES;\""
|
||||
```
|
||||
|
||||
### 계정 잠금/해제
|
||||
|
||||
```bash
|
||||
# Linux 잠금 해제
|
||||
sudo usermod -U 계정명
|
||||
|
||||
# Linux 잠금
|
||||
sudo usermod -L 계정명
|
||||
|
||||
# MySQL 잠금 해제
|
||||
sudo mysql -e "ALTER USER '계정명'@'localhost' ACCOUNT UNLOCK;"
|
||||
|
||||
# MySQL 잠금
|
||||
sudo mysql -e "ALTER USER '계정명'@'localhost' ACCOUNT LOCK;"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SSH 키 관리
|
||||
|
||||
양쪽 서버 모두 비밀번호 로그인 비활성화, root SSH 비활성화, 키 인증만 허용.
|
||||
### SSH 인증 정책
|
||||
|
||||
| 서버 | 패스워드 인증 | root 외부 접근 | SSH 키 | 비고 |
|
||||
|------|:----------:|:----------:|:------:|------|
|
||||
| sam-dev | ✅ 허용 | ❌ 차단 | ✅ 허용 | 개발서버 |
|
||||
| sam-prod | ✅ 허용 | ❌ 차단 | ✅ 허용 | 운영서버 |
|
||||
| sam-cicd | ✅ 허용 | ❌ 차단 | ✅ 허용 | CICD서버 |
|
||||
|
||||
> 일반 계정은 패스워드 접근 허용, root는 외부 접근 완전 차단 (`PermitRootLogin no`)
|
||||
|
||||
```bash
|
||||
# SSH 설정 확인
|
||||
sudo grep -E "^(PasswordAuthentication|PermitRootLogin|PubkeyAuthentication)" /etc/ssh/sshd_config
|
||||
# 올바른 설정:
|
||||
# PasswordAuthentication no
|
||||
# PermitRootLogin no
|
||||
# 현재 설정:
|
||||
# PasswordAuthentication yes
|
||||
# PermitRootLogin no # root 외부 접근 완전 차단
|
||||
# PubkeyAuthentication yes
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user