OpenClaw v2026.2 적용 | 본 문서는 모든 OpenClaw 사용자, 특히 프로덕션 배포 또는 팀 사용을 준비하는 사용자에게 적합합니다.
TL;DR: DM 페어링으로 무단 접근 방지: "dmPolicy": "pairing". 샌드박스로 위험 작업 격리: "sandbox": {"mode": "non-main"}. 민감 데이터 필터링: "security": {"sensitiveData": {"patterns": ["sk-*"]}}. 원격 접근은 Tailscale 사용, 공개망 노출 금지. openclaw doctor --security 실행으로 보안 상태 확인.
보안 위험 개요
주요 위험 유형
| 위험 유형 | 설명 | 잠재적 결과 |
|---|---|---|
| 무단 접근 | 낯선 사람이 Agent를 사용할 수 있음 | 리소스 남용, 개인정보 유출 |
| 권한 남용 | Agent가 예상치 못한 작업 수행 | 데이터 손상, 시스템 파괴 |
| 데이터 유출 | 민감 정보 부적절 처리 | 개인정보 유출, 규정 준수 문제 |
| 네트워크 공격 | 외부 공격자가 취약점 악용 | 시스템 침입, 데이터 탈취 |
| Prompt 인젝션 | 악성 지시로 보안 제한 우회 | 무단 작업 수행 |
보안 모델
flowchart TB
subgraph outer["네트워크 계층"]
FW[방화벽]
TLS[HTTPS/TLS]
end
subgraph middle["접근 제어"]
DM[DM 페어링]
WL[화이트리스트]
AUTH[인증]
end
subgraph inner["실행 제어"]
SBX[샌드박스]
PERM[권한]
AUDIT[감사]
end
subgraph core["Agent"]
AG[Agent 코어]
end
outer --> middle --> inner --> core
DM 페어링 메커니즘
DM 페어링이란?
DM(Direct Message) 페어링은 새 사용자가 Agent와 대화하기 전에 먼저 페어링을 완료해야 하는 보호 메커니즘입니다.
페어링 흐름
sequenceDiagram
participant S as 낯선 사람
participant B as Bot
participant G as Gateway
participant O as 소유자
S->>B: 메시지 전송 "안녕"
B->>G: 메시지 도착
G->>G: 페어링 상태 확인
G-->>B: 미페어링, 페어링 코드 생성
B-->>S: "페어링 필요: 코드 ABC123"
S->>O: 소유자에게 페어링 코드 전달
O->>G: openclaw pairing approve telegram ABC123
G->>G: 화이트리스트에 추가
G-->>S: 페어링 성공
S->>B: 메시지 전송 "안녕"
B-->>S: 정상 응답
DM 페어링 설정
{
"channels": {
"telegram": {
"botToken": "your_token",
"dmPolicy": "pairing"
},
"whatsapp": {
"dmPolicy": "pairing"
},
"discord": {
"dmPolicy": "pairing"
}
}
}
페어링 모드
| 모드 | 설명 | 보안 수준 | 적용 시나리오 |
|---|---|---|---|
pairing |
페어링 코드 필요 | ⭐⭐⭐⭐ | 개인 사용(기본값) |
open |
누구나 사용 가능 | ⭐ | 공개 서비스 |
whitelist |
화이트리스트 사용자만 | ⭐⭐⭐⭐⭐ | 높은 보안 요구 |
페어링 관리
# 대기 중인 페어링 요청 확인
openclaw pairing list
# 출력 예시:
# Channel Code User Created
# telegram ABC123 @stranger 2026-02-26 10:30:00
# discord XYZ789 user#1234 2026-02-26 10:35:00
# 페어링 승인
openclaw pairing approve telegram ABC123
# 페어링 거부
openclaw pairing reject telegram ABC123
# 페어링된 사용자 확인
openclaw pairing show telegram
화이트리스트 설정
{
"channels": {
"telegram": {
"dmPolicy": "open",
"allowFrom": [
123456789,
987654321
]
},
"whatsapp": {
"dmPolicy": "open",
"allowFrom": [
"+8613800138000",
"+8613800138001"
]
}
}
}
사용자 ID 확인
# Telegram: @userinfobot에 메시지 전송
# Discord: 채널에서 /id 명령 또는 사용자 프로필 확인
# WhatsApp: 연락처 정보에서 확인
샌드박스 모드
샌드박스란?
샌드박스는 Agent의 작업 범위를 제한하여 의도치 않거나 악의적인 시스템 수정을 방지하는 격리 메커니즘입니다.
샌드박스 모드
| 모드 | 설명 | 적용 시나리오 |
|---|---|---|
off |
샌드박스 없음, 완전 신뢰 | 메인 세션, 신뢰 환경 |
non-main |
비메인 세션에 샌드박스 활성화 | 다중 사용자, 팀 공유 |
always |
항상 샌드박스 활성화 | 비신뢰 환경, 공개 서비스 |
샌드박스 설정
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": ["read", "write", "edit", "bash"],
"denylist": ["browser", "canvas", "nodes"],
"container": {
"image": "openclaw/sandbox:latest",
"timeout": 30000,
"memory": "512m",
"cpu": "0.5"
}
}
}
}
}
도구 권한 제어
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": [
"read",
"write",
"edit",
"bash",
"web_search",
"sessions_list",
"sessions_history",
"sessions_send"
],
"denylist": [
"browser",
"canvas",
"nodes",
"cron",
"discord",
"gateway"
]
}
}
}
}
파일 시스템 권한
{
"agents": {
"defaults": {
"permissions": {
"filesystem": {
"read": ["~/workspace", "~/documents"],
"write": ["~/workspace/output"],
"deny": ["~/.ssh", "~/.gnupg", "~/.openclaw/credentials"]
}
}
}
}
}
네트워크 권한
{
"agents": {
"defaults": {
"permissions": {
"network": {
"outbound": {
"allow": [
"api.anthropic.com",
"api.openai.com",
"github.com"
],
"deny": ["*"]
}
}
}
}
}
}
Elevated 권한
Elevated 권한이란?
Elevated 권한은 더 높은 권한이 필요한 작업을 위한 임시 권한 상승 메커니즘입니다.
Elevated 권한 설정
{
"agents": {
"defaults": {
"elevatedAccess": {
"enabled": true,
"allowlist": [123456789, 987654321],
"requireConfirmation": true,
"timeout": 300000
}
}
}
}
Elevated 권한 사용
# 채팅에서 권한 상승 요청
/elevated on
# 권한 상승이 필요한 작업 수행
# ...
# 권한 상승 해제
/elevated off
민감 데이터 처리
민감 정보 유형
| 유형 | 예시 | 처리 방식 |
|---|---|---|
| API Keys | sk-ant-xxx, sk-xxx |
기록/출력 금지 |
| 비밀번호 | 로그인 비밀번호, DB 비밀번호 | 저장/전송 금지 |
| Token | OAuth token, Session token | 암호화 저장 |
| 개인정보 | 주민등록번호, 카드번호 | 기록 금지, 익명화 |
민감 정보 필터링 설정
{
"security": {
"sensitiveData": {
"patterns": [
"sk-[a-zA-Z0-9]{20,}",
"xox[baprs]-[a-zA-Z0-9-]+",
"[0-9]{15,19}",
"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
],
"redact": true,
"log": false
}
}
}
자격 증명 저장
# 자격 증명 저장 위치
~/.openclaw/credentials/
# 암호화 저장
# OpenClaw는 시스템 키체인으로 민감 자격 증명을 암호화 저장합니다
자격 증명 관리
# 저장된 자격 증명 확인
openclaw credentials list
# 출력 예시:
# Name Type Created
# telegram-bot api_key 2026-02-20
# gmail-oauth oauth 2026-02-21
# 자격 증명 삭제
openclaw credentials delete telegram-bot
# 자격 증명 내보내기(암호화)
openclaw credentials export --output credentials.enc
# 자격 증명 가져오기
openclaw credentials import --input credentials.enc
네트워크 보안
바인딩 설정
{
"gateway": {
"bind": "loopback", // 로컬 접근만
"port": 18789,
"tls": {
"enabled": false
}
}
}
| 바인딩 옵션 | 설명 | 보안 수준 |
|---|---|---|
loopback |
로컬 접근만 | ⭐⭐⭐⭐⭐ |
private |
사설망 접근 | ⭐⭐⭐⭐ |
all |
모든 인터페이스 접근 | ⭐ |
Tailscale 설정
{
"gateway": {
"tailscale": {
"mode": "serve", // serve 또는 funnel
"resetOnExit": true
},
"auth": {
"mode": "password",
"allowTailscale": true
}
}
}
인증 설정
{
"gateway": {
"auth": {
"mode": "password",
"password": "your-secure-password",
"sessionTimeout": 3600000
}
}
}
감사 및 로그
작업 로그
{
"logging": {
"level": "info",
"audit": {
"enabled": true,
"events": [
"tool.invoke",
"session.create",
"session.reset",
"pairing.approve",
"pairing.reject",
"elevated.enable",
"elevated.disable"
],
"retention": 30
}
}
}
감사 로그 확인
# 감사 로그 확인
openclaw logs --type audit
# 출력 예시:
# [2026-02-26 10:30:00] INFO tool.invoke session=main tool=bash command="ls -la"
# [2026-02-26 10:30:05] INFO pairing.approve channel=telegram code=ABC123 user=123456789
# [2026-02-26 10:31:00] INFO elevated.enable session=telegram:user:123456789
# 특정 이벤트 필터링
openclaw logs --type audit --filter "tool.invoke"
# 시간 범위 지정
openclaw logs --type audit --from 2026-02-01 --to 2026-02-28
사용량 모니터링
# 사용량 확인
openclaw usage --today
# 출력 예시:
# Date: 2026-02-26
# Requests: 128
# Tokens In: 125,000
# Tokens Out: 45,000
# Cost: $2.10
# Top Tools: bash(45), read(32), write(18)
# 이상 탐지
openclaw usage --alerts
# 출력 예시:
# ⚠️ 높은 사용량 감지: 1시간 내 1000+ 요청
# ⚠️ 비정상 도구 패턴: 민감 디렉토리에 bash 명령
보안 점검 목록
기본 보안
- DM 페어링 또는 화이트리스트 활성화
- 샌드박스 모드 설정
- 적절한 도구 권한 설정
- 작업 감사 로그 활성화
- API Key 정기 교체
고급 보안
- 파일 시스템 권한 제한 설정
- 네트워크 아웃바운드 화이트리스트 설정
- 민감 정보 필터링 활성화
- Elevated 권한 확인 설정
- 페어링 사용자 정기 검토
엔터프라이즈 보안
- Docker 샌드박스 격리 사용
- Tailscale 사설망 설정
- HTTPS/TLS 활성화
- 사용량 알림 설정
- 정기 보안 감사
보안 진단
# 보안 진단 실행
openclaw doctor --security
# 출력 예시:
# ✅ DM Pairing: Enabled
# ✅ Sandbox Mode: non-main
# ⚠️ File Permissions: 일부 디렉토리 제한 없음
# ✅ Network Outbound: 화이트리스트로 제한됨
# ⚠️ Elevated Access: 확인 필요 없음
# ✅ Audit Logging: Enabled
# ✅ Credentials: Encrypted
# 권장사항:
# - 파일 접근을 ~/workspace로만 제한
# - Elevated 접근 확인 활성화
요약
보안 설정은 OpenClaw 배포의 중요한 부분입니다:
- DM 페어링: 무단 접근 방지
- 샌드박스 모드: 작업 범위 제한
- 권한 제어: 세밀한 도구 및 파일 권한
- 민감 데이터: 민감 정보 필터링 및 보호
- 네트워크 보안: 바인딩 및 인증 설정
- 감사 로그: 작업 추적 및 모니터링
본문 요약:
- 주요 보안 위험과 방어 메커니즘 이해
- DM 페어링 및 화이트리스트 설정 숙지
- 샌드박스 모드와 권한 제어 학습
- 민감 데이터 처리 및 네트워크 설정 파악
- 감사 로그 및 보안 점검 목록 숙지
업데이트 기록:
- 2026-02-26: 초판 발행, OpenClaw v2026.2 기반
시리즈 네비게이션:
- ← 이전: 다중 Agent 라우팅 및 세션 격리
- → 다음: 원격 배포 방안