OpenFang 보안 모범 사례: 16단계 보안 방어 체계 상세 분석
Slug: openfang-security-best-practices
분류: usage-guides (사용 가이드)
핵심 키워드: OpenFang 보안, OpenFang 보안 구성, 에이전트 보안 모범 사례
검색 의도: 정보성 (OpenFang의 안전한 배포를 원하는 사용자)
목표 분량: ~2000자
언어: ko
왜 에이전트 보안이 중요한가요?
자율형 AI 에이전트는 명령 실행, 네트워크 액세스, 파일 읽기 및 쓰기 권한을 가집니다. 이러한 기능을 제한 없이 허용하는 것은 보안 재앙의 지름길입니다. 보안 방어가 없는 에이전트는 프롬프트 인젝션(Prompt Injection) 공격으로 인해 위험한 명령을 실행하거나, 민감한 데이터를 유출하거나, 공격의 발판으로 악용될 수 있습니다.
OpenFang은 설계 초기부터 보안을 핵심 아키텍처의 일부로 고려하여 16단계 보안 방어 메커니즘을 제공합니다. 본 가이드에서는 각 단계별 구성 방법과 모범 사례를 기초부터 심화까지 설명합니다.
보안 아키텍처 개요
OpenFang의 16단계 보안 방어는 크게 네 가지 범주로 나뉩니다:
| 범주 | 단계 | 방어 목표 |
|---|---|---|
| 샌드박스 격리 | 1–4단계 | 에이전트 실행 환경 제한 |
| 네트워크 보안 | 5–8단계 | 에이전트 네트워크 액세스 제어 |
| 데이터 보안 | 9–12단계 | 민감 데이터 유출 방지 |
| 감사 및 규정 준수 | 13–16단계 | 에이전트 행동 기록 및 감사 |
제1범주: 샌드박스 격리
1단계: 파일 시스템 샌드박스
에이전트가 액세스할 수 있는 파일 시스템 경로를 제한합니다:
[security.sandbox.filesystem]mode = "strict" # off / basic / strictallowed_paths = [ "./workspace/", "/tmp/openfang/",]denied_paths = [ "/etc/", "~/.ssh/", "~/.aws/",]read_only_paths = [ "./config/", "/usr/share/openfang/",]strict 모드에서는 allowed_paths에 나열되지 않은 경로에는 에이전트가 전혀 접근할 수 없습니다. 항상 에이전트 전용 작업 디렉토리를 생성하는 것을 권장합니다.
2단계: 프로세스 샌드박스
에이전트가 실행할 수 있는 시스템 명령을 제한합니다:
[security.sandbox.process]allow_shell = false # 직접적인 Shell 액세스 금지allowed_commands = [ "git", "curl", "python3", "node",]denied_commands = [ "rm", "sudo", "chmod", "wget",]command_timeout = 30 # 명령 최대 실행 시간(초)allow_shell = false는 프로덕션 환경에서 반드시 활성화해야 하는 설정입니다. 에이전트는 allowed_commands 목록에 있는 명령을 통해서만 시스템과 상호작용할 수 있습니다.
3단계: 메모리 제한
메모리 누수나 악성 코드로 인해 시스템 자원이 고갈되는 것을 방지합니다:
[security.sandbox.memory]max_memory_mb = 512 # 에이전트 메모리 상한max_per_hand_mb = 128 # 각 Hand별 메모리 상한oom_policy = "kill_hand" # kill_hand / restart / notify4단계: CPU 제한
[security.sandbox.cpu]max_cores = 2 # 최대 2개 CPU 코어 사용priority = "low" # low / normal / highcfs_period_us = 100000cfs_quota_us = 50000 # 50% CPU 할당량제2범주: 네트워크 보안
5단계: 네트워크 격리
에이전트의 아웃바운드 네트워크 액세스를 제어합니다:
[security.network]mode = "allowlist" # allowlist / blocklist / unrestrictedallowed_domains = [ "api.anthropic.com", "api.openai.com", "github.com",]allowed_ports = [443, 80]block_ip_ranges = [ "10.0.0.0/8", # 내부망 액세스 차단 "172.16.0.0/12", "192.168.0.0/16",]dns_over_https = true # 암호화된 DNS 사용6단계: 트래픽 암호화
[security.network.tls]min_version = "1.2"verify_certificates = truecertificate_pinning = [ { domain = "api.anthropic.com", pin = "sha256/..." },]7단계: 속도 제한
에이전트가 대량의 요청을 보내는 공격에 악용되는 것을 방지합니다:
[security.network.rate_limit]requests_per_minute = 60tokens_per_minute = 100000burst_multiplier = 2cooldown_after_exceeded = "5m"8단계: 프록시 및 외부 통신 제어
모든 에이전트 트래픽을 기업 프록시를 통해 내보냅니다:
[security.network.proxy]http_proxy = "${HTTP_PROXY}"https_proxy = "${HTTPS_PROXY}"no_proxy = ["localhost", "127.0.0.1"]enforce_proxy = true # 모든 트래픽 프록시 강제 경유제3범주: 데이터 보안
9단계: 입력 정제(Input Sanitization)
프롬프트 인젝션 공격을 방어합니다:
[security.data.input_guard]enabled = truemode = "strict"[security.data.input_guard.rules]detect_jailbreak = truedetect_prompt_leak = truedetect_code_injection = truemax_input_length = 8000sanitize_markdown = true입력 정제기는 에이전트가 사용자 입력을 처리하기 전에 탈옥 프롬프트, 프롬프트 유출 시도, 코드 인젝션 등 잠재적인 공격을 스캔합니다.
10단계: 출력 필터링
에이전트 응답을 통해 민감 데이터가 유출되는 것을 방지합니다:
[security.data.output_guard]enabled = true[security.data.output_guard.patterns]credit_cards = trueapi_keys = true # API 키 형식 감지 및 차단emails = "mask" # mask / block / allowphone_numbers = "mask"custom_patterns = [ "\\b(?:sk|pk)_[a-zA-Z0-9]{32,}\\b", "\\bAKIA[A-Z0-9]{16}\\b", # AWS Access Key]11단계: 민감 데이터 암호화
[security.data.encryption]encrypt_workspace = trueencrypt_logs = truekey_derivation = "argon2id"rotation_days = 3012단계: 데이터 최소화
[security.data.minimization]log_user_inputs = false # 사용자 입력 기록 안 함log_agent_outputs = false # 에이전트 출력 기록 안 함retention_days = 7 # 로그 7일 보관strip_pii = true # 개인정보(PII) 자동 제거제4범주: 감사 및 규정 준수
13단계: 작업 감사
[security.audit]enabled = truelog_level = "info"[security.audit.events]command_execution = truefile_access = truenetwork_request = trueconfig_change = truehand_start_stop = true감사 로그는 JSON 형식으로 타임스탬프, 작업 유형, 작업자, 작업 상세 내용 및 결과를 포함합니다:
{ "timestamp": "2026-07-10T08:30:15.123Z", "event": "command_execution", "hand": "researcher", "command": "git clone https://github.com/...", "sandbox": "strict", "result": "allowed", "duration_ms": 1240}14단계: 이상 탐지
[security.audit.anomaly_detection]enabled = truebaseline_days = 7sensitivity = "medium" # low / medium / highalert_on = ["unusual_command", "off_hours_activity", "unusual_destination"]15단계: 규정 준수 보고서
[security.compliance]generate_reports = trueschedule = "0 0 1 * *" # 매월 생성frameworks = ["SOC2", "ISO27001"]export_format = "pdf"16단계: 보안 사고 대응
[security.incident_response]auto_contain = true # 이상 감지 시 에이전트 자동 격리containment_action = "pause_all_hands"notify_channels = ["slack:#security", "email:[email protected]"]forensic_snapshot = true # 트리거 발생 시 현장 스냅샷 저장빠른 보안 구성 템플릿
배포 환경에 맞는 사전 설정 보안 구성을 선택하세요:
개발 환경 (낮은 보안 요구사항)
openfang security preset development프로덕션 환경 (표준 보안 요구사항)
openfang security preset production고보안 환경 (금융/의료/정부)
openfang security preset hardened세 가지 사전 설정의 주요 차이점:
| 구성 항목 | Development | Production | Hardened |
|---|---|---|---|
| 파일 시스템 | basic | strict | strict |
| Shell 액세스 | 허용 | 금지 | 금지 |
| 네트워크 모드 | blocklist | allowlist | allowlist |
| 출력 필터링 | 끄기 | 켜기 | 켜기 |
| 감사 로그 | 끄기 | 켜기 | 켜기 |
| 데이터 암호화 | 끄기 | 켜기 | 켜기 |
| 이상 탐지 | 끄기 | medium | high |
| 자동 격리 | 끄기 | 끄기 | 켜기 |
보안 체크리스트
프로덕션 환경에 배포하기 전, openfang security audit 명령어를 사용하여 항목별로 검증하세요:
openfang security audit# 출력 예시:# ✅ [1/16] Filesystem sandbox: strict# ✅ [2/16] Process sandbox: no shell access# ✅ [3/16] Memory limit: 512 MB# ✅ [4/16] CPU limit: 2 cores# ✅ [5/16] Network: allowlist mode# ⚠️ [6/16] TLS cert pinning: not configured# ✅ [7/16] Rate limiting: enabled# ...# Score: 14/16 — 2 recommendations pending자주 묻는 질문
보안 설정이 너무 엄격해서 에이전트가 정상적으로 작동하지 않으면 어떻게 하나요?
hardened 사전 설정으로 시작하여 에이전트의 동작을 관찰합니다. 차단된 필수 작업이 있다면 감사 로그를 통해 차단 항목을 확인한 후, 해당 항목을 허용 목록에 추가하세요.프롬프트 인젝션을 정말로 방어할 수 있나요?
컨테이너 환경(Docker/K8s)에서 보안 계층을 어떻게 추가하나요?
보안 사고가 발생하면 어떻게 해야 하나요?
2.
auto_contain = true가 설정되어 있다면 에이전트는 이미 자동으로 격리된 상태입니다.3. 포렌식 스냅샷을 다운로드합니다:
openfang security forensics download --run-id xxx4. 근본 원인을 분석하고 취약점을 패치합니다.
5. 스냅샷에서 복구하거나 에이전트를 재초기화합니다.
다음 단계
- OpenFang 설치 및 초기화 가이드: 처음부터 안전하게 배포하기
- OpenFang 자동화 워크플로우 구축 가이드: 안전한 자동화 프로세스 구축하기