제로 트러스트

Alpacon의 제로 트러스트 보안 모델과 기존 SSH 방식의 차이점을 설명합니다.

제로 트러스트란?

제로 트러스트는 “신뢰하지 말고 항상 검증하라”는 원칙에 기반한 보안 모델입니다. 네트워크 내부/외부를 구분하지 않고, 모든 접근을 검증합니다.

전통적인 SSH 방식의 한계

보안 위험

인터넷에 노출된 포트 22

  • SSH 데몬에 대한 지속적인 봇 스캔 (하루 수천 번)
  • 무차별 대입 공격 시도
  • SSH 데몬의 제로데이 취약점 노출
  • fail2ban과 방화벽을 사용해도 공격 표면이 존재

SSH 키의 전체 서버 접근

  • SSH 키는 “전부 아니면 전무” 방식
  • 읽기 전용 작업도 전체 접근 권한 필요
  • 키 유출 시 공격자가 서버 완전 제어
  • 특정 명령어만 제한할 수 없음

운영상의 문제

키 순환의 어려움

  • 10대 서버 = 10개의 다른 키 관리
  • 각 저장소마다 별도 시크릿 복사본 필요
  • 키 순환 시 모든 서버와 저장소 업데이트 필요
  • 중앙화된 관리 뷰 없음

감사 추적 부재

  • 로그가 여러 서버에 분산
  • SSH 로그는 IP 주소만 표시 (어떤 워크플로우인지 알 수 없음)
  • “지난 화요일 오후 3시에 누가 배포했는지” 추적 어려움

Alpacon의 제로 트러스트 구현

API 토큰 기반 인증

SSH 키 대신 API 토큰을 사용하여 세밀한 접근 제어를 구현합니다.

명령어 ACL (Access Control Lists)

  • 토큰별로 실행 가능한 명령어 명시적 지정
  • 연산자(&&, ||, |, >, ;) 차단으로 명령어 체이닝 방지
  • 토큰 유출 시에도 허용된 명령어만 실행 가능
# 예시: 특정 명령어만 허용하는 토큰
allowed_commands:
  - "pm2 restart app"
  - "systemctl status nginx"
  - "git pull"

역방향 연결 (Zero Exposed Ports)

서버가 외부에서 접근 가능한 포트를 열지 않습니다.

  1. 서버가 Alpacon 워크스페이스로 아웃바운드 연결 시작
  2. 서버에 인바운드 포트 없음
  3. 인터넷에서 서버 발견 불가능

제거되는 위협:

  • SSH 포트 스캐닝
  • 무차별 대입 공격
  • 직접 연결 시도

중앙화된 감사 추적

모든 접근과 명령 실행이 자동으로 기록됩니다.

  • 실행 주체 (사용자/토큰) 및 대상 서버
  • 실행된 명령어와 전체 출력
  • 파일 전송 크기와 타임스탬프
  • 워크스페이스에서 중앙 관리

간편한 토큰 관리

SSH 키 순환 (기존)

  1. 각 서버별 새 키 쌍 생성
  2. 모든 서버의 authorized_keys 업데이트
  3. 모든 저장소의 GitHub Secrets 업데이트
  4. 실패 디버깅

Alpacon 토큰 순환

  1. 워크스페이스에서 토큰 업데이트
  2. GitHub Secrets 한 번 업데이트
  3. 완료

보안 이점 요약

측면SSHAlpacon (제로 트러스트)
포트 노출22번 포트 필수포트 노출 없음
접근 제어전체 서버 접근명령어 수준 제어
키/토큰 관리서버당 개별 키워크스페이스 수준 토큰
감사 로그분산된 로그중앙화된 추적
순환 복잡도O(서버 × 저장소)O(1)
유출 시 영향전체 서버 제어허용된 명령어만