mond
Health Pass
- License รขโฌโ License: MIT
- Description รขโฌโ Repository has a description
- Active repo รขโฌโ Last push 0 days ago
- Community trust รขโฌโ 10 GitHub stars
Code Warn
- fs module รขโฌโ File system access in .github/workflows/knowledge-link-check.yml
Permissions Pass
- Permissions รขโฌโ No dangerous permissions requested
No AI report is available for this listing yet.
๐ Mond โ AI-Powered Open-Source DevSecOps Platform
Mond
AI-Powered Self-Service DevSecOps Platform
AI ๊ธฐ๋ฐ ์
ํ์๋น์ค DevSecOps ํ๋ซํผ
๋ถ์์ AI๊ฐ, ๊ฒฐ์ ์ ์ฌ๋์ด.
AI does triage. You decide what matters.
์์ฐ, ์ค์บ, ๋ฐ๊ฒฌ, ์น์ธ, ๊ฐ์ฌ๊น์ง ํ ํ๋ฆ์์.
Inventory, scan, triage, approve, audit in one flow.
๋ ๋ง์ ํ๋ฉด ยท More previews
Login Hero ยท 3D ์ด์น๋ฌ ยท 3 pillars (AI Triage ยท Self-service ยท Auto-audit) |
AI ์ธ์ฌ์ดํธ ยท ์์ฐ์ด๋ก ์์ฐยท๋ฐ๊ฒฌยท์ ์ฑ
์ง์. ํค ์์ผ๋ฉด ๊ธฐ๋ณธ ๊ท์น ๋ชจ๋ |
์ง์ ํ๋ธ ยท DevSecOps ยท OWASP ยท K-PIPA ยท ISMS-P ยท PCI DSS ยท GDPR โ AI์ ๋ฐ๋ก ์ด์ด ๋ฌป๊ธฐ |
IAM ํ์ ยท AWS ยท GCP ยท Azure ยท Kubernetes ยท LDAP/AD ๋ฉํฐ ํด๋ผ์ฐ๋ ๊ถํ + ์ํ๋ |
๐ ์ด๋ค OSS์ธ๊ฐ์? ยท What is Mond?
- ๋ฌด์์ ํธ๋๊ฐ โ DevSecOps ๋๊ตฌ๊ฐ ๋๋ฌด ํฉ์ด์ ธ ์๊ณ , ๋ฐ๊ฒฌ์ฌํญ์ด ๋๋ฌด ๋ง๊ณ , ์์ฌ๊ฒฐ์ ์ ๋๋ฌด ๋๋ฆฝ๋๋ค. Mond๋ AI๊ฐ 1์ฐจ ๋ถ์ํด์ ์ฌ๋์ด ๊ฒฐ์ ๋ง ํ๋ฉด ๋๋ ํ๋ฆ์ ๋ง๋ญ๋๋ค.
- ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ โ ํด๋ผ์ฐ๋ / ์ค์บ๋ / AI provider / IdP โ ์ด๋์๋ ๋ฌถ์ด์ง ์์ต๋๋ค. ์ด๋ํฐ๋ก ๊ฐ์๋ผ์ฐ๊ณ , ํ๊ตญ์ด๊ฐ 1๊ธ ์๋ฏผ์ ๋๋ค.
- ์ด๋๋ก ๊ฐ๋๊ฐ โ ์์ฐ ์๋ ๋๊ธฐํ, RAG ๊ธฐ๋ฐ AI Insights, OPA Rego ํ๊ฐ, CI ํจํค์ง๋ก ํ์ฅํฉ๋๋ค.
๐ ์์ธํ ์ด์ผ๊ธฐ๋ โ 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.1.0 \
-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.ymlhelm 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
๐ 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-lite) + ์๋๋ฆฌ์ค๋ณ ์ปดํ๋ผ์ด์ธ์ค ๋ฆฌํฌํธ (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 ์ค์บ |
| Slack/Generic ์๋ฆผ | ์๊ณ์น ์ด์ finding์ ENV์ Webhook URL๋ก ์๋ ์ ์ก |
| 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
- ๋ฐฑ์๋ API: http://localhost:8000/docs
- ํ๋ก ํธ์๋: http://localhost:3000
์ฒซ ๋ถํ ์ ๋ฐ๋ชจ ์์ฐ 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.1.0 \
-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 / 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 ๋ก๋๋งต
- SBOM ์ค ์์กด์ฑ ์ถ์ถ (package.json ยท go.mod ยท Dockerfile ํ์ฑ)
- AI Insights RAG โ ์กฐ์ง ๋ฌธ์/์ ์ฑ ์ ๊ฒ์ํด ์๋ต ๊ทผ๊ฑฐํ
- ๋น๋๊ธฐ ์ค์บ ํ (Celery) โ ์ธ๋ผ์ธ ์คํ ๋์ฒด
- OPA Rego ์ ์ฑ ํ๊ฐ
- ์์ฐ ์๋ ๋๊ธฐํ (Kubernetes / AWS Auto-scaling / GitHub org)
- Webhook push ์ด๋ฒคํธ โ diff ๋ถ์ ํ ์ ์ ํ ์ค์บ๋ ์ ํ
- CI ํตํฉ ํจํค์ง (GitHub Actions / GitLab CI step)
- Rate limiting / abuse protection
- AI ํ๋กฌํํธ E2E ์ํธํ (๊ณ ๊ฐ ์ฝ๋ ํฌํจ ์)
- GCP / Azure IAM ์ด๋ํฐ ๊ถํ ๋ถ์ฌ(grant) ์์ฑ๋ ๋ณด๊ฐ
๐งช Known Limitations (v0.1.0)
์ ๋ขฐ์ฑ ์ธก๋ฉด์์ ์ ์งํ๊ฒ ๋ฐํ๋ก๋๋ค.
- SBOM โ ํ์ฌ CycloneDX-lite stub. ์ค ์์กด์ฑ ์ถ์ถ์ v0.2 (UI์ experimental ๋ฐฐ์ง ํ์)
- ์ค์บ๋ โ ๋๊ธฐ ์ธ๋ผ์ธ ์คํ. ๋์ฉ๋/์ฅ์๊ฐ ์ค์บ์ ํ์์์ ์ํ. ํ ๋์ ์ v0.2
- AI Insights โ provider ํธ์ถ์ ๋์ํ์ง๋ง ์๋ต์ RAG(์กฐ์ง ๋ฌธ์ ๊ฒ์)๋ ๋ฏธ์ ์ฉ โ hallucination ์ํ์ ์ธ์งํ๊ณ ์ธ๊ฐ ๊ฒํ ์ ํจ๊ป ์ฌ์ฉ ๊ถ์ฅ. AI ์์ฑ ์นด๋๋ ADMIN ์ ์ฉ
- IAM ์ด๋ํฐ โ AWS ยท K8s ยท LDAP/AD๋ ๊ถํ ๋ถ์ฌ/ํ์ ์์ฑ. GCP ยท Azure๋ ๋ณด๊ฐ ์ค (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 ํค + ์ฃผ์ |
์๋๋ฆฌ์ค๋ณ ๋น ๋ฅธ ์ง์
- ๐ณ A. ๊ฐ์ธยทํ๊ฐ โ SETUP Part 1 (Docker 30์ด)
- ๐ข B. ์ฌ๋ด ๋ฐ๋ชจ โ SETUP Part 1 + Part 4 (Dev+MFA) + Part 5
- ๐ C. ์ด์ (์คํํธ์ ) โ SETUP Part 2 (Helm) + Part 3 (Anthropic) + Part 4 (SSO+MFA) + Part 6 (์ด์)
- ๐ D. ํ์๋ง (๋๊ธฐ์ /๊ณต๊ณต/๊ธ์ต) โ Part 2-C ์ํฌ๋ฆฟ(Sealed) + Part 3 (Ollama) + Part 4 (Keycloak+MFA) + Part 6 (๋ฐฑ์ )
๐ Illuminating the path to secure DevOps
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found



