Mond

Release License: MIT Python React Claude Helm


๋” ๋งŽ์€ ํ™”๋ฉด ยท More previews


๐Ÿ“š ์–ด๋–ค OSS์ธ๊ฐ€์š”? ยท What is Mond?

  • ๋ฌด์—‡์„ ํ‘ธ๋Š”๊ฐ€ โ€” DevSecOps ๋„๊ตฌ๊ฐ€ ๋„ˆ๋ฌด ํฉ์–ด์ ธ ์žˆ๊ณ , ๋ฐœ๊ฒฌ์‚ฌํ•ญ์ด ๋„ˆ๋ฌด ๋งŽ๊ณ , ์˜์‚ฌ๊ฒฐ์ •์€ ๋„ˆ๋ฌด ๋А๋ฆฝ๋‹ˆ๋‹ค. Mond๋Š” AI๊ฐ€ 1์ฐจ ๋ถ„์„ํ•ด์„œ ์‚ฌ๋žŒ์ด ๊ฒฐ์ •๋งŒ ํ•˜๋ฉด ๋˜๋Š” ํ๋ฆ„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€ โ€” ํด๋ผ์šฐ๋“œ / ์Šค์บ๋„ˆ / AI provider / IdP โ€” ์–ด๋””์—๋„ ๋ฌถ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ๋กœ ๊ฐˆ์•„๋ผ์šฐ๊ณ , ํ•œ๊ตญ์–ด๊ฐ€ 1๊ธ‰ ์‹œ๋ฏผ์ž…๋‹ˆ๋‹ค.
  • ์–ด๋””๋กœ ๊ฐ€๋Š”๊ฐ€ โ€” v0.2: ์ž์‚ฐ ์ž๋™ ๋™๊ธฐํ™” ยท RAG ๊ธฐ๋ฐ˜ AI Insights ยท OPA Rego ํ‰๊ฐ€ ยท CI ํŒจํ‚ค์ง€ ยท SBOM diff ยท ์Šค์บ๋„ˆ ์ž๋™ ๋ผ์šฐํŒ… ๋“ฑ 11๊ฐœ ํ•ญ๋ชฉ ์™„๋ฃŒ. v0.3: ๋ฉ€ํ‹ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค ยท ISMS-P ์ฆ๋น™ ํŒจํ‚ค์ง€ ยท GitLab/Bitbucket ๋™๊ธฐํ™” ยท vLLM ๊ฒŒ์ดํŠธ์›จ์ด ์™„๋ฃŒ. ๋‹ค์Œ(v0.4): ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ K8s ์ž๋™ ๋™๊ธฐํ™”, AWS Auto-scaling, ์ž์› ์ „์ฒด ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ถ„๋ฆฌ.

๐Ÿ“– ์ž์„ธํ•œ ์ด์•ผ๊ธฐ๋Š” โ†’ docs/ABOUT.md ๐Ÿ› ๏ธ ์„ค์น˜ยท์šด์˜ ๊ฐ€์ด๋“œ โ†’ docs/SETUP.md

In English: a vendor-neutral, self-service DevSecOps platform that consolidates asset inventory, scanning, AI-triaged findings, IAM access requests, policy simulation, and regulation mapping into a single flow. Bring your own scanners (Trivy/Semgrep/Nuclei/...), your own AI provider (Anthropic/OpenAI/Bedrock/Ollama), your own IdP (Keycloak/Okta/Google). See docs/ABOUT.md and docs/SETUP.md.


โšก ์‹œ์ž‘ํ•˜๊ธฐ ยท Get started

๐Ÿณ Docker Compose โ€” 30์ดˆ ๋ฐ๋ชจ (๋กœ์ปฌยทํ‰๊ฐ€์šฉ)

git clone https://github.com/jland-93/mond.git && cd mond
cp .env.example .env
# (์„ ํƒ) ANTHROPIC_API_KEY๋ฅผ .env์— ๋„ฃ์œผ๋ฉด ์‹ค์ œ Claude ๋ถ„์„์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
docker compose up -d
  • ํ”„๋ก ํŠธ โ†’ http://localhost:3000
  • ๋ฐฑ์—”๋“œ docs โ†’ http://localhost:8000/docs
  • ์ฒซ ๊ฐ€์ž…์ž๊ฐ€ ์ž๋™ ADMIN. MFA(ํŒจ์Šคํ‚ค or TOTP) 1ํšŒ ๋“ฑ๋ก ํ›„ ์ง„์ž….

โ›ต Helm chart โ€” ์šด์˜ ๋ฐฐํฌ (Kubernetes)

OCI ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ž๋™ ๋ฐฐํฌ๋˜๋Š” ์ฐจํŠธ๋กœ ํ•œ ์ค„ ์„ค์น˜:

helm install mond oci://ghcr.io/jland-93/charts/mond \
  --version 0.3.1 \
  -n mond --create-namespace \
  -f charts/mond/values-prod.yaml \
  --set ingress.hosts[0].host=mond.your-corp.com \
  --set secrets.existingSecret=mond-secrets
  • ์ฐจํŠธ ์†Œ์Šค โ†’ charts/mond/ (values.yaml ยท values-prod.yaml)
  • ์ž๋™ ๋ฐฐํฌ โ†’ ํƒœ๊ทธ push ์‹œ .github/workflows/release.yml helm job
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ โ†’ ghcr.io/jland-93/mond-backend:<ver> ยท โ€ฆ-frontend:<ver> (multi-arch amd64/arm64)
  • EKS / GKE / AKS ๊ถŒ์žฅ ์„ค์ • ยท ์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ(External-Secrets) โ†’ docs/SETUP.md Part 2

๐Ÿ› ๏ธ SSO ยท MFA ยท AI provider ์ „ํ™˜ ยท ๊ด€๋ฆฌ์ž ์ดˆ๊ธฐ ์„ธํŒ… โ†’ docs/SETUP.md

๐Ÿค– GitHub Actions โ€” ํ•œ ์ค„ ํ†ตํ•ฉ

CI/CD์—์„œ push ๋˜๋Š” PR๋งˆ๋‹ค Mond ์Šค์บ”์„ ์ž๋™ ํŠธ๋ฆฌ๊ฑฐ. Security Settings์—์„œ webhook ํ† ํฐ ๋ฐœ๊ธ‰ โ†’ repo secrets์— ๋“ฑ๋ก โ†’ workflow์— ๋‹ค์Œ step ํ•œ ์ค„.

- name: Mond scan
  uses: jland-93/mond/.github/actions/mond-scan@main
  with:
    mond_host: mond.your-corp.com
    webhook_token: ${{ secrets.MOND_WEBHOOK_TOKEN }}
    asset_id: 42          # Mond UI Assets ํŽ˜์ด์ง€์—์„œ ID ํ™•์ธ
    scanner: trivy        # trivy | semgrep | nuclei

์ž๋™ ์ƒ์„ฑ๋œ YAML์€ Mond Security Settings โ†’ Personal Webhook Tokens โ†’ CI ์Šค๋‹ˆํŽซ ์ƒ์„ฑ์—์„œ๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“‹ Overview

Mond (๋…์ผ์–ด๋กœ "๋‹ฌ")์€ ์–ด๋–ค ํด๋ผ์šฐ๋“œ๋“  ์–ด๋–ค ์Šค์บ๋„ˆ๋“  ์ƒ๊ด€์—†์ด ๋™์ž‘ํ•˜๋Š”, AI ๊ธฐ๋ฐ˜ ์…€ํ”„์„œ๋น„์Šค DevSecOps ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ž์‚ฐ / ์Šค์บ” / ๋ฐœ๊ฒฌ์‚ฌํ•ญ / ์ •์ฑ…์„ ๋‹จ์ผ ๋ชจ๋ธ๋กœ ๋‹ค๋ฃจ๊ณ , Claude๋ฅผ ํ™œ์šฉํ•ด ๋ฐœ๊ฒฌ๋œ ์ด์Šˆ๋ฅผ ์ž๋™ ํŠธ๋ฆฌ์•„์ง€ ํ•˜๊ณ  ์ˆ˜์ • ๊ฐ€์ด๋“œ๊นŒ์ง€ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽฏ Why Mond?

  • ๋ฒค๋” ๋น„์ข…์† โ€” Trivy / Semgrep / Nuclei๋ฅผ ์–ด๋Œ‘ํ„ฐ๋กœ ํ†ตํ•ฉ. AWS / ํŠน์ • ํด๋ผ์šฐ๋“œ์— ๋ฌถ์ด์ง€ ์•Š์Œ.
  • AI ์…€ํ”„์„œ๋น„์Šค โ€” Claude๊ฐ€ ๋ฐœ๊ฒฌ์‚ฌํ•ญ์„ ๋ถ„์„ํ•ด severity ์žฌํ‰๊ฐ€, ์ˆ˜์ • ์ฝ”๋“œ ์ œ์•ˆ, ์ž์—ฐ์–ด ์ฟผ๋ฆฌ ์‘๋‹ต.
  • ์ฆ‰์‹œ ์‚ฌ์šฉ โ€” docker compose up ํ•œ ์ค„. ์Šค์บ๋„ˆ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด stub ๋ชจ๋“œ๋กœ UI ๋ฐ๋ชจ.
  • ๋ชจ๋“ˆ์‹ โ€” ์ƒˆ ์Šค์บ๋„ˆ๋Š” ScannerAdapter ํ•œ ํด๋ž˜์Šค๋กœ ์ถ”๊ฐ€.
  • Mond ๋‹คํฌ ํ…Œ๋งˆ โ€” ๊ฐ€๋…์„ฑ ๋†’์€ ๋‹ฌ๋น› ๋ฌด๋“œ (๋‹คํฌ ๋„ค์ด๋น„ + ๋ณด๋ผ ๊ธ€๋กœ์šฐ).

โœจ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

๋ฉ”๋‰ด ๊ธฐ๋Šฅ
Dashboard ๋ณด์•ˆ ์ ์ˆ˜, ์ž์‚ฐ/๋ฐœ๊ฒฌ ํ†ต๊ณ„, ์ตœ๊ทผ ์Šค์บ”
Assets ์ž์‚ฐ ์ธ๋ฒคํ† ๋ฆฌ (repo / image / host / URL / cloud / app)
Scans ์Šค์บ” ํŠธ๋ฆฌ๊ฑฐ + ์–ด๋Œ‘ํ„ฐ๋ณ„ ์‹คํ–‰ ์ด๋ ฅ
Findings ๋ฐœ๊ฒฌ์‚ฌํ•ญ ์กฐํšŒ/์ƒํƒœ ๋ณ€๊ฒฝ + AI ๋ถ„์„ ๋“œ๋กœ์–ด
Policies SAST / SCA / IaC / DAST / Container / Secrets / Compliance ๋ฃฐ์…‹
Policy Simulation "์ด๋ฒˆ PR์— ์ด finding์ด ๋“ค์–ด๊ฐ€๋ฉด ์–ด๋–ค ์ •์ฑ…์ด ๊นจ์งˆ๊นŒ" ๋ฏธ๋ฆฌ๋ณด๊ธฐ
AI Insights ์ž์—ฐ์–ด ์ฟผ๋ฆฌ, intent ๋ถ„๋ฅ˜, Claude ๋‹ต๋ณ€
Regulations Guide ์‚ฌ์—… ์‹œ๋‚˜๋ฆฌ์˜ค โ†’ ์ ์šฉ ๊ทœ์ œ(K-PIPAยทGDPRยทHIPAAยทPCI-DSSยทโ€ฆ) + ์‹œ์ ยท์˜๋ฌด
Reports ์ž์‚ฐ๋ณ„ SBOM(CycloneDX 1.5 ํ‘œ์ค€ โ€” components purl + vulnerabilities) + ์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๋ฆฌํฌํŠธ (JSON / Markdown)
Integrations ์Šค์บ๋„ˆ / AI / MCP (stdio+HTTP) / ์•Œ๋ฆผ ์ฑ„๋„ / GitHub Webhook ์•ˆ๋‚ด
Settings ํ—ฌ์Šค / ๋ฒ„์ „ / ํ™˜๊ฒฝ / ์–ธ์–ด

ํ•œ๊ตญ์–ด ๊ธฐ๋ณธ ยท ์˜์–ด ๋ณด์กฐ (i18n)

UI๋Š” ํ•œ๊ตญ์–ด๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ, ์šฐ์ธก ์ƒ๋‹จ ํ† ๊ธ€๋กœ ์˜์–ด๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DEFAULT_LOCALE=ko|en๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ณ , ์„ ํƒ์€ ๋ธŒ๋ผ์šฐ์ € localStorage์— ์ง€์†๋ฉ๋‹ˆ๋‹ค.

์…€ํ”„์„œ๋น„์Šค ์ž๋™ํ™”

๊ธฐ๋Šฅ ๋ฐฉ์‹
์ž๋™ ์Šค์บ” (GitHub push) POST /api/v1/webhooks/github โ†’ ๋งค์นญ ๋ ˆํฌ ์ž์‚ฐ ์ž๋™ trivy ์Šค์บ”
์•Œ๋ฆผ ๋‹ค์ฑ„๋„ ์ž„๊ณ„์น˜ ์ด์ƒ finding์„ Slack/Discord/Teams/Generic webhook์œผ๋กœ ์ž๋™ ์ „์†ก (์ฑ„๋„๋ณ„ ํ˜•์‹ ๋ณ€ํ™˜)
MCP โ€” Claude Desktop/Code stdio: python -m mcp_server. HTTP+SSE: /mcp ๋งˆ์šดํŠธ

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜

graph LR
    UI[Web UI<br/>React + Vite + Ant Design]
    API[REST API<br/>FastAPI + asyncpg]
    AI[AI Engine<br/>Anthropic Claude]
    SCAN[Scanner Adapters<br/>Trivy ยท Semgrep ยท Nuclei]
    DB[(PostgreSQL)]
    R[(Redis)]

    UI -->|/api/v1| API
    API --> DB
    API --> R
    API --> AI
    API --> SCAN

5๊ฐœ ํ•ต์‹ฌ ๋„๋ฉ”์ธ: Asset ยท Scan ยท Finding ยท Policy ยท AIInsight

  • Asset โ€” ๋ณดํ˜ธ ๋Œ€์ƒ (URI + ๋ผ๋ฒจ + ํ™˜๊ฒฝ)
  • Scan โ€” ์–ด๋Œ‘ํ„ฐ 1ํšŒ ์‹คํ–‰ ๊ฒฐ๊ณผ
  • Finding โ€” fingerprint ๊ธฐ๋ฐ˜ dedup๋œ ๋ณด์•ˆ ์ด์Šˆ
  • Policy โ€” ๋ฃฐ์…‹ + ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๋งคํ•‘
  • AIInsight โ€” Claude๊ฐ€ ๋งŒ๋“  triage / remediation / explain

๐Ÿš€ Quick Start

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Docker & Docker Compose
  • (์„ ํƒ) ANTHROPIC_API_KEY โ€” ์—†์–ด๋„ ๊ธฐ๋ณธ ๊ทœ์น™ ๋ชจ๋“œ๋กœ ๋ชจ๋“  ํ™”๋ฉด์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰

git clone https://github.com/jland-93/mond.git
cd mond
cp .env.example .env
# .env์— ANTHROPIC_API_KEY๋ฅผ ๋„ฃ์œผ๋ฉด ์‹ค์ œ Claude ๋ถ„์„์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
docker compose up -d

์ฒซ ๋ถ€ํŒ… ์‹œ ๋ฐ๋ชจ ์ž์‚ฐ 3๊ฐœ(๋ ˆํฌ / ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ / URL)์™€ ์ •์ฑ… 3๊ฐœ๊ฐ€ ์ž๋™ ์‹œ๋“œ๋ฉ๋‹ˆ๋‹ค.

์ฒซ ADMIN ๋กœ๊ทธ์ธ โ€” ๋ง‰ํž˜ ๋ฐฉ์ง€ ๊ฐ€์ด๋“œ

/login ํ™”๋ฉด์— ์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด ์ฒซ ๋กœ๊ทธ์ธํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž๋™์œผ๋กœ ADMIN์œผ๋กœ ๊ฐ€์ž…๋ฉ๋‹ˆ๋‹ค. ADMIN์€ ๊ธฐ๋ณธ MFA_REQUIRED_ROLES=admin,reviewer ์ •์ฑ…์— ๋”ฐ๋ผ ์ฆ‰์‹œ /mfa๋กœ ์ด๋™ํ•˜๋ฉฐ, ํŒจ์Šคํ‚ค ๋˜๋Š” TOTP ์ค‘ ํ•˜๋‚˜๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๋“ฑ๋ก ๊ฐ€๋Šฅ ์ˆ˜๋‹จ
http://localhost:3000 ํŒจ์Šคํ‚ค(๋ธŒ๋ผ์šฐ์ € ์ƒ์ฒด์ธ์ฆ) + TOTP ๋ชจ๋‘ ๊ฐ€๋Šฅ
์‚ฌ๋‚ด IP / HTTP ๋„๋ฉ”์ธ (์˜ˆ: http://192.168.1.10:3000) ํŒจ์Šคํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ € ์ •์ฑ…์ƒ ์ฐจ๋‹จ โ€” TOTP๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š” (Google Authenticator ยท 1Password ยท Authy)
HTTPS ์šด์˜ ๋„๋ฉ”์ธ ๋‘˜ ๋‹ค ์ •์ƒ

๋งŒ์•ฝ ์ž ๊ฒผ๋‹ค๋ฉด โ€” ์šด์˜์ž ๋ณต๊ตฌ CLI

๋น„๋ฐ€๋ฒˆํ˜ธ ๋งค๋‹ˆ์ € ๋ถ„์‹ค ๋“ฑ์œผ๋กœ ๋ชจ๋“  MFA factor์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ๋์„ ๋•Œ:

docker compose exec backend python -m scripts.admin_unlock [email protected]
# ๋˜๋Š” ํ™•์ธ ํ”„๋กฌํ”„ํŠธ ์—†์ด:
docker compose exec backend python -m scripts.admin_unlock [email protected] --yes

ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  MFA factor (ํŒจ์Šคํ‚คยทTOTPยท๋ฐฑ์—…์ฝ”๋“œ)๊ฐ€ ์‚ญ์ œ๋˜๊ณ , ๋‹ค์Œ ํ™”๋ฉด์—์„œ ์ฒซ ๋“ฑ๋ก ํ™”๋ฉด์ด ๋‹ค์‹œ ๋ณด์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐยท์ž์‚ฐยท์ •์ฑ…์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

MFA ๊ฐ•์ œ ์™„ํ™” (๊ฐœ๋ฐœ/๋ฐ๋ชจ ํ™˜๊ฒฝ)

๋ฐ๋ชจ ํ™˜๊ฒฝ์—์„œ MFA ๊ฐ•์ œ๋ฅผ ๋„๊ณ  ์‹ถ๋‹ค๋ฉด .env์—:

# ์•„๋ฌด๋„ ๊ฐ•์ œ ์•ˆ ํ•จ (์˜ต์…˜์œผ๋กœ๋งŒ)
MFA_REQUIRED_ROLES=
# ๋˜๋Š” ADMIN๋งŒ ๋นผ๊ธฐ
MFA_REQUIRED_ROLES=reviewer

์šด์˜์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ admin,reviewer ์ด์ƒ ์œ ์ง€๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ ๊ฐœ๋ฐœ (๋„์ปค ์—†์ด)

# ๋ฐฑ์—”๋“œ
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
DATABASE_URL=postgresql+asyncpg://mond:mond@localhost:5432/mond \
  uvicorn main:app --reload

# ํ”„๋ก ํŠธ์—”๋“œ
cd frontend
npm install
npm run dev

์šด์˜ ๋ฐฐํฌ โ€” Kubernetes (Helm)

ํƒœ๊ทธ๊ฐ€ ํ‘ธ์‹œ๋˜๋ฉด ghcr.io์— mond-backend/mond-frontend ์ด๋ฏธ์ง€์™€ OCI Helm ์ฐจํŠธ๊ฐ€ ์ž๋™ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

# 1) ์‹œํฌ๋ฆฟ ๋ฏธ๋ฆฌ ์ƒ์„ฑ (External-Secrets/Sealed-Secrets๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ)
kubectl create ns mond
kubectl -n mond create secret generic mond-secrets \
  --from-literal=SECRET_KEY="$(python -c 'import secrets;print(secrets.token_urlsafe(48))')" \
  --from-literal=ANTHROPIC_API_KEY="sk-ant-..." \
  --from-literal=SSO_PROVIDERS="keycloak" \
  --from-literal=SSO_KEYCLOAK_ISSUER="https://keycloak.your-corp.com/realms/mond" \
  --from-literal=SSO_KEYCLOAK_CLIENT_ID="mond" \
  --from-literal=SSO_KEYCLOAK_CLIENT_SECRET="..." \
  --from-literal=DATABASE_URL="postgresql+asyncpg://user:pwd@rds.../mond" \
  --from-literal=REDIS_URL="redis://elasticache.../0"

# 2) Helm ์„ค์น˜ (OCI ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ)
helm install mond oci://ghcr.io/jland-93/charts/mond \
  --version 0.3.1 \
  -n mond \
  -f charts/mond/values-prod.yaml \
  --set ingress.hosts[0].host=mond.your-corp.com

์ž์„ธํ•œ ์˜ต์…˜: charts/mond/values.yaml ยท charts/mond/values-prod.yaml

EKS ๊ฐ€์ด๋“œ

ํ•ญ๋ชฉ ๊ถŒ์žฅ
์ด๋ฏธ์ง€ ghcr.io/jland-93/mond-backend:<ver> ยท โ€ฆ-frontend:<ver> (multi-arch amd64/arm64)
DB / ์บ์‹œ RDS Postgres 16 + ElastiCache Redis (subchart postgresql.enabled=false)
Ingress AWS Load Balancer Controller (ingressClassName: alb + ACM)
์‹œํฌ๋ฆฟ External-Secrets Operator โ†’ AWS Secrets Manager / Parameter Store
์ปดํ“จํŠธ IRSA๋กœ serviceAccount.annotations์— IAM Role ARN ๋ถ€์—ฌ
๊ด€์ธก Prometheus ์Šคํฌ๋ ˆ์ดํ”„ โ€” backend ์ปจํ…Œ์ด๋„ˆ 8000/metrics

์šด์˜ ํ™˜๊ฒฝ(ENVIRONMENT=production)์—์„œ๋Š” ์•ฝํ•œ SECRET_KEY/DEBUG=true/AUTH_MODE=dev/SESSION_SECURE=false ์กฐํ•ฉ์„ ๋ถ€ํŒ… ๋‹จ๊ณ„์—์„œ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค (backend/app/core/config.py).


๐Ÿค– AI ๋™์ž‘ ๋ฐฉ์‹

์ž๊ธฐ ํ™˜๊ฒฝ์˜ AI API๋ฅผ ์ง์ ‘ ๋Œ์–ด๋‹ค ์”๋‹ˆ๋‹ค. ๋ชจ๋“  provider๊ฐ€ ๊ฐ™์€ ์ถ”์ƒํ™” layer๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋ฉฐ, .env์—์„œ ํ•œ ์ค„๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

Provider ENV ๋ชจ๋ธ ์˜ˆ์‹œ ํ•œ๊ตญ์—์„œ ์˜๋ฏธ
Anthropic (์ง์ ‘) AI_PROVIDER=anthropic + ANTHROPIC_API_KEY claude-haiku-4-5-20251001 ๊ธฐ๋ณธ๊ฐ’
OpenAI / Azure OpenAI AI_PROVIDER=openai + OPENAI_API_KEY (+ OPENAI_BASE_URL for Azure) gpt-4o-mini / gpt-4o GPT ๋ผ์ด์„ ์Šค๊ฐ€ ์žˆ๋Š” ์กฐ์ง
AWS Bedrock AI_PROVIDER=bedrock + IAM ์ž๊ฒฉ anthropic.claude-3-5-sonnet-20241022-v2:0 AWS ๋น„์šฉยท์ •์ฑ… ํ†ตํ•ฉ
Ollama / vLLM (๋กœ์ปฌ) AI_PROVIDER=ollama + OLLAMA_BASE_URL llama3.1:8b / llama3.1:70b ํ์‡„๋งยท๊ธˆ์œตยท๊ณต๊ณตยท๋ณ‘์› โ€” ๋ฐ์ดํ„ฐ ์™ธ๋ถ€ ์œ ์ถœ ๊ธˆ์ง€ ์กฐ์ง

ํ‚ค๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ทœ์น™ fallback์œผ๋กœ ๋ชจ๋“  UI๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต์—๋Š” ํ•ญ์ƒ {provider}:{model} ๋ผ๋ฒจ์ด ํ•จ๊ป˜ ๊ธฐ๋ก๋˜์–ด ์ถœ์ฒ˜ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

# ์˜ˆ) GPT๋ฅผ ์“ฐ๋Š” ์กฐ์ง
AI_PROVIDER=openai
OPENAI_API_KEY=sk-proj-...
OPENAI_MODEL_DEFAULT=gpt-4o-mini

# ์˜ˆ) ์‚ฌ๋‚ด ํ์‡„๋ง์—์„œ Ollama๋กœ
AI_PROVIDER=ollama
OLLAMA_BASE_URL=http://ollama.internal:11434
OLLAMA_MODEL_DEFAULT=llama3.1:8b

๐Ÿงฉ ์Šค์บ๋„ˆ ์–ด๋Œ‘ํ„ฐ

backend/app/scanners/์—์„œ ์ƒˆ ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class MyAdapter(ScannerAdapter):
    name = "my-tool"
    supported_asset_types = (AssetType.REPOSITORY.value,)

    async def scan(self, asset: Asset) -> ScanResult:
        ...
        return ScanResult(findings=[...], raw_output={...})

registry.py์— ํ•œ ์ค„ ๋“ฑ๋กํ•˜๋ฉด UI ๋ฉ”๋‰ด(Integrations) + ์Šค์บ” ํŠธ๋ฆฌ๊ฑฐ(Scans)์— ์ฆ‰์‹œ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ๋Š” stub ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋นˆ ํ™”๋ฉด์„ ๋ณด์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋™๋ด‰ ์–ด๋Œ‘ํ„ฐ:

  • Trivy โ€” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ / IaC / SBOM
  • Semgrep โ€” ์ •์  ์ฝ”๋“œ ๋ถ„์„ (SAST)
  • Nuclei โ€” ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ๋™์  ์Šค์บ” (DAST)

๐Ÿ—บ๏ธ ๋กœ๋“œ๋งต

  • 5๋„๋ฉ”์ธ + AI ํŠธ๋ฆฌ์•„์ง€ MVP
  • Trivy / Semgrep / Nuclei stub ์–ด๋Œ‘ํ„ฐ
  • ํ•œ๊ตญ์–ด/์˜์–ด i18n (ko ๊ธฐ๋ณธ ยท en ๋ณด์กฐ)
  • Regulations Guide (K-PIPA ยท ISMS-P ยท K-EFSA ยท CSAP ยท GDPR ยท HIPAA ยท PCI-DSS ยท SOC2 ยท ISO-27001 ยท COPPA ยท EU AI Act)
  • Policy Simulation (PR diff ๋ฏธ๋ฆฌ๋ณด๊ธฐ)
  • SBOM / Compliance ๋ฆฌํฌํŠธ (JSON ยท Markdown)
  • GitHub Webhook ์ž๋™ ์Šค์บ”
  • Slack / Discord / MS Teams / Generic Webhook ์•Œ๋ฆผ (์ฑ„๋„๋ณ„ ํฌ๋งท ๋ณ€ํ™˜)
  • MCP ์„œ๋ฒ„ (stdio + HTTP/SSE)
  • ๋ฉ€ํ‹ฐ์œ ์ € + RBAC + OIDC SSO (Keycloak ยท Okta ยท Google)
  • MFA โ€” ํŒจ์Šคํ‚ค(WebAuthn/FIDO2) + TOTP + ๋ฐฑ์—… ์ฝ”๋“œ
  • IAM ์…€ํ”„์„œ๋น„์Šค โ€” AWS ยท Kubernetes ยท LDAP/AD ยท GCP ยท Azure (5์ข… ์–ด๋Œ‘ํ„ฐ)
  • Helm ์ฐจํŠธ (charts/mond) + ์šด์˜์šฉ ๋ฉ€ํ‹ฐ์Šคํ…Œ์ด์ง€ Docker ์ด๋ฏธ์ง€
  • AI provider ์ถ”์ƒํ™” โ€” Anthropic ยท OpenAI ยท AWS Bedrock ยท Ollama(๋กœ์ปฌ)

v0.2 ๋กœ๋“œ๋งต โ€” ์™„๋ฃŒ (v0.2.0 ๋ฆด๋ฆฌ์Šค)

ํ•ต์‹ฌ ๊ธฐ๋Šฅ:

  • SBOM ์‹ค ์˜์กด์„ฑ ์ถ”์ถœ โ€” package.json ยท package-lock.json ยท requirements.txt ยท go.mod ยท Dockerfile 5์ข… ํŒŒ์„œ + Reports UI
  • SBOM Diff on PR โ€” pull_request ์ด๋ฒคํŠธ์— ์‹ ๊ทœ/์ œ๊ฑฐ/๋ฒ„์ „ ๋ณ€๊ฒฝ ์ถ”์ถœ + PR comment + Slack
  • AI Insights RAG โ€” Asset ยท Finding ยท Policy ยท Knowledge 4 ์†Œ์Šค ๊ฒ€์ƒ‰ + [N] ์ธ์šฉ
  • ๋น„๋™๊ธฐ ์Šค์บ” ํ (Celery) โ€” SCAN_QUEUE_ENABLED=true๋กœ enqueue, ๋ณ„๋„ worker
  • OPA Rego ์ •์ฑ… ํ‰๊ฐ€ โ€” backend Dockerfile์— OPA v1.x ๋ฒˆ๋“ค + Policy.engine="opa"๋กœ Rego ํ‰๊ฐ€
  • ์ž์‚ฐ ์ž๋™ ๋™๊ธฐํ™” โ€” GitHub org (Kubernetes / AWS Auto-scaling์€ v0.3)
  • Webhook push ์ด๋ฒคํŠธ โ†’ diff ๋ถ„์„ ํ›„ ์ ์ ˆํ•œ ์Šค์บ๋„ˆ ์„ ํƒ (semgrep ยท trivy ยท nuclei ์ž๋™ ๋ผ์šฐํŒ…)
  • CI ํ†ตํ•ฉ ํŒจํ‚ค์ง€ โ€” .github/actions/mond-scan composite action ํ•œ ์ค„ ํ†ตํ•ฉ
  • Rate limiting / abuse protection โ€” login ยท AI ยท webhook ยท github-sync (Redis ๊ธฐ๋ฐ˜)
  • AI ํ”„๋กฌํ”„ํŠธ PII redaction โ€” ์™ธ๋ถ€ LLM ํ˜ธ์ถœ ์ „ ์ด๋ฉ”์ผ/์ „ํ™”/RRN/AWSํ‚ค/ํ† ํฐ ์ž๋™ ๋งˆ์Šคํ‚น
  • GCP / Azure IAM ์–ด๋Œ‘ํ„ฐ ๊ถŒํ•œ ๋ถ€์—ฌ(grant) ์™„์„ฑ๋„ ๋ณด๊ฐ• โ€” ๋ฉฑ๋“ฑ์„ฑ + etag ์ถฉ๋Œ ์žฌ์‹œ๋„

UXยท๊ฐ€์‹œํ™” ๋ณด๊ฐ•:

  • IAM Explorer ๊ฐ€์‹œํ™” โ€” ARN/UUID/LDAP DN์„ ์‚ฌ๋žŒ์ด ์ฝ๋Š” ์ด๋ฆ„์œผ๋กœ(displayName/email/ARN tail/RDN/UUID ๋‹จ์ถ•). Source segmented ํ•„ํ„ฐ + ํ†ตํ•ฉ ๊ฒ€์ƒ‰ + Permission inline ๊ถŒํ•œ ์š”์ฒญ CTA
  • AWS IAM Identity Center ์ง€์› โ€” IdentityType.SSO_USER/SSO_GROUP ๋ถ„๋ฆฌ + ์žํ™์ƒ‰ SSO ํƒœ๊ทธ
  • Access Center ํผ ์นœํ™”ํ™” โ€” ์งˆ๋ฌธํ˜• ๋ผ๋ฒจ('์–ด๋–ค ๊ถŒํ•œ์ด ํ•„์š”ํ•œ๊ฐ€์š”?'ยท'์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์“ธ ๊ฑด๊ฐ€์š”?'ยท'์™œ ํ•„์š”ํ•œ๊ฐ€์š”?') + ์‹ค์ œ ์ธ์‹œ๋˜ํŠธ ์˜ˆ์‹œ placeholder
  • Access Review ์œ„ํ—˜๋„ ์ƒ‰๋  โ€” critical/high ํ–‰ ์ขŒ์ธก ์ƒ‰๋ , AI ๊ฒฐ์ •(verdict + risk + reason) ์นด๋“œ ํ˜•์‹
  • MyMond ๋นˆ ์ƒํƒœ ์นด๋“œ ์นœํ™”ํ™” โ€” ์‹ ๊ทœ ์ž„์ง์›์ด ์ฒซ ์ง„์ž… ์‹œ '๋‹ด๋‹น ์ž์‚ฐ์ด ์—†์Šต๋‹ˆ๋‹ค โ†’ ์ž์‚ฐ ๋ณด๊ธฐ', '์•„์ง ์š”์ฒญํ•œ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค โ†’ ๊ถŒํ•œ ์š”์ฒญ ์‹œ์ž‘' CTA
  • ์œ„ํ—˜๋„ยท์ƒํƒœ ๋ผ๋ฒจ ํ•œ๊ตญ์–ด ํ†ต์ผ โ€” risk: high โ†’ ์œ„ํ—˜๋„: ๋†’์Œ, granted โ†’ ๊ถŒํ•œ ๋ถ€์—ฌ ์™„๋ฃŒ ๋“ฑ
  • ๋ผ์šฐํŠธ๋ณ„ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฟ โ€” ์ฒซ ๋กœ๋“œ 1834KB โ†’ 684KB (63% ๊ฐ์†Œ). three.js 873KB๋Š” Moon3D hero ํ™”๋ฉด์—์„œ๋งŒ lazy ๋กœ๋“œ
  • Scans ํŽ˜์ด์ง€ ๊ฐ€์‹œํ™” โ€” ์ž์‚ฐ ID โ†’ ์ด๋ฆ„, webhook smart-router ์ž๋™ ์„ ํƒ ๊ฒฐ๊ณผ(์ด์œ ยท์นดํ…Œ๊ณ ๋ฆฌ ์นด์šดํŠธ) row expand
  • Findings drawer ๊ฐ€์‹œํ™” โ€” ๋ฐœ๊ฒฌ ์ž์‚ฐ ์นด๋“œ + AI ์ธ์‚ฌ์ดํŠธ(severity ์žฌํ‰๊ฐ€ ํ™”์‚ดํ‘œยทconfidence Progress barยทremediation references)
  • Assets owner inline edit โ€” '๋‚ด ์ž์‚ฐ์œผ๋กœ' 1ํด๋ฆญ + Popover ํŽธ์ง‘
  • Knowledge Hub ์ถœ์ฒ˜ ๋ช…๋ฃŒํ™” โ€” ๐Ÿ“– ๊ธฐ๋ณธ ์นด๋“œ / ๐Ÿค– AI ์ƒ์„ฑ / ๐Ÿ“– ์ง์ ‘ ์ž‘์„ฑ + AI ์นด๋“œ ๋ณด๋ผ ํ…Œ๋‘๋ฆฌ
  • Regulations Guide ์นด๋“œ ๊ทธ๋ฆฌ๋“œ + ์‹œ๊ฐ ์œ„๊ณ„ โ€” ์‹œ๋‚˜๋ฆฌ์˜ค ์นด๋“œ ๊ทธ๋ฆฌ๋“œ, ๊ทœ์ œ ์นด๋“œ 2์—ด(๊ด€ํ•  ์ƒ‰ยท์‹œ์ ยท์˜๋ฌดยท์ฐธ๊ณ )
  • Dashboard '๋‹ค์Œ ๋‹จ๊ณ„' ๊ฐ€์ด๋“œ ๋ฐฐ๋„ˆ โ€” admin 5๋‹จ๊ณ„ / employee 3๋‹จ๊ณ„, ์™„๋ฃŒ ์‹œ ์ž๋™ hide
  • AI Insights citation deep-link โ€” ?focus=N์œผ๋กœ ์ž์‚ฐ/finding/์ •์ฑ…์—์„œ ์ž๋™ drawer/highlight
  • Admin Policies โ€” engine ์ปฌ๋Ÿผ + ์ž„๊ณ„์น˜ ์ƒ‰ dot
  • Settings โ€” 4 KPI ์นด๋“œ(backendยทDBยทAIยทOPA) + ์Šค์บ๋„ˆ ์–ด๋Œ‘ํ„ฐ + ํ™˜๊ฒฝ
  • AI Insights '์ด์–ด์„œ ๋ฌป๊ธฐ' follow-up chip โ€” intent๋ณ„ ํ‘œ์ค€ ํ›„๋ณด + Claude suggested_actions
  • PolicySimulator โ€” engine + OPA deny ๋ฉ”์‹œ์ง€ expand + ์œ„ํ—˜๋„ ์ƒ‰
  • Admin Users โ€” MFA ๋“ฑ๋ก ์ƒํƒœ + SSO ์ถœ์ฒ˜ + ์ตœ๊ทผ ๋กœ๊ทธ์ธ ์ƒ๋Œ€ ํ‘œ๊ธฐ

v0.3 ๋กœ๋“œ๋งต โ€” ์™„๋ฃŒ (v0.3.0 ๋ฆด๋ฆฌ์Šค)

  • ์ž์‚ฐ ์ž๋™ ๋™๊ธฐํ™” ํ™•์žฅ โ€” GitLab group(include_subgroups, self-host GITLAB_API_URL) + Bitbucket Cloud workspace ์ผ๊ด„ sync. Admin โ†’ ์—ฐ๋™ ๊ด€๋ฆฌ์— ์นด๋“œ 3์ข…(GitHub/GitLab/Bitbucket). K8s namespaceยทAWS Auto-scaling์€ ํ›„์†
  • AI ๋ฉ€ํ‹ฐ ํ”„๋กœ๋ฐ”์ด๋” ๋ผ์šฐํŒ… โ€” ์˜๋„(intent)๋ณ„ model ์ž๋™ ๋ผ์šฐํŒ… (remediation/explain/deep_analysis๋Š” model_deep, ๊ทธ ์™ธ model_default)
  • SBOM CycloneDX ์ •์‹ ์ถœ๋ ฅ โ€” CycloneDX 1.5 ํ‘œ์ค€ (bomFormat: "CycloneDX", serialNumber: urn:uuid:โ€ฆ, metadata.tools, REPOSITORY ์ž์‚ฐ์€ default branch์—์„œ components[] ์ž๋™ ์ถ”์ถœ, findings โ†’ ํ‘œ์ค€ vulnerabilities[])
  • MCP HTTP ๋งˆ์šดํŠธ ์•ˆ์ •ํ™” โ€” Bearer ํ† ํฐ ๋ฏธ๋“ค์›จ์–ด(MCP_HTTP_AUTH_TOKEN), GET /integrations/mcp/health (enabled/mounted/transport/auth_required/reason/url), ๋งˆ์šดํŠธ path๋ฅผ /mcp/mcp โ†’ /mcp/๋กœ ๋‹จ์ˆœํ™”, Claude Desktop/Code config ์˜ˆ์‹œ + 7๊ฐœ tools ํ‘œ (SETUP.md)
  • ๋‹ค์ค‘ ์›Œํฌ์ŠคํŽ˜์ด์Šค/์กฐ์ง ๋ถ„๋ฆฌ (Phase 1 โ€” Asset) โ€” Workspace ๋ชจ๋ธ(slug/name/default) + Admin CRUD + Asset์— workspace_id (NULL ํ—ˆ์šฉ โ€” ๊ธฐ์กด ๋‹จ์ผ ์กฐ์ง ์šด์˜ ํ˜ธํ™˜). Assets ํŽ˜์ด์ง€์— workspace selector(ADMIN). Policy/Finding/IAM ๋“ฑ ๋‚˜๋จธ์ง€ ์ž์› ๋ถ„๋ฆฌ๋Š” v0.4 Phase 2
  • ๊ฐ์‚ฌ ๋กœ๊ทธ ๊ฒ€์ƒ‰ UI โ€” Admin โ†’ ๊ฐ์‚ฌ ๋กœ๊ทธ์—์„œ ๊ธฐ๊ฐ„/actor/event/request_id ํ•„ํ„ฐ + ์‹œ๊ณ„์—ด timeline
  • ํ•œ๊ตญ ๊ทœ์ œ ์ธ์ฆ ์‹ฌ์‚ฌ ํŒจํ‚ค์ง€ โ€” GET /admin/audit-package/isms-p?format=markdown ISMS-P ํ•ต์‹ฌ ํ†ต์ œ 10๊ฐœ(์ •์ฑ…ยท์ž์‚ฐยท์œ„ํ—˜ยท์ ‘๊ทผยทํŠน์ˆ˜๊ณ„์ •ยท์ ‘๊ทผํ†ต์ œยท๊ฐ์‚ฌ๋กœ๊ทธยท์ทจ์•ฝ์ ยท์‚ฌ๊ณ ๋Œ€์‘ยทprod ์ž์‚ฐ)์— Mond ์‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™ ๋งคํ•‘. Reports ํŽ˜์ด์ง€์— ADMIN ์ „์šฉ ์นด๋“œ. ์ „์ฒด 80๊ฐœ ํ†ต์ œ๋Š” v0.4
  • ์•Œ๋ฆผ ๋ผ์šฐํŒ… ๋‹ค์ฑ„๋„ โ€” Slack ์™ธ Discord + MS Teams webhook ์ถ”๊ฐ€ (severity ์ƒ‰์ƒ ์ฑ„๋„๋ณ„ ๋ณ€ํ™˜)
  • ์˜จํ”„๋ ˆ๋ฏธ์Šค LLM ๊ฒŒ์ดํŠธ์›จ์ด + ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์  โ€” vLLM provider (OpenAI-ํ˜ธํ™˜ base_url) + ai_usage_logs ํ…Œ์ด๋ธ” ์ž๋™ ๊ธฐ๋ก + GET /admin/ai-providers/usage (provider/tier/intent/์ผ๋ณ„ ์‹œ๊ณ„์—ด) + Admin ์—ฐ๋™ ๊ด€๋ฆฌ์— AI ์‚ฌ์šฉ๋Ÿ‰ ์นด๋“œ
  • PR Bot โ€” AI ๋ถ„์„ PR comment โ€” push ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ PR์— ์ž๋™ ์ฝ”๋ฉ˜ํŠธ + AI triage 1-liner

๐Ÿงช Known Limitations

v0.1.0 ์‹œ์ ์˜ ํ•œ๊ณ„์™€ v0.2์—์„œ ํ•ด์†Œ๋œ ํ•ญ๋ชฉ์„ ํ•จ๊ป˜ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

  • SBOM โ€” v0.1: CycloneDX-lite stub โ†’ v0.2: 5์ข… ecosystem ์‹ค ํŒŒ์„œ + Reports UI + PR diff โ†’ v0.3: ํ‘œ์ค€ CycloneDX 1.5 (REPOSITORY ์ž์‚ฐ์€ default branch์—์„œ ์˜์กด์„ฑ ์ž๋™ ์ถ”์ถœํ•ด components[] ์ฑ„์›€, findings โ†’ ํ‘œ์ค€ vulnerabilities[])
  • ์Šค์บ๋„ˆ โ€” v0.1: ๋™๊ธฐ ์ธ๋ผ์ธ ์‹คํ–‰ โ†’ v0.2 ํ•ด์†Œ: Celery ํ ์˜ต์…˜ (SCAN_QUEUE_ENABLED)
  • AI Insights โ€” v0.1: RAG ๋ฏธ์ ์šฉ โ†’ v0.2 ํ•ด์†Œ: 4 ์†Œ์Šค RAG + inline citation. hallucination ์œ„ํ—˜ ์ธ์ง€ยท์ธ๊ฐ„ ๊ฒ€ํ†  ๊ถŒ์žฅ์€ ์œ ์ง€. AI ์ƒ์„ฑ ์นด๋“œ๋Š” ADMIN ์ „์šฉ
  • IAM ์–ด๋Œ‘ํ„ฐ โ€” v0.1: GCP/Azure ๋ณด๊ฐ• ์ค‘ โ†’ v0.2 ํ•ด์†Œ: 5์ข… ๋ชจ๋‘ ๋ฉฑ๋“ฑ์„ฑ + etag ์žฌ์‹œ๋„. capability API๋Š” ready/coming_soon/demo๋ฅผ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ
  • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ โ€” ์˜๋„์ ์œผ๋กœ ๋‚ฎ์Œ (MVP). ๊ธฐ์—ฌ ํ™˜์˜
  • ์ •์ฑ… ํ…œํ”Œ๋ฆฟ์˜ ๊ทœ์ œ ๋งคํ•‘ โ€” ์ฐธ๊ณ ์šฉ ์ถœ๋ฐœ์ ์ด๋ฉฐ ๋ฒ•์  ์ž๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค

๐Ÿค Contributing

CONTRIBUTING.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์ƒˆ ์Šค์บ๋„ˆ ์–ด๋Œ‘ํ„ฐ, AI ํ”„๋กฌํ”„ํŠธ ๊ฐœ์„ , ์ •์ฑ… ์…‹ ์ถ”๊ฐ€ PR์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“„ License

MIT โ€” LICENSE


๐Ÿงญ ๋ฌธ์„œ ํ•œ๋ˆˆ์— ยท Doc Map

๋ฌธ์„œ ์–ด๋””์„œ๋“  ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ํ•œ ๋ฒˆ์— โ€” ์ฒ˜์Œ์ด๋ผ๋ฉด Setup โ†’ Part 0 ๋ถ€ํ„ฐ.

๋ฌธ์„œ ์œ„์น˜ ๋ฌด์—‡
๐Ÿ  ๋ฉ”์ธ README (์ด ๋ฌธ์„œ) /README.md ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ยท ์Šคํฌ๋ฆฐ์ƒท ยท ๋น ๋ฅธ ์‹œ์ž‘
๐ŸŒ™ About docs/ABOUT.md ์™œ ๋งŒ๋“ค์—ˆ๋‚˜ ยท ๋ฌด์—‡์„ ํ‘ธ๋Š”๊ฐ€ ยท ๋กœ๋“œ๋งต
๐Ÿ› ๏ธ Setup docs/SETUP.md ์„ค์น˜ ยท ์šด์˜ ยท Part 0 โ€” ์‹œ๋‚˜๋ฆฌ์˜ค ์„ ํƒ
๐Ÿ—๏ธ Architecture docs/development/architecture.md ์‹œ์Šคํ…œ ๊ตฌ์กฐ ยท ๋ชจ๋“ˆ ยท ๋ฐ์ดํ„ฐ ํ๋ฆ„
๐ŸŽจ Brand Guidelines docs/assets/brand-guidelines.md ๋กœ๊ณ  ยท ์ปฌ๋Ÿฌ ยท ํƒ€์ดํฌ
๐Ÿค Contributing CONTRIBUTING.md ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ ยท PR ๊ทœ์น™
๐Ÿ” Security Policy SECURITY.md ์ทจ์•ฝ์  ์‹ ๊ณ  ์ ˆ์ฐจ
๐Ÿ“œ Code of Conduct CODE_OF_CONDUCT.md ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ทœ๋ฒ”
๐Ÿ“‹ Changelog CHANGELOG.md ๋ฒ„์ „๋ณ„ ๋ณ€๊ฒฝ ๋‚ด์—ญ
โœ… Pre-release Checklist PRE_RELEASE_CHECKLIST.md ๋ฆด๋ฆฌ์ฆˆ ์ „ ์ ๊ฒ€ ํ•ญ๋ชฉ
๐Ÿ“ฆ Helm Chart charts/mond/ values.yaml ยท values-prod.yaml
๐Ÿณ Docker Compose docker-compose.yml ๋กœ์ปฌ ๋ฐ๋ชจ์šฉ
โš™๏ธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์˜ˆ์‹œ .env.example ๋ชจ๋“  ENV ํ‚ค + ์ฃผ์„

์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„ ๋น ๋ฅธ ์ง„์ž…


๐ŸŒ™ Illuminating the path to secure DevOps