
isms-builder v1.37.0
자체 호스팅 정보 보안 관리 시스템 — ISO 27001, NIS2, GDPR/DSGVO, BSI IT-Grundschutz

ISMS Builder
자체 호스팅 정보 보안 관리 시스템 — 오픈 소스, 클라우드 불필요
📖 Wiki — Docker-Image-Nutzung & Umgebungsvariablen, Architektur & Module, FAQ, Mitwirken (DE/EN)
⚠️ 보안 경고: 악성코드를 배포하는 가짜 저장소 및 복사본
ISMS Builder에는 패키지화된 "릴리스", 설치 프로그램 또는 다운로드 가능한 ZIP 파일이 없습니다 — 유일한 합법적 소스는 이 저장소이며, GitHub에서 일반 소스 코드로 직접 클론하거나 다운로드해야 합니다. 이 프로젝트를 사칭하는 악성 저장소가 최소 하나 이상 존재함을 알고 있습니다 (가짜 README, 스크린샷으로 위장한 ZIP으로 연결되는 가짜 "다운로드" 버튼, Windows 악성코드 로더 —
.cmd→.exe→ Lua-DLL 페이로드 체인 포함). 이 저장소 이외의 어떤 곳에서도 "isms_builder" ZIP/설치 프로그램/exe를 다운로드하거나 실행하지 마십시오. 이 프로젝트를 사칭하는 의심스러운 저장소나 사이트를 발견하면 issue 또는 discussion을 열어 알려주시기 바랍니다.
상태: 활발한 개발 중 — 아직 완성된 제품이 아님. 핵심 모듈은 기능하며 사용 중이지만, 일부 기능은 불완전하며 플랫폼은 여전히 성장 중입니다. 기여, 피드백 및 실제 환경 테스트를 환영합니다 — 이것이 바로 오픈소스로 공개된 이유입니다.
🛡️ 관련 프로젝트: NIS2 Quick-Check — 무료 독립형 NIS2 자가 점검 도구(10개 도메인 × 5개 질문, EU 27개 회원국 전체, EU 공식 언어 24개). 브라우저에서 완전히 실행되며, 백엔드 없음, 설치 불필요. ISMS Builder의 일부가 아니며 사용에 필수적이지 않습니다 — 빠른 첫 방향 확인을 위한 보조 도구일 뿐입니다.
ISMS Builder란 무엇인가?
ISMS Builder는 정보 보안 관리 시스템(ISMS)을 관리하기 위한 자체 호스팅 웹 플랫폼입니다. 정책 작성부터 감사 증거까지 전체 규정 준수 수명주기를 다룹니다 — ISO 27001:2022, NIS2, GDPR/DSGVO, BSI IT-Grundschutz 및 기타 프레임워크를 위한 도구입니다.
클라우드 없음. SaaS 요금 없음. 귀하의 데이터는 귀하의 서버에 유지됩니다.
5자리 숫자의 벤더 계약 없이 실제 ISMS 도구가 필요한 중소기업, IT 팀 및 컨설턴트를 위해 설계되었습니다.
의도된 용도 및 범위
이 프로젝트는 한 명의 ISMS 실무자를 위한 작업 도구로 시작하여 성장했습니다. 이 작업이 다른 사람들에게 유용할 수 있기 때문에 오픈소스로 공개된 것입니다 — 상업 제품을 위장한 것이 아닙니다. 이를 명확히 하는 것은 귀하의 상황에 적합한지 판단하는 데 도움이 됩니다.
이 도구가 만들어진 목적. 관리 시스템의 문서(정책, 위험, 자산, 통제, 증거)를 작성하고 유지 관리하는 소규모 ISMS 팀 — 종종 한 명, 때로는 소수 — 을 위한 것입니다. 계정이 필요한 사람의 수는 적게 유지될 것으로 예상됩니다. 계정 없이도 많은 대상을 도달할 수 있습니다: 정책 승인은 토큰 기반 링크로 전송되므로 수신자는 로그인하지 않고 문서를 읽고 확인할 수 있으며, 어떤 사용자 목록에도 나타나지 않습니다.
이 도구가 귀하에게 기대하는 것. ISMS Builder는 자체 호스팅이며, 그에 따른 모든 것은 귀하의 몫입니다: 배포, TLS, 강화, 백업, 업데이트, 접근 제어 및 귀하가 저장하는 모든 것에 대한 데이터 보호 의무. 이 프로젝트는 합리적인 기본 구성을 제공하지만 관리형 서비스는 아닙니다.
이 도구가 아닌 것. 호스팅된 SaaS 제공, 상업적 지원 계약 또는 서비스 수준 계약이 없습니다. 멀티 테넌트 호스팅 제품이 아닙니다. 어떤 표준에 대해 귀하를 인증하지 않으며 법적 조언도 아닙니다 — 작업을 구성하고 증거를 확보하는 데 도움을 주지만, 평가는 귀하와 귀하의 감사인의 몫입니다.
유지 관리 주체. 정규직 업무와 병행하는 한 명의 개인입니다. 이슈와 토론은 일반적으로 며칠 내에 읽고 답변합니다. 보안 보고는 우선 처리됩니다. 기능 요청은 환영하며 실제로 로드맵을 형성하지만, 제한된 저녁 시간을 두고 경쟁합니다. 귀하의 조직이 고정된 일정이나 보장된 응답에 의존한다면 상업적 벤더를 추천하는 것이 정직한 조언입니다 — 이는 프로젝트를 피해야 하는 이유가 아니라 현실적으로 계획해야 하는 이유일 뿐입니다.
스크린샷
| 로그인 | 대시보드 |
|---|---|
![]() | ![]() |
| 적용 범위 명세서(SoA) | 위험 관리 |
|---|---|
![]() | ![]() |
| GDPR 및 데이터 보호 | 자산 관리 |
|---|---|
![]() | ![]() |
| 지침 및 문서 | 보고서 |
|---|---|
![]() | ![]() |
npm start를 실행하고https://localhost:3000을 열어 로컬에서 전체 데모 데이터셋을 탐색하십시오.
기능 개요
| 모듈 | 설명 | 표준 |
|---|---|---|
| 정책 관리 | 템플릿 CRUD, 버전 관리, 수명주기(초안 → 검토 → 승인 → 보관), 공간 계층 구조, 첨부 파일 | ISO 27001 §5 |
| 적용 범위 명세서(SoA) | 8개 프레임워크에 걸친 313개 통제, 인라인 편집, 격차 분석, 교차 매핑 | ISO 27001 A / BSI / NIS2 / EUCS / EUAI / ISO 9001 / CRA |
| 위험 관리 | 위험 레지스터, 처리 계획, 감사자 역할 | ISO 27001 §6.1 |
| 보안 목표 | 진행률 표시줄이 있는 KPI 추적, 캘린더 통합 | ISO 27001 §6.2 |
| GDPR 및 개인정보 보호 | VVT, AV 계약, DSFA, TOMs, DSAR 대기열, 72시간 타이머, 이메일 알림이 포함된 삭제 로그 | DSGVO 제13–35조 |
| 자산 관리 | 자산 레지스터, 편집 가능한 자산 유형, 의존성 상속이 있는 보호 목표(CIA + 무결성), 분류 수준, EoL 추적 | ISO 27001 A.5.9–5.12 |
| BCM / BCP | 비즈니스 영향 분석, 연속성 계획, 훈련 | ISO 27001 A.5.29–5.30 / NIS2 |
| 교육 기록 | 교육 카탈로그, 완료 추적, 인증서 업로드 | ISO 27001 A.6.3 |
| 공급업체 관리 | 벤더 레지스터, 감사 일정, 위험 평가 | ISO 27001 A.5.19–5.22 |
| 법률 및 계약 | 계약, NDA, 개인정보 처리방침, 만료 캘린더 | |
| 사고 수신함 | CISO 수신함 + 공개 신고 양식(로그인 불필요) | NIS2 / BSI |
| 거버넌스 | 경영 검토, 조치 추적 | ISO 27001 §9.3 |
| 보고서 | 규정 준수 매트릭스(통제 × 엔티티), 격차 보고서, 검토 주기, CSV 내보내기 | |
| 감사 발견 사항 | 발견 사항 레지스터(현황→목표→위험→권고), 조치 계획, 심각도/상태 추적, FIND-YYYY-NNNN 참조 | ISO 27001 §9.2 |
| 추적성 | 모든 레코드는 SoA 통제 및 정책 문서와 연결 — 양방향 | |
| 의미 기반 검색 | Ollama(nomic-embed-text)를 통한 로컬 AI 검색, 키워드 대체 기능 포함 | |
| 다중 엔티티 | 기업 구조 트리, 통제 및 정책에 대한 엔티티별 적용 가능성 | |
| 다국어 UI 및 데모 데이터 | 🇩🇪 DE / 🇬🇧 EN / 🇫🇷 FR / 🇳🇱 NL 전체 UI 및 데모 콘텐츠, 관리자가 사용 가능 언어 제어 |
⚠ 중요: ISO 통제는 관리자가 수동으로 설치해야 합니다
ISO 27001:2022, ISO 9000:2015 및 ISO 9001:2015는 국제 표준화 기구(ISO, © ISO)가 발행한 저작권 보호 표준입니다. 통제 정의(제목, 설명, 요구사항 텍스트)는 이 소프트웨어에 포함되어 있지 않으며 유효한 ISO 라이선스 없이 재배포해서는 안 됩니다.
실무적으로 의미하는 바: ISO 27001, ISO 9000 및 ISO 9001용 SoA 모듈은 통제 콘텐츠 없이 제공됩니다. 관리자는 이러한 프레임워크를 사용하기 전에 통제를 수동으로 가져와야 합니다:
- iso.org 또는 공인된 국가 기관에서 표준의 라이선스 사본을 확보합니다
- 통제 정의가 포함된 JSON 파일을 준비합니다(형식은
scripts/import-iso-controls.sh에 문서화됨) - 가져오기 스크립트를 실행합니다: ```bash
bash scripts/import-iso-controls.sh path/to/iso-controls.json
- ISMS Builder 서버를 재시작합니다
기본 제공 프레임워크(ISO 라이선스 불필요): BSI IT-Grundschutz, EU NIS2, EUCS, EU AI Act 및 CRA는 공개된 EU 법률 및 독일 연방 정부 간행물을 기반으로 하며 완전히 사전 설치되어 있습니다.
ISO 프레임워크 모듈을 해당 표준에 대한 유효한 라이선스 없이 운영하는 것은 운영자의 전적인 책임입니다. ISMS Builder 프로젝트와 기여자들은 ISO 보호 콘텐츠의 무허가 사용에 대해 어떠한 책임도 지지 않습니다.
빠른 시작```bash
git clone https://github.com/coolstartnow/isms-builder.git cd isms-builder npm install cp .env.example .env # set JWT_SECRET to a long random string npm start # http://localhost:3000
**`[email protected]`** / **`adminpass`**로 로그인하세요. 첫 로그인 시 **데모 데이터 언어**(🇩🇪 DE / 🇬🇧 EN / 🇫🇷 FR / 🇳🇱 NL)를 선택하거나 빈 시스템으로 시작하라는 메시지가 표시됩니다. 로그인 직후 관리자 비밀번호를 변경하세요.
HTTPS를 사용한 프로덕션 환경의 경우:```bash
# .env
JWT_SECRET=your-very-long-random-secret
STORAGE_BACKEND=json
SSL_CERT_FILE=/etc/ssl/certs/your.crt
SSL_KEY_FILE=/etc/ssl/private/your.key
데모 데이터로 평가한 후 실제 운영을 시작할 예정인가요? 처음부터 새로 설치하는 대신 대화형 프로덕션 준비 도구를 실행하세요. 이 도구는 데모/테스트 콘텐츠를 모듈별로(또는 한 번에 모두) 삭제하므로, 이미 입력한 실제 데이터(예: 위험, 자산)를 다시 입력할 필요가 없습니다:```bash bash stop.sh node scripts/prepare-production.js bash start.sh
항상 변경 전에 백업(`data.bak.<timestamp>/`, `data/` 디렉터리 옆에 생성)을 만들며, `STORAGE_BACKEND`는 절대 건드리지 않습니다. 이는 데모 인스턴스용으로 설계된 앱 내 "데모 리셋" 관리자 작업과 달리, 해당 작업은 역사적 이유로 여전히 `sqlite`로 전환됩니다([Issue #42](https://github.com/coolstartnow/isms-builder/issues/42) 참조).
---
## Docker
모든 릴리스는 GitHub Container Registry의 GitHub Package로 게시되며, `linux/amd64` 및 `linux/arm64`용으로 제공됩니다. 태그는 `:latest` 및 `:<version>`(예: `:1.37.5.2`)입니다:```bash
docker compose up -d
# App runs at http://localhost:3000
Or without Compose (data/ must be a bind mount — data is never baked into the image):```bash
docker run -d --name isms-builder -p 3000:3000
-e JWT_SECRET="$(openssl rand -hex 32)"
-v "$PWD/data:/app/data"
ghcr.io/coolstartnow/isms-builder:latest
이것이 기본 설정으로, 데이터를 `./data`에 일반 JSON 파일로 저장합니다 — 데이터베이스 컨테이너가 전혀 필요 없습니다.
소규모 팀에 권장되는 설정이며, 위의 두 명령어가 사용하는 방식이기도 합니다.
**JSON 대신 PostgreSQL(또는 MariaDB) 사용하기.** 이미지는 이 기능을 기본 지원하지만 —
위의 JSON 설정과 달리 — 두 번째 컨테이너(실제 데이터베이스)와 앱이 데이터베이스에 연결하는 방법을 알려주는
몇 가지 환경 변수가 필요합니다. 이미지만 가져왔다면(`docker pull ghcr.io/coolstartnow/isms-builder`)
이 저장소를 클론한 적이 없을 경우, 해당 변수 이름은 기본적으로 어디에도 표시되지 않습니다 — 해당 변수들이 문서화된
`docker-compose.yml`과 `.env.example`은 이 Git 저장소의 파일이지 이미지의 일부가 아니기 때문입니다.
이 섹션은 그 정보가 저장소 전용 비밀로 남지 않도록 하기 위해 존재합니다.
`isms-builder` 이미지 자체에는 데이터베이스 서버가 절대 포함되지 않습니다 — `postgres:17`(또는 `mariadb:11`)은
Docker Hub에서 가져온 완전히 범용적인 빈 데이터베이스 엔진으로, 이 프로젝트의 테이블에 대해 전혀 알지 못합니다.
그 테이블들(위험, 자산, SoA 통제 항목 등)은 애플리케이션이 시작되어 빈 데이터베이스를 발견하는 순간
자동으로 생성됩니다 — 수동 SQL 가져오기나 별도로 실행해야 하는 마이그레이션 단계가 없습니다.
전체 메커니즘을 알고 싶다면 아래의 "데이터베이스 스키마는 어떻게 생성되나요?"를 참조하세요.
두 개의 컨테이너, 하나의 공유 Docker 네트워크, 그리고 앱에 데이터베이스 위치를 알려주면 됩니다:```bash
# 1) An isolated network so the two containers can reach each other by name
docker network create isms-net
# 2) The database — empty until the app first connects and creates its tables
docker run -d --name isms-postgres --network isms-net \
-e POSTGRES_DB=isms_builder \
-e POSTGRES_USER=isms \
-e POSTGRES_PASSWORD="$(openssl rand -hex 16)" \
-v isms-postgres-data:/var/lib/postgresql/data \
postgres:17-alpine
# 3) The app, pointed at that database by container name (isms-postgres) via
# Docker's built-in DNS on the shared network — no host/port juggling needed
docker run -d --name isms-builder --network isms-net -p 3000:3000 \
-e JWT_SECRET="$(openssl rand -hex 32)" \
-e STORAGE_BACKEND=postgres \
-e DB_HOST=isms-postgres \
-e DB_PORT=5432 \
-e DB_USER=isms \
-e DB_PASS="<same password as POSTGRES_PASSWORD above>" \
-e DB_NAME=isms_builder \
ghcr.io/coolstartnow/isms-builder:latest
각 변수의 의미:
| 변수 | 용도 |
|---|---|
STORAGE_BACKEND | PostgreSQL에는 postgres(또는 pg), MariaDB/MySQL에는 mariadb를 사용합니다. 기본 JSON 설정을 사용하려면 설정하지 않은 상태(또는 json)로 두세요. |
DB_HOST | 데이터베이스 컨테이너의 호스트 이름입니다. 공유 Docker 네트워크에서는 컨테이너의 --name과 동일하며, Docker가 자동으로 해석합니다. |
DB_PORT | PostgreSQL은 5432, MariaDB는 3306입니다. |
DB_USER / DB_PASS / DB_NAME | 데이터베이스 컨테이너에 설정한 값(위의 POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB 또는 MariaDB의 해당 변수)과 일치해야 합니다. |
MariaDB를 사용하려면 postgres:17-alpine을 mariadb:11로 바꾸고, 2단계에서 MARIADB_DATABASE /
MARIADB_USER / MARIADB_PASSWORD 변수를 사용하며, 3단계에서 STORAGE_BACKEND=mariadb /
DB_PORT=3306을 사용하세요. 이 프로젝트가 인식하는 모든 환경 변수의 전체 목록(여기서 다루지 않은 SSL, 리버스 프록시 신뢰, SMTP, 2FA 등 포함)은 이 저장소의 .env.example에 상호 참조되어 있습니다.
Compose 사용자는 추가 작업 없이 이 기능을 누릴 수 있습니다. docker-compose.yml에는 이미 mariadb 및 postgres 서비스 프로필이 포함되어 있으며(기본적으로 주석 처리되어 있고, 해당 환경 변수 설명도 함께 제공됨), docker compose --profile postgres up -d를 실행하면 두 컨테이너가 자동으로 연결되어 시작됩니다. 수동 네트워킹이나 비밀번호 복사·붙여넣기가 필요 없습니다.
데이터베이스 스키마는 어떻게 생성되나요? postgres:17 이미지도 mariadb:11 이미지도 이 프로젝트에 대해 알지 못합니다. 이들은 Docker Hub에서 바로 가져온 범용의 빈 데이터베이스 엔진일 뿐입니다. 가져올 SQL 덤프 파일도, 수동으로 실행할 별도의 마이그레이션 명령도 없습니다. 대신 isms-builder 컨테이너가 시작되어 빈 데이터베이스에 연결되는 순간, 데이터베이스 이미지가 아닌 자체 애플리케이션 코드가 필요한 모든 테이블을 즉석에서 생성합니다. server/db/knexDatabase.js를 참조하세요. 테이블 정의 목록이 있으며, 각각 hasTable()로 확인하고 없으면 createTable()로 생성한 후, 앱이 HTTP 요청을 받기 시작하기 전에 모두 완료됩니다. 따라서 이는 멱등적입니다. 첫 시작 시 완전한 스키마를 처음부터 구축하고, 동일한 데이터베이스에 대한 이후의 모든 재시작은 테이블이 이미 존재하므로 조용히 아무 작업도 하지 않습니다. 이는 SQLite, MariaDB 11, PostgreSQL 17에서 실시간 검증된 것과 동일한 수정되지 않은 메커니즘입니다(#70 참조).
대신 소스에서 빌드하려면 docker-compose.yml에서 build: 블록의 주석을 해제하고 docker compose up -d --build를 실행하세요.
이미지에는 서명된 빌드 출처 증명(attestation)이 포함되어 있습니다.```bash gh attestation verify oci://ghcr.io/coolstartnow/isms-builder:latest --owner coolstartnow
---
## 요구 사항
- **Node.js 18+** (테스트 완료: 18, 20, 22)
- npm 9+
- (선택 사항) Docker + Docker Compose
- (선택 사항) 로컬 AI 의미 검색용 [Ollama](https://ollama.ai)
---
## 구성 (`.env`)
| 변수 | 기본값 | 설명 |
|---|---|---|
| `JWT_SECRET` | *(필수)* | JWT 서명용 비밀 키 — 32자 이상의 임의 문자 사용 |
| `PORT` | `3000` | HTTP/HTTPS 수신 포트 |
| `STORAGE_BACKEND` | `json` | `json`(개발/데모) 또는 `sqlite`(프로덕션) |
| `SSL_CERT_FILE` | — | TLS 인증서 경로 → HTTPS 활성화 |
| `SSL_KEY_FILE` | — | TLS 개인 키 경로 |
| `DATA_DIR` | `./data` | 데이터 디렉터리 재정의(Docker 볼륨) |
| `SMTP_HOST` | — | 이메일 알림용 SMTP 서버 |
| `SMTP_PORT` | `587` | SMTP 포트 |
| `SMTP_USER` | — | SMTP 사용자 이름 |
| `SMTP_PASS` | — | SMTP 비밀번호 |
| `SMTP_FROM` | — | 알림 발신자 주소 |
---
## 아키텍처```
server/
index.js — Express app setup, router mounts
auth.js — JWT auth, RBAC ranks, session
routes/ — 17 Express route modules (one per domain)
db/ — Data stores (jsonStore / sqliteStore / orgSettingsStore / …)
ai/ — Semantic search (embedder, embeddingStore, lexicalSearch)
reports.js — Report generation logic
ui/
index.html — SPA shell (Atlassian Dark Theme)
app.js — All render functions, ~6000 lines vanilla JS
style.css — CSS variables, dark theme
data/ — JSON files / SQLite DB (gitignored)
docs/
ISMS-build-documentation.md — Full architecture reference
architecture/ — C4 diagrams, data model, OpenAPI 3.0.3 spec
tests/ — Jest + Supertest (176 tests, --runInBand)
- 인증: JWT 쿠키(
sm_session), bcrypt 비밀번호, TOTP 2FA(조직 전체에 적용 가능) - RBAC:
reader→editor/dept_head→contentowner/auditor→admin - 영속성: JSON 파일(기본/데모) 또는
better-sqlite3을 통한 SQLite - AI: 선택적 로컬 Ollama(nomic-embed-text); 키워드 검색은 항상 대체 수단으로 사용 가능
- 감사 로그: 모든 생성/수정/삭제/로그인 작업이 기록되며, 필터링 및 내보내기 가능
C4 다이어그램, 전체 데이터 모델, OpenAPI 3.0.3 사양(80개 이상의 엔드포인트)은 docs/architecture/를 참조하세요.
테스트 실행
참고:
tests/아래의 테스트 스위트는 작성자의 개인 개발 테스트이며 투명성을 위해 프로젝트와 함께 제공됩니다. 이는 애플리케이션 자체의 일부가 아니며 앱 실행에 필요하지 않습니다. 테스트는 내부 API 동작을 다루며 격리된 테스트 환경에만 존재하는 하드코딩된 테스트 자격 증명을 사용합니다 — 이는 프로덕션 또는 데모 데이터와 아무런 관련이 없습니다.```bash npm test # runs all 423 tests npm run preflight # exactly what CI gates on (tests + pinning + audit) npm test -- --verbose # with test names
테스트는 격리된 임시 디렉터리를 사용합니다 — 운영 데이터는 건드리지 않습니다.
---
## 기여
기여는 언제나 환영합니다! [CONTRIBUTING.md](https://github.com/coolstartnow/isms-builder/blob/main/CONTRIBUTING.md)에서 다음 내용을 확인하세요:
- 개발 환경 설정 (첫 테스트 실행까지 5분)
- 코드 스타일 및 규칙
- 좋은 이슈 또는 PR을 여는 방법
**보안 문제를 발견하셨나요?** 공개 이슈를 열지 말고
[비공개 취약점 보고](https://github.com/coolstartnow/isms-builder/security/advisories/new)를 이용해 주세요.
[SECURITY.md](https://github.com/coolstartnow/isms-builder/blob/main/SECURITY.md)에는 범위, 안전한 기여 범위, 현실적인 기대치가 설명되어 있습니다.
**첫 기여에 좋은 이슈**는 이슈 트래커에서 [`good first issue`](https://github.com/coolstartnow/isms-builder/issues?q=label%3A%22good+first+issue%22) 라벨로 표시되어 있습니다.
---
## 로드맵
| 상태 | 기능 |
|---|---|
| ✅ 완료 | 의미 기반 검색 (Ollama / nomic-embed-text) |
| ✅ 완료 | SQLite 백엔드, Docker, CI/CD |
| ✅ 완료 | GDPR 삭제 로그 이메일 알림 |
| ✅ 완료 | 다국어 데모 번들 (DE / EN / FR / NL) |
| ✅ 완료 | 감사 발견 사항 모듈 및 실행 계획 (V 1.37.2.0) |
| ✅ 완료 | FR/NL 가이드 번역 + 관리자 언어 설정 (V 1.37.2.0) |
| ✅ 완료 | MariaDB/MySQL 백엔드 (`STORAGE_BACKEND=mariadb`, V 1.37.2.1) |
| ✅ 완료 | 스캐너 → 위험 초안 (Greenbone/OpenVAS XML + PDF 가져오기, V 1.37.2.0) |
| ✅ 완료 | 정책 승인 — 직원이 감사 추적과 함께 정책을 디지털로 확인 (V 1.37.2.0) |
| ✅ 완료 | 가이드 CRUD — 자체 문서 생성, 편집 및 업로드 (V 1.37.2.0) |
| ✅ 완료 | 가이드 검색 — 발췌문 포함 카테고리 간 전체 텍스트 검색 (V 1.37.2.0) |
| ✅ 완료 | 자산 보호 목표 — CIA + 무결성(진위성) (1–4), 종속성 및 BSI 최대 원칙 상속 (V 1.37.2.0) |
| ✅ 완료 | NIS2 제21조 거버넌스 체크리스트 (30개 항목) 및 제23조 보고 기한 자동 알림 (V 1.37.2.0) |
| ✅ 완료 | PostgreSQL 백엔드 (`STORAGE_BACKEND=pg`) — MariaDB와 동일한 Knex 저장소 계층, 실제 PostgreSQL 17 인스턴스 및 전체 `docker compose` 경로로 검증됨 (V 1.37.5) |
| ✅ 완료 | ownCloud / Nextcloud 통합 — 승인된 정책이 WebDAV를 통해 PDF로 자동 게시, 선택적 즐겨찾기/공개 링크 표시, 실제 NextcloudPi 인스턴스에서 실시간 검증됨 (#66, V 1.37.5.1) |
| ✅ 완료 | 릴리스마다 GitHub Container Registry에 Docker 이미지 게시 (`ghcr.io/coolstartnow/isms-builder`, `linux/amd64` + `linux/arm64`, 서명된 빌드 출처) — @bucherfa 기여 (#71, V 1.40.0). 유지보수 비용 시험: 예상보다 관리 부담이 크면 다시 제거할 수 있음. |
| 🔜 다음 | AI 정책 어시스턴트 — Ollama가 제목 + 프레임워크에서 정책 내용 초안 작성 |
| 🔜 다음 | 예약 보고서 — 주간/월간 규정 준수 보고서 이메일 전송 |
| 🔜 다음 | 감사 로그 이상 탐지 (LLM 배치) |
| 🚀 이후 | 정량적 위험 점수 산정 (€ 가치, FAIR 기반) |
| 🚀 이후 | 감사자 협업 포털 — 감사자를 위한 외부 읽기 전용 액세스 |
| 🚀 이후 | 정책 격차 분석 (LLM) |
| 🏁 V 2.x | 구성 가능한 가이드 카테고리 — 관리자가 사용자 정의 카테고리 정의 (예: 워크플로, 조직 문서) |
---
## 저자 소개
**Claude Hecker**는 35년 이상 IT 분야에서 일해 왔습니다. 약 15년간 CIO로 근무한 후
CISO 및 데이터 보호 책임자(DSO/DSB) 역할로 전환했습니다. 경력 동안
유럽의 주요 기업을 위해 전사적 IT 인프라와 광역 네트워크 연결
(VPN, MPLS)을 설계하고 구현했습니다 — 여러 사이트와 관할 구역에 걸친 안정적이고 안전한 운영을 책임졌습니다.
ISMS Builder는 바로 그 경험에서 탄생했습니다: 실제 감사와 실제 규제 압력 속에서
규정을 준수하는 ISMS를 구축하고 유지하는 일. 이 도구는 실무자가 실제로
필요로 하는 것을 반영합니다 — 제품 관리자가 필요하다고 생각하는 것이 아니라요.
**왜 오픈 소스인가?**
중소기업은 다섯 자릿수 라이선스 비용 없이 제대로 된 ISMS 플랫폼에 접근할 자격이 있습니다.
어떤 도구를 선택하든 온보딩 노력은 실제로 필요합니다 — 하지만 그 비용에 벤더
종속이나 데이터가 자체 인프라를 벗어나는 것이 더해져서는 안 됩니다. 이 프로젝트는 소프트웨어 자유와
규정 준수 데이터가 사용자 자신의 것이라는 원칙을 지지합니다.
---
## 표준 참조 고지
이 소프트웨어는 상호 운용성 및 규정 준수 관리 목적으로만
게시된 표준의 통제 식별자와 짧은 제목을 참조합니다.
- **ISO/IEC 27001, ISO 9000, ISO 9001**은 국제표준화기구(ISO)가 발행한
표준입니다. 이러한 표준의 통제 정의는 **이 소프트웨어 배포판에 포함되어 있지 않습니다** —
ISO 저작권은 통제 텍스트의 재배포를 허용하지 않습니다. 사용자는
자체 JSON 파일을 제공해야 합니다 (위 섹션 및 `scripts/import-iso-controls.sh` 참조).
표준은 [ISO](https://www.iso.org/) 또는 공인된 국가 배포 기관에서
구해야 합니다.
- **BSI IT-Grundschutz** 자료는 독일 연방 정보보안청(BSI)이 발행하며
[bsi.bund.de](https://www.bsi.bund.de)에서 무료로 이용할 수 있습니다.
- **NIS2, CRA, EUCS, EU AI Act**는 EU 법률이며
[eur-lex.europa.eu](https://eur-lex.europa.eu)를 통해 공개적으로 이용할 수 있습니다.
---
## 라이선스
Copyright (C) 2026 Claude Hecker
이 프로그램은 [GNU Affero General Public License v3.0](https://github.com/coolstartnow/isms-builder/blob/main/LICENSE)에 따라
라이선스된 자유 소프트웨어입니다.
수정된 버전을 네트워크 서비스로 실행하는 경우 해당 서비스의 사용자에게
전체 소스 코드를 제공해야 합니다 (AGPL §13).
이 프로젝트에는 MIT, BSD-2-Clause 및 Apache-2.0 라이선스의 타사 구성 요소가 포함되어 있습니다.
전체 저작자 표시 및 라이선스 텍스트는 [THIRD-PARTY-LICENSES.md](https://github.com/coolstartnow/isms-builder/blob/main/THIRD-PARTY-LICENSES.md)를 참조하세요.






