피드로 돌아가기
Dev.toSecurity
원문 읽기
SSH 제거 및 mTLS 기반 Go Agent 도입으로 서버 접근 제어 혁신
Approval-driven server ops: how I let contractors restart nginx without ever giving them SSH
AI 요약
Context
외부 계약자에게 root SSH 권한을 부여함으로써 발생하는 접근 권한 관리의 파편화와 보안 취약점 발생. 특히 긴급 장애 대응 시 SSH 접속 과정에서 발생하는 90분의 운영 마찰과 권한 회수 누락으로 인한 보안 리스크 상존.
Technical Solution
- Shell 접근을 완전히 배제하고 mTLS HTTP 기반의 Go Agent를 통한 제한적 Operation 수행 구조 설계
- Telegram Bot을 제어 평면(Control Plane)으로 활용하여 ActionID, Nonce, Timestamp, TOTP 기반의 엄격한 APPROVE 문법 검증
- HMAC-SHA256 기반의 Capability Manifest를 도입하여 Agent가 실행 가능한 작업 목록을 배포 시점에 서명 및 고정
- SHA-256 Hash-chain 구조의 append-only JSONL 로그를 구축하여 사후 변조가 불가능한 감사 추적성 확보
- SQLite WAL 모드를 통한 상태 관리와 Fernet 암호화를 이용한 Multi-tenant Cloudflare 자격 증명 분리 저장
실천 포인트
- 서버 접근 제어 시 sudoers 설정보다 API 기반의 Capability Manifest 도입 검토 - 감사 로그의 신뢰성 확보를 위해 각 레코드에 이전 해시를 포함하는 Hash-chain 구조 적용 - 긴급 조치 명령 시 Replay Attack 방지를 위한 Atomic Nonce Store 및 TTL 검증 로직 구현 - 읽기 전용 진단 모듈과 쓰기 전용 실행 모듈의 인터페이스를 분리하여 최소 권한 원칙 준수