readme 추가
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
🏗️ VaultKeeper 프로젝트 상세 설계도 (Ver 2.0)
|
||||
1. 개요
|
||||
목적: Nginx의 .htpasswd 파일을 웹 GUI를 통해 관리하는 초경량 도구.
|
||||
|
||||
타겟 환경: Google Cloud e2-micro (저사양 서버).
|
||||
|
||||
주요 언어: Go (백엔드), Vanilla JS (프론트엔드).
|
||||
|
||||
2. 보안 전략 (핵심)
|
||||
인증 분리: 백엔드 자체에 로그인 로직을 구현하지 않고, Nginx의 auth_basic 모듈에 인증을 위임함.
|
||||
|
||||
접근 권한: 서버 관리자가 터미널에서 직접 생성한 계정으로만 웹 UI에 접근 가능.
|
||||
|
||||
입력값 검증: os/exec 실행 시 쉘 인젝션을 방지하기 위해 사용자 이름에 특수문자 입력을 제한함.
|
||||
|
||||
3. 구성 요소
|
||||
Backend (main.go):
|
||||
|
||||
환경 변수 HTPASSWD_PATH를 통해 대상 파일 경로 지정.
|
||||
|
||||
표준 패키지 net/http를 사용하여 메모리 점유 최소화.
|
||||
|
||||
htpasswd 시스템 명령어를 서브프로세스로 호출하여 계정 추가/삭제.
|
||||
|
||||
Frontend (index.html):
|
||||
|
||||
단일 파일 SPA 구조.
|
||||
|
||||
Tailwind CSS(CDN)를 활용한 직관적인 대시보드.
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
프로젝트: VaultKeeper (Nginx .htpasswd 관리 도구)
|
||||
|
||||
1. 백엔드 구현 (main.go)
|
||||
|
||||
언어: Go (표준 라이브러리 위주로 매우 가볍게).
|
||||
|
||||
기능:
|
||||
|
||||
GET /api/users: .htpasswd 파일을 읽어 유저 목록을 JSON으로 반환.
|
||||
|
||||
POST /api/users: username, password를 받아 htpasswd -b 실행.
|
||||
|
||||
DELETE /api/users/{username}: htpasswd -D 실행.
|
||||
|
||||
보안: 사용자 이름 입력값에서 쉘 인젝션이 발생하지 않도록 유효성 검사 로직 포함.
|
||||
|
||||
설정: .htpasswd 경로를 환경 변수 HTPASSWD_PATH에서 읽어오도록 설정.
|
||||
|
||||
2. 프론트엔드 구현 (index.html)
|
||||
|
||||
단일 파일 SPA로 작성하고 Tailwind CSS를 사용하여 깔끔한 UI 제공.
|
||||
|
||||
유저 목록 표시, 추가 폼, 삭제 버튼 구현.
|
||||
|
||||
3. 배포 가이드 (deployment.md) 생성
|
||||
|
||||
go build를 이용한 경량 바이너리 빌드 방법 (-s -w 옵션 포함).
|
||||
|
||||
터미널에서 최초 관리자 계정을 생성하는 명령어 안내.
|
||||
|
||||
이 서비스를 Nginx auth_basic 뒤에 배치하기 위한 location 블록 설정 예시. (8000번 포트 기준)
|
||||
Reference in New Issue
Block a user