아키텍처
Alpacon이 어떻게 구성되는지 사용자 관점에서 살펴봅니다. 서버가 어떻게 연결되고, 어떻게 서버에 접근하며, 무엇이 기록되는지 알아봅니다.
개요
Alpacon을 사용하면 상시 SSH 키나 VPN, 열린 포트 없이 서버에 접근하고, 누가 무엇을 했는지 증명하고, 접근을 관리하는 일을 한 곳에서 처리합니다.
세 가지가 함께 작동합니다.
- 접근: 요청한 서버와 시간 범위 안에서만 본인으로 접속합니다.
- 거버넌스: 모든 세션은 중요한 지점에서 승인되고, 특정 작업으로 범위가 정해지며, 시간이 제한됩니다.
- 감사: 모든 것이 하나의 타임라인에 기록되고, 세션이 끝나면 AI 위험 분석이 이를 검토합니다.
서버는 어떻게 연결되나요
아웃바운드 전용 에이전트
각 서버의 Alpamon 에이전트가 Alpacon으로 아웃바운드 연결을 맺고 이를 유지합니다. 서버로 들어오는 연결은 없습니다.
이것이 주는 이점:
- 열어야 할 인바운드 포트가 없고, 공개된 SSH 노출도 없습니다(포트 22를 닫아 둡니다).
- NAT, 기업 방화벽, 프록시 뒤에서도 방화벽 변경 없이 작동합니다.
- 모든 연결은 종단간 암호화됩니다.
- 짧은 네트워크 끊김에도 세션이 안정적으로 유지되고 자동으로 재연결됩니다.
서버 등록
워크스페이스(서버 → 서버 등록)에서 서버를 등록하고 생성된 설치 스크립트를 실행합니다. 전체 과정은 몇 분이면 끝납니다.
단계별 지침은 빠른 시작 가이드를 참고하세요.
서버를 등록하면 실시간 상태 모니터링, 연결 상태 알림, 그룹 기반 접근 제어를 그 서버에 사용할 수 있습니다.
사용자는 어떻게 연결하나요
본인으로 접속
나눠줄 공유 키나 서버별 비밀번호 없이, 본인의 Alpacon 신원으로 서버에 접근합니다. 신원이 곧 서버에서의 계정이므로, 모든 행동은 처음부터 본인에게 귀속됩니다.
설정할 클라이언트 소프트웨어나 SSH 키 없이 브라우저 터미널(Websh)을 열고, 파일을 전송하고(WebFTP), 명령을 실행합니다.
접근은 상시가 아니라 요청으로
접근은 상시 연결로 유지되지 않고, 작업 세션을 통해 필요한 순간에만 부여됩니다.
- 특정 서버, 도구, 시간 범위로 작업 세션을 요청합니다.
- Alpacon이 권한을 검증하고, 필요하면 Superuser가 승인합니다.
- 세션이 유지되는 동안 브라우저나 CLI에서 작업합니다.
- 하는 일은 모두 감사를 위해 기록됩니다.
- 세션이 끝나거나 만료되면 접근이 해제됩니다.
신원 및 접근 관리 (IAM)
한 곳에서 관리하는 신원
사용자는 IAM 멤버십으로 참여하고 첫 접속 때 접근 권한을 받습니다. 누군가의 권한을 바꾸거나 없애면 모든 곳에 한 번에 반영되므로, 서버마다 로컬 계정을 만들고 정리할 필요가 없습니다.
프로세스:
- 새 팀원 → Alpacon 초대
- 첫 접속 시 접근 권한 프로비저닝
- 권한 변경 시 자동 동기화
- 구성원이 떠나면 즉시 접근 차단
강화된 로그인
지원 MFA 방식:
- Biometric (생체 인증)
- Hardware security key
- OTP (One-Time Password)
- SMS
통합 로그인 (Auth0 기반):
- Google Workspace
- Okta(Okta Integration Network, Enterprise 워크스페이스)
- SAML IdP(Enterprise 워크스페이스, 온보딩 시 구성)
Passwordless 시스템 계정
- 시스템 계정은 비밀번호 없이 생성됩니다.
- Alpacon을 통해서만 접근할 수 있습니다.
- SSH 키나 비밀번호 직접 사용이 차단됩니다.
자동화와 통합
사람은 세션으로 작업하고, 자동화는 SSH 키 대신 범위 제한 토큰을 사용합니다. 토큰은 특정 범위나 허용 명령 및 서버 목록으로 제한되므로, 파이프라인은 허용된 작업만 수행할 수 있습니다. 토큰을 참고하세요.
CLI 예시
# Login
alpacon login --workspace my-workspace --region ap1 -t "alpat-..."
# File upload
alpacon cp docker-compose.yml prod-docker:/opt/my-app/
alpacon cp .env prod-docker:/opt/my-app/
# Command execution
alpacon websh prod-docker docker compose -p my-app --env-file .env up -d
REST API 예시
curl -X POST https://your-workspace.ap1.alpacon.io/api/events/commands/ \
-H "Content-Type: application/json" \
-H "Authorization: token=\"alpat-...\"" \
-d '{"server": "7a50ea6c-2138-4d3f-9633-e50694c847c4", "line": "docker ps", "username": "docker"}'
얻는 것:
- 세분화된 명령 제한
- 토큰별 허용 명령만 실행
- CI 악용 차단
감사
모든 서버 접근과 활동을 하나의 타임라인에서 추적합니다.
제공 기능
- Live activity: 활성 세션을 실시간으로 확인
- 완전한 기록: 모든 세션을 하나의 타임라인에 기록(명령, 전송, sudo 권한 부여, 터미널 녹화)
- AI 위험 분석: 세션이 끝난 뒤 AI가 자동으로 세션을 검토
- 완전한 가시성: 모든 행동을 사람 또는 토큰에 귀속
각 기록에 담기는 내용
- 누가 (사용자/토큰)
- 언제 (타임스탬프)
- 어디서 (서버/IP)
- 무엇을 (실행 명령/결과)
- 왜 (세션 컨텍스트)
보안 원칙
Zero Trust
- 네트워크 위치를 근거로 한 암묵적 신뢰 없음
- 모든 접근 요청 검증
- 기본은 최소 권한
- 지속적인 검증
심층 방어
- 다층 보호 구조
- 단일 장애점(SPOF) 방지
- 암호화된 연결
- 완전한 감사 추적
사람과 에이전트를 위한 설계
- SSH는 사람을 위해 설계됨 → Alpacon은 사람과 AI 에이전트 모두를 통제합니다.
- 상시 키 → 적시(JIT) 작업 세션과 범위 제한 토큰.
- 분산 로깅 → 중앙화된 AI 분석 감사 하나로.
가용성
- 이중화된 고가용성 서비스
- 자동 페일오버
- 글로벌 리전 지원