CLI 세션 관리: 셀프 호스팅 지갑을 위한 prompt, set-master 및 owner 명령어
요약
셀프 호스팅 WAIaaS 인프라를 위한 CLI 세션 관리 방법과 보안 명령어를 소개합니다. 마스터 비밀번호 설정, 소유자 인증, MCP 통합을 통해 AI 에이전트의 개인 키를 안전하게 보호하고 세션 수명 주기를 제어하는 가이드를 제공합니다.
핵심 포인트
- WAIaaS CLI를 통한 보안 세션 및 인증 흐름 제어
- session prompt 명령어로 MCP 통합 및 대화형 세션 생성
- set-master 명령어를 통한 프로덕션 환경 보안 강화
- owner 명령어를 활용한 고액 트랜잭션 승인 및 소유자 인증
셀프 호스팅(Self-hosted) 지갑 인프라를 위한 CLI 세션을 관리하려면 보안과 사용성 사이의 세심한 균형이 필요합니다. 자체 WAIaaS 인스턴스를 실행할 때는 마스터 비밀번호(Master password) 설정부터 소유자(Owner) 확인에 이르기까지 전체 인증 흐름을 제어할 수 있으며, 에이전트의 개인 키(Private keys)를 위험에 빠뜨릴 수 있는 제3자 서비스에 의존하지 않습니다.
셀프 호스팅 세션 관리가 중요한 이유
호스팅형(Hosted) 서비스와 셀프 호스팅(Self-hosted) 지갑 서비스 사이의 선택은 단순히 편의성의 문제가 아니라 주권(Sovereignty)의 문제입니다. 셀프 호스팅 WAIaaS를 사용하면 AI 에이전트의 개인 키가 귀하의 인프라를 절대 벗어나지 않습니다. 귀하가 직접 보안 정책을 설정하고, 인증 흐름을 제어하며, 모든 트랜잭션에 대한 완전한 감사 추적(Audit trails)을 유지할 수 있습니다. 이는 에이전트가 상당한 자금을 관리하거나 데이터 거주성(Data residency)이 중요한 규제 환경에서 작동할 때 매우 중요해집니다.
전통적인 호스팅형 지갑 서비스는 근본적인 신뢰 문제를 야기합니다. 즉, 제3자에게 에이전트의 지출 권한을 보호해 달라고 요청하는 것입니다. 셀프 호스팅은 이러한 의존성을 제거하는 동시에 세션 수명 주기(Session lifecycles), 인증 방법 및 보안 정책에 대한 세밀한 제어 권한을 제공합니다.
CLI 세션 명령어 개요
WAIaaS는 세션 관리를 위해 세 가지 핵심 CLI 명령어를 제공합니다:
waiaas session prompt— 자동 MCP 통합을 통한 대화형(Interactive) 세션 생성waiaas set-master— 프로덕션 배포를 위한 보안 마스터 비밀번호(Master password) 관리waiaas owner connect/disconnect/status— 고액 트랜잭션 승인을 위한 소유자(Owner) 인증
대화형 세션 생성
session prompt 명령어는 지갑에서 작동하는 AI 에이전트로 가는 가장 빠른 경로를 제공합니다:
waiaas session prompt
이 대화형 명령어는 지갑 선택, 정책 구성 및 MCP 통합 과정을 안내합니다. 백그라운드에서는 다음과 같은 작업을 수행합니다:
- 인스턴스 내 사용 가능한 모든 지갑(wallets) 목록을 나열합니다.
- 구성 가능한 TTL (Time To Live) 및 갱신 제한(renewal limits)을 가진 새로운 세션을 생성합니다.
- Claude Desktop을 위한 MCP (Model Context Protocol) 설정 블록을 생성합니다.
- 선택적으로 기본적인 보안 정책(security policies)을 적용합니다.
생성된 세션 토큰은 인스턴스의 비밀키(secret)를 사용한 JWT HS256 서명을 사용하여, 토큰이 위조되거나 다른 WAIaaS 인스턴스에서 사용될 수 없도록 보장합니다. 세션 토큰에는 지갑 바인딩(wallet binding), 만료(expiration) 및 갱신 추적(renewal tracking) 정보가 포함됩니다.
자동화를 위해 프로그래밍 방식으로 세션을 생성할 수 있습니다:
curl -X POST http://127.0.0.1:3100/v1/sessions \
-H "Content-Type: application/json" \
-H "X-Master-Password: my-secret-password" \
...
프로덕션 마스터 비밀번호(Master Password) 설정
set-master 명령어는 셀프 호스팅의 흔한 과제인 개발 환경에서 프로덕션 보안으로의 전환 문제를 해결합니다. 처음 waiaas init --auto-provision을 실행하면 recovery.key에 저장되는 무작위 마스터 비밀번호가 생성됩니다. 이는 빠른 시작을 도와주지만 프로덕션 환경에는 적합하지 않습니다.
# 자동 생성된 비밀번호를 사용한 초기 설정
waiaas init --auto-provision
waiaas start # recovery.key의 비밀번호 사용
...
마스터 비밀번호는 가장 민감한 작업들을 보호합니다:
- 지갑 생성 및 개인키(private key) 접근
- 세션 생성 및 취소(revocation)
- 정책 구성(policy configuration)
- 시스템 수준의 구성 변경
WAIaaS는 마스터 비밀번호 해싱을 위해 Argon2id를 사용하여 CPU 및 GPU 기반 공격 모두에 대한 저항성을 제공합니다. 유도된 키(derived key)는 AES-256-GCM을 사용하여 지갑의 개인키를 암호화합니다.
소유자 인증 흐름 (Owner Authentication Flow)
소유자(Owner) 명령어는 고가치 트랜잭션을 위한 인간 개입 승인 시스템(human-in-the-loop approval system)을 처리합니다. 이는 관심사 분리(separation of concerns)를 구현합니다. 즉, AI 에이전트는 세션 인증(session auth)을 통해 트랜잭션을 시작할 수 있지만, 인간은 소유자 인증(owner auth)을 통해 거부권(veto power)을 유지합니다.
현재 소유자 연결 상태 확인:
waiaas owner status
트랜잭션 승인을 위한 소유자 지갑 연결:
waiaas owner connect
# 개인 키(private key) 또는 하드웨어 지갑(hardware wallet) 연결을 위한 프롬프트
# 인증을 위한 SIWS/SIWE 서명 생성
연결이 완료되면, 소유자(owner)는 다음과 같은 다양한 채널을 통해 대기 중인 트랜잭션을 승인할 수 있습니다:
- 하드웨어 지갑 승인을 위한 WalletConnect 통합
- 승인 버튼이 포함된 Telegram 봇 알림
- 모바일 승인을 위한 푸시 알림(Push notification) 서비스
소유자 인증은 개인 키를 직접 노출하는 대신 메시지 서명(Solana의 경우 SIWS, Ethereum의 경우 SIWE)을 사용합니다. 이를 통해 하드웨어 지갑 및 멀티시그(multisig) 설정이 승인 흐름에 참여할 수 있습니다.
보안 정책 통합 (Security Policy Integration)
CLI 세션 관리는 WAIaaS의 21가지 정책 유형과 직접 통합됩니다. 세션을 생성할 때, 소유자 승인을 트리거하는 지출 한도를 강제할 수 있습니다:
curl -X POST http://localhost:3100/v1/policies \
-H 'Content-Type: application/json' \
-H 'X-Master-Password: <password>' \
...
이는 다음과 같은 4단계 보안 시스템을 구축합니다:
- INSTANT (≤$10): 즉시 실행
- NOTIFY ($10-$100): 알림과 함께 실행
- DELAY ($100-$1000): 5분 지연, 취소 가능
- APPROVAL (>$1000): 소유자 승인 필요
owner disconnect 명령은 비상용 킬 스위치(kill switch) 역할을 제공합니다:
waiaas owner disconnect
# 승인 권한을 즉시 취소함
# 대기 중인 APPROVAL 트랜잭션은 소유자가 다시 연결될 때까지 중단됨
프로덕션을 위한 Docker 통합 (Docker Integration for Production)
셀프 호스팅(Self-hosted) WAIaaS 배포는 일반적으로 환경 간의 일관성을 위해 Docker에서 실행됩니다. CLI 명령은 컨테이너화된 배포 환경에서도 원활하게 작동합니다:
# Docker Compose로 시작
docker compose up -d
...
프로덕션 배포의 경우, 마스터 비밀번호(master password) 관리를 위해 Docker Secrets를 사용하십시오:
services:
daemon:
image: ghcr.io/minhoyoo-iotrust/waiaas:latest
...
이를 통해 환경 변수(environment variables)나 명령 기록(command history)에 마스터 비밀번호가 노출되는 것을 방지할 수 있습니다.
세션 생명주기 관리 (Session Lifecycle Management)
WAIaaS 세션은 보안과 사용성 사이의 균형을 맞추기 위해 구성 가능한 생명주기 (Lifecycle)를 지원합니다:
- TTL (Time To Live): 정해진 시간 후에 세션 만료 (기본값: 무제한)
- Max Renewals (최대 갱신 횟수): 세션을 연장할 수 있는 횟수 제한 (기본값: 무제한)
- Absolute Lifetime (절대 수명): 활동 여부와 관계없이 강제 만료 (기본값: 무제한)
프로덕션 에이전트(Production agents)의 경우, 제한된 세션을 고려하십시오:
{
"walletId": "<uuid>",
"ttlSeconds": 3600,
...
이는 24시간의 절대 제한 시간 내에서 24번 갱신 가능한 1시간 단위의 세션을 생성합니다. 에이전트는 매일 재인증(Reauthenticate)을 수행해야 하며, 이를 통해 토큰 탈취 시 피해 범위(Blast radius)를 제한할 수 있습니다.
빠른 시작: 안전한 셀프 호스팅 설정
프로덕션 환경에 적합한 WAIaaS 배포를 위한 전체 흐름은 다음과 같습니다:
- Docker Compose로 배포:
git clone https://github.com/minhoyoo-iotrust/WAIaaS.git
cd WAIaaS
docker compose up -d
- 자동 프로비저닝(Auto-provision)을 통한 초기 설정:
docker exec waiaas-daemon waiaas init --auto-provision
docker exec waiaas-daemon waiaas quickset
- 마스터 비밀번호 강화:
docker exec -it waiaas-daemon waiaas set-master
docker exec waiaas-daemon rm /data/recovery.key
- 승인을 위한 소유자(Owner) 연결:
docker exec -it waiaas-daemon waiaas owner connect
- AI 에이전트를 위한 세션 생성:
docker exec -it waiaas-daemon waiaas session prompt
세션 프롬프트(Session prompt)는 Claude Desktop을 위한 MCP 설정을 출력하며, 이를 통해 귀하의 AI 에이전트는 정의된 보안 정책에 따라 지갑 기능에 즉시 접근할 수 있습니다.
다음 단계
셀프 호스팅 WAIaaS는 소유자 승인 흐름(Owner approval flows)과 구성 가능한 정책을 통해 보안을 유지하면서, AI 에이전트의 금융 역량에 대한 완전한 제어권을 제공합니다. 귀하의 키는 귀하의 인프라에 머물고, 정책은 귀하의 위험 허용 범위를 강제하며, 에이전트는 귀하가 정의한 자율성(Autonomy)을 가지고 작동합니다.
자신만의 인스턴스를 배포할 준비가 되셨나요? 전체 설정 지침은 GitHub repository를 방문하시거나, 정책 설정(Policy configuration) 및 고급 기능(Advanced features)에 대해 더 깊이 알아보고 싶다면 waiaas.ai에서 전체 문서(Documentation)를 살펴보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기