OpenFang 보안 모범 사례

16분 읽기

자율형 AI 에이전트의 보안은 절대 간과할 수 없습니다. OpenFang은 설계 단계부터 16단계 보안 방어 체계를 내장했습니다. 4단계 샌드박스 격리, 4단계 네트워크 보안, 4단계 데이터 보안, 4단계 감사 및 규정 준수로 구성됩니다. 본 가이드에서는 세 가지 사전 설정 템플릿과 전체 보안 체크리스트를 제공합니다.

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단계: 파일 시스템 샌드박스

에이전트가 액세스할 수 있는 파일 시스템 경로를 제한합니다:

toml
[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단계: 프로세스 샌드박스

에이전트가 실행할 수 있는 시스템 명령을 제한합니다:

toml
[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단계: 메모리 제한

메모리 누수나 악성 코드로 인해 시스템 자원이 고갈되는 것을 방지합니다:

toml
[security.sandbox.memory]max_memory_mb = 512              # 에이전트 메모리 상한max_per_hand_mb = 128            # 각 Hand별 메모리 상한oom_policy = "kill_hand"         # kill_hand / restart / notify

4단계: CPU 제한

toml
[security.sandbox.cpu]max_cores = 2                    # 최대 2개 CPU 코어 사용priority = "low"                 # low / normal / highcfs_period_us = 100000cfs_quota_us = 50000             # 50% CPU 할당량

제2범주: 네트워크 보안

5단계: 네트워크 격리

에이전트의 아웃바운드 네트워크 액세스를 제어합니다:

toml
[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단계: 트래픽 암호화

toml
[security.network.tls]min_version = "1.2"verify_certificates = truecertificate_pinning = [    { domain = "api.anthropic.com", pin = "sha256/..." },]

7단계: 속도 제한

에이전트가 대량의 요청을 보내는 공격에 악용되는 것을 방지합니다:

toml
[security.network.rate_limit]requests_per_minute = 60tokens_per_minute = 100000burst_multiplier = 2cooldown_after_exceeded = "5m"

8단계: 프록시 및 외부 통신 제어

모든 에이전트 트래픽을 기업 프록시를 통해 내보냅니다:

toml
[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)

프롬프트 인젝션 공격을 방어합니다:

toml
[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단계: 출력 필터링

에이전트 응답을 통해 민감 데이터가 유출되는 것을 방지합니다:

toml
[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단계: 민감 데이터 암호화

toml
[security.data.encryption]encrypt_workspace = trueencrypt_logs = truekey_derivation = "argon2id"rotation_days = 30

12단계: 데이터 최소화

toml
[security.data.minimization]log_user_inputs = false          # 사용자 입력 기록 안 함log_agent_outputs = false        # 에이전트 출력 기록 안 함retention_days = 7               # 로그 7일 보관strip_pii = true                 # 개인정보(PII) 자동 제거

제4범주: 감사 및 규정 준수

13단계: 작업 감사

toml
[security.audit]enabled = truelog_level = "info"[security.audit.events]command_execution = truefile_access = truenetwork_request = trueconfig_change = truehand_start_stop = true

감사 로그는 JSON 형식으로 타임스탬프, 작업 유형, 작업자, 작업 상세 내용 및 결과를 포함합니다:

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단계: 이상 탐지

toml
[security.audit.anomaly_detection]enabled = truebaseline_days = 7sensitivity = "medium"           # low / medium / highalert_on = ["unusual_command", "off_hours_activity", "unusual_destination"]

15단계: 규정 준수 보고서

toml
[security.compliance]generate_reports = trueschedule = "0 0 1 * *"           # 매월 생성frameworks = ["SOC2", "ISO27001"]export_format = "pdf"

16단계: 보안 사고 대응

toml
[security.incident_response]auto_contain = true              # 이상 감지 시 에이전트 자동 격리containment_action = "pause_all_hands"notify_channels = ["slack:#security", "email:[email protected]"]forensic_snapshot = true         # 트리거 발생 시 현장 스냅샷 저장

빠른 보안 구성 템플릿

배포 환경에 맞는 사전 설정 보안 구성을 선택하세요:

개발 환경 (낮은 보안 요구사항)

bash
openfang security preset development

프로덕션 환경 (표준 보안 요구사항)

bash
openfang security preset production

고보안 환경 (금융/의료/정부)

bash
openfang security preset hardened

세 가지 사전 설정의 주요 차이점:

구성 항목DevelopmentProductionHardened
파일 시스템basicstrictstrict
Shell 액세스허용금지금지
네트워크 모드blocklistallowlistallowlist
출력 필터링끄기켜기켜기
감사 로그끄기켜기켜기
데이터 암호화끄기켜기켜기
이상 탐지끄기mediumhigh
자동 격리끄기끄기켜기

보안 체크리스트

프로덕션 환경에 배포하기 전, openfang security audit 명령어를 사용하여 항목별로 검증하세요:

bash
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 사전 설정으로 시작하여 에이전트의 동작을 관찰합니다. 차단된 필수 작업이 있다면 감사 로그를 통해 차단 항목을 확인한 후, 해당 항목을 허용 목록에 추가하세요.
프롬프트 인젝션을 정말로 방어할 수 있나요?
OpenFang의 입력 정제기는 다층 방어를 제공하지만, 완벽한 방어는 없습니다. 입력 정제 + 샌드박스 제한 + 네트워크 격리를 결합하는 것이 모범 사례입니다. 인젝션이 입력 정제를 우회하더라도 샌드박스와 네트워크 제한이 피해를 최소화합니다.
컨테이너 환경(Docker/K8s)에서 보안 계층을 어떻게 추가하나요?
OpenFang의 보안 계층은 애플리케이션 계층 보안과 상호 보완적인 관계입니다. Docker의 seccomp/AppArmor 프로필은 0단계 추가 방어로 활용할 수 있지만, OpenFang의 내장 보안 메커니즘을 대체해서는 안 됩니다.
보안 사고가 발생하면 어떻게 해야 하나요?
1. 감사 로그를 확인하여 사고 범위를 파악합니다.
2. auto_contain = true가 설정되어 있다면 에이전트는 이미 자동으로 격리된 상태입니다.
3. 포렌식 스냅샷을 다운로드합니다: openfang security forensics download --run-id xxx
4. 근본 원인을 분석하고 취약점을 패치합니다.
5. 스냅샷에서 복구하거나 에이전트를 재초기화합니다.

다음 단계