영웅 여정 Security Assessment API—신화적 프레임워크가 SMB 사이버보안과 만나다

발행: (2025년 12월 12일 오후 01:45 GMT+9)
9 min read
원문: Dev.to

Source: Dev.to

What I Built

제가 만든 것

The Problem

문제점

33+ million U.S. small businesses face the same cyber threats as enterprises (ransomware, BEC, supply‑chain attacks) but lack access to security expertise. Existing frameworks like NIST CSF speak compliance, not survival. A shop owner who is also the IT department doesn’t need a 400‑page framework—they need a guide.
미국의 3,300만 이상의 소기업이 기업과 동일한 사이버 위협(랜섬웨어, BEC, 공급망 공격)에 직면하지만 보안 전문 지식에 접근하지 못하고 있습니다. NIST CSF와 같은 기존 프레임워크는 준수에 초점을 맞출 뿐 생존을 위한 지침이 아닙니다. IT 부서 역할까지 겸하는 가게 주인은 400페이지짜리 프레임워크가 아니라 실질적인 가이드를 필요로 합니다.

The Solution

솔루션

Map the Hero’s Journey—a universal narrative structure—to security operations. Each story stage becomes an API endpoint that tracks progress, scores controls, and generates plain‑language reports.
영웅의 여정이라는 보편적인 서사 구조를 보안 운영에 매핑합니다. 각 스토리 단계는 진행 상황을 추적하고, 제어 점수를 매기며, 쉬운 언어로 보고서를 생성하는 API 엔드포인트가 됩니다.

Security Framework Integration

보안 프레임워크 통합

Each journey stage maps to concrete security controls (e.g., “Call to Adventure” → asset inventory, “Crossing the Threshold” → MFA/backup validation). The MVP demonstrates the assessment workflow; production implementations would integrate with actual security tooling via the evidence and findings fields. This ensures the narrative scaffolding is not just metaphorical, but a structured gateway into real‑world security practices.
각 여정 단계는 구체적인 보안 제어와 연결됩니다(예: “모험의 부름” → 자산 인벤토리, “문턱을 넘어서” → MFA/백업 검증). MVP는 평가 워크플로를 보여주며, 실제 구현에서는 evidencefindings 필드를 통해 실제 보안 도구와 연동됩니다. 이를 통해 서사적 골격이 단순 은유가 아니라 실제 보안 실천으로 이어지는 구조화된 관문이 됩니다.

Journey Stages

여정 단계

  • Call to Adventure – Initial security awareness, asset inventory
    모험의 부름 – 초기 보안 인식, 자산 인벤토리
  • Crossing the Threshold – First protective controls implemented
    문턱을 넘어서 – 첫 번째 보호 제어 구현
  • Tests, Allies, Enemies – Ongoing security challenges and partnerships
    시험, 동료, 적 – 지속적인 보안 과제와 파트너십
  • The Ordeal – Incident response readiness
    시련 – 사고 대응 준비
  • Return with Elixir – Security maturity achieved, knowledge documented
    엘릭서와 귀환 – 보안 성숙도 달성, 지식 문서화

API Documentation

API 문서

  • Base URL: https://xdwe-j0cr-uydc.n7e.xano.io/api:wi5rBx5S
  • Swagger Docs: 전체 문서 보기
  • Rate Limits: Managed by Xano’s platform infrastructure. Authentication is disabled for the demo; production would enable JWT auth via Xano’s built‑in user authentication.
    속도 제한: Xano 플랫폼 인프라가 관리합니다. 데모에서는 인증이 비활성화되어 있으며, 실제 운영에서는 Xano 내장 사용자 인증을 통한 JWT 인증을 활성화합니다.

Key Endpoints

주요 엔드포인트

Start a New Journey

새 여정 시작

POST /assessments
Content-Type: application/json
{
  "business_name": "Acme Retail",
  "vertical": "retail",
  "employee_count": 25
}

Response

{
  "business_id": 1,
  "assessment_id": 1,
  "stages": [
    {"stage_name": "call_to_adventure", "score": 0},
    {"stage_name": "crossing_the_threshold", "score": 0},
    {"stage_name": "tests_allies_enemies", "score": 0},
    {"stage_name": "the_ordeal", "score": 0},
    {"stage_name": "return_with_elixir", "score": 0}
  ]
}

Generate Narrative Report

서사 보고서 생성

GET /generate_assessment_report?assessment_id=1

Response

{
  "business": {
    "name": "Acme Retail",
    "vertical": "retail",
    "employee_count": 25
  },
  "narrative_summary": {
    "hero_name": "Acme Retail",
    "current_chapter": "call_to_adventure",
    "stages_completed": 1,
    "overall_score": 75,
    "journey_status": "Apprentice"
  },
  "journey_stages": [...],
  "report_generated_at": 1765346205738
}

Journey Status Thresholds

여정 상태 임계값

  • Novice – Just beginning (score 

How to Try It Yourself

직접 사용해 보기

  1. Create a new journey with POST /assessments
    POST /assessments 로 새 여정을 생성합니다.
  2. Update stage scores with PATCH /journey_stage/{id}
    PATCH /journey_stage/{id} 로 단계 점수를 업데이트합니다.
  3. Generate your narrative report with GET /generate_assessment_report
    GET /generate_assessment_report 로 서사 보고서를 생성합니다.

The AI Prompts I Used

내가 사용한 AI 프롬프트

Journey Begin Endpoint Prompt

여정 시작 엔드포인트 프롬프트

Create an API that:

1. Accepts inputs: business_name (text), vertical (text), employee_count (integer)
2. Creates a new business record with those values
3. Creates a new assessment record linked to that business with:
   - current_stage: "call_to_adventure"
   - status: "in_progress"
   - started_at: current timestamp
4. Creates 5 journey_stage records for this assessment:
   - "call_to_adventure" (score: 0)
   - "crossing_the_threshold" (score: 0)
   - "tests_allies_enemies" (score: 0)
   - "the_ordeal" (score: 0)
   - "return_with_elixir" (score: 0)
5. Returns the assessment ID, business ID, and list of journey stages created

Report Generator Endpoint Prompt

보고서 생성 엔드포인트 프롬프트

Create an API that:

1. Takes assessment_id from the URL path parameter
2. Fetches the assessment record to verify it exists
3. Fetches the business record linked to this assessment
4. Fetches all journey_stage records for this assessment
5. Calculates overall progress:
   - Count stages with score > 0 as "completed"
   - Calculate average score across all stages
6. Generates a narrative summary object with:
   - hero_name: the business name
   - current_chapter: the current_stage from assessment
   - stages_completed: count of stages with score > 0
   - overall_score: average of all stage scores
   - journey_status: "beginning" if avg = 60
7. Returns business info, assessment info, all journey stages, the narrative summary, and timestamp

How I Refined the AI‑Generated Code

AI가 생성한 코드를 다듬은 방법

Initial AI Output

초기 AI 출력

The Xano Logic Assistant generated a solid foundation:

  • Database schema with proper relationships (business → assessment → journey_stages)
  • CRUD endpoints for all tables
  • Basic function stacks for custom logic

Human Refinements

인간이 수행한 개선

  1. Authentication Configuration – Changed critical endpoints to public for the demo while keeping production‑ready auth settings.
    인증 구성 – 데모에서는 주요 엔드포인트를 공개로 전환하고, 실제 운영에서는 인증 설정을 유지했습니다.

  2. Error Handling – Added preconditions to validate that assessments and businesses exist before processing:

    {
      "precondition": "$assessment != null",
      "error_type": "not_found",
      "error": "Assessment not found."
    }
  3. Narrative Logic – Replaced pipe filters that caused syntax errors with explicit conditional checks:

    {
      "conditional": {
        "if": "$stage.score > 0",
        "then": {
          "var.update": "stages_completed_count",
          "value": "$stages_completed_count + 1"
        }
      }
    }
  4. Journey Status Thresholds – Updated status labels to narrative‑appropriate terms: Novice, Apprentice, Guardian, Hero.
    여정 상태 임계값 – 상태 라벨을 서사에 맞는 용어(Novice, Apprentice, Guardian, Hero)로 업데이트했습니다.

  5. Maintainability by Design – Journey stages are stored as database records, not hard‑coded. New stages can be added without code changes; scoring thresholds and status labels are configurable variables, making the framework extensible and adaptable.
    설계상 유지보수성 – 여정 단계는 데이터베이스 레코드로 저장되며 하드코딩되지 않았습니다. 새로운 단계는 코드 수정 없이 추가할 수 있고, 점수 임계값과 상태 라벨은 설정 가능한 변수로 관리되어 프레임워크를 확장하고 적용하기 쉽습니다.

My Experience with Xano

Xano 사용 경험

What Worked Well

잘 작동한 점

  • Logic Assistant saved hours by generating functional code from plain‑English descriptions.
    Logic Assistant는 일반 영어 설명만으로도 작동 가능한 코드를 생성해 시간을 크게 절약했습니다.
  • Multi‑step workflows that would normally require extensive manual configuration were produced automatically, allowing rapid prototyping and iteration.
    일반적으로 많은 수작업 설정이 필요했던 다단계 워크플로가 자동으로 생성되어 빠른 프로토타이핑과 반복이 가능했습니다.
Back to Blog

관련 글

더 보기 »