Skip to content
Duall Master

보안 · 배포

형용사가 아닌, 구체적으로 가리킬 수 있는 보안.

아래 모든 통제는 오늘 플랫폼에 구현되어 있습니다 — 카테고리 라벨이 아닌 구체 메커니즘으로. 클라우드, 온프레미스, 하이브리드 중 선택하세요. 보안 모델은 그대로 따라갑니다.

플랫폼 팀의 마지막 검토일

Governed operations
Duall Master access control screen demonstrating governed operator workflows

통제

여섯 계층의 통제 — 각각 구체적 메커니즘으로.

아래 항목은 출시되어 실행 중인 플랫폼에서 검증 가능합니다. 컴플라이언스 검토를 위해 배포 팀이 기저 코드 경로, 마이그레이션, 감사 쿼리를 함께 살펴볼 수 있습니다.

신원 + 인증

운영자가 본인을 증명하는 방법

회전하는 리프레시 토큰의 JWT

짧은 액세스 토큰, 긴 리프레시 토큰. 리프레시 회전이 재사용을 감지합니다 — 도난된 토큰이 회전 후 재사용되면 가족 전체가 무효화되고 세션이 종료됩니다.

2단계 테넌트 로그인

로그인은 회사 코드가 먼저, 그 다음이 자격증명입니다. 한 테넌트에서 유출된 이메일 + 비밀번호로 회사 식별자 없이 다른 테넌트를 추정할 수 없습니다.

7일 오프라인 유예

리프레시 토큰은 만료 후 7일까지 수용되어 단말기가 네트워크 복구 시 깨끗하게 재동기화되며 오프라인 출입 결정을 잃지 않습니다.

비밀번호 정책 1회 적용

auth 서비스의 단일 상수로 최소 길이를 강제 — 모든 비밀번호 설정 진입점(로그인, 재설정, 관리자 생성)이 같은 규칙을 공유합니다.

HIGH 위험 동작 PIN 재인증

AI 어시스턴트 HIGH 위험 도구(자격증명 회수, 사용자 비활성화)는 확인 실행 전 PIN 재인증 모달을 렌더링합니다 — 운영자 세션만으로는 부족합니다.

TOTP 2FA — 스키마 준비, 적용 진행 중

사용자 모델이 TOTP 시크릿 / 백업 코드 필드를 가지고 운영자 UI에 토글이 노출되어 있습니다. 종단 간 적용(등록, 챌린지, 백업 코드)은 파일럿 검증 후 테넌트별로 진행 중입니다.

권한 + 멀티테넌시

폭발 반경을 작게 유지하는 방법

명시적 테넌트 스코핑

테넌트 데이터에 닿는 모든 쿼리는 매개변수화된 WHERE tenant_id = $N을 가집니다. 문자열 휴리스틱이 격리 버그를 숨겼기 때문에 SQL 재작성 래퍼를 제거했습니다 — 명시가 마법보다 낫습니다.

RBAC + 플러그인 게이팅

권한은 요청별 확인. 플러그인 게이트 모듈(Visitor, Parking, VMS, Attendance)은 기본 꺼짐 — 테넌트가 권한을 부여받아야 라우트가 등록됩니다.

서비스 측 리소스 검증

교차 테넌트 조회는 ValidateResourceAccess를 거치므로, 쿼리 경로가 필터를 빠뜨려도 URL의 위조 ID가 테넌트 경계를 넘을 수 없습니다.

AI 어시스턴트가 사용자 JWT 전달

AI 서비스는 절대 쓰기 자격증명을 보유하지 않습니다. 모든 액션 도구 호출은 로그인한 운영자를 대신하며, RBAC는 어시스턴트가 아닌 다운스트림 서비스가 시행합니다.

감사 + 포렌식

무엇이 기록되고 얼마나 남는가

불변 감사 로그

TimescaleDB 하이퍼테이블. 애플리케이션 사용자는 INSERT와 SELECT만 — UPDATE 없음, DELETE 없음. 이력을 편집해 흔적을 덮을 수 없습니다.

2년 보관, 30일 후 압축

시간 분할 + 압축 정책. 오래된 청크에 핫 스토리지 비용을 지불하지 않고 장기 포렌식을 조회 가능 상태로 유지합니다.

배치, 디커플드 작성기

서비스가 감사 항목을 NATS JetStream에 발행하고, 독립 audit-svc가 소비하여 배치 INSERT 합니다. 활동 폭주가 감사 기록 대기로 요청 처리를 멈출 수 없습니다.

모든 CRUD + auth 이벤트

로그인, 리프레시, 비밀번호 변경, 서비스 전반의 모든 CREATE/UPDATE/DELETE. 시스템 관리자는 /api/v1/audit/, 테넌트 범위 운영자는 /api/v1/audit/tenant/에서 조회.

데이터 거주성 + AI 경계

AI가 끼었을 때 데이터가 가는 곳

프로덕션 클라우드 LLM 시작 거부

ai-asst-svc는 APP_ENV=production이고 활성 LLM 프로필이 DeploymentCloud일 때 부팅을 명시적으로 거부합니다. 잘못 설정된 테넌트가 조용히 데이터를 제3자 클라우드로 라우팅할 수 없습니다.

거주성 제약 테넌트용 자체 Ollama

데이터 거주성 정책 사이트는 LLM 공급자를 배포 내부에서 실행되는 Ollama로 전환할 수 있습니다 — 페이로드가 경계를 떠나지 않습니다.

LLM 회로 차단기

공급자 실패가 연쇄되지 않습니다 — 어시스턴트가 깨끗하게 강등되어 운영 워크플로를 멈추지 않고 "LLM 사용 불가"를 표시합니다.

네트워크 + 전송

트래픽이 플랫폼에 들어오는 방법

부팅 시 CORS 화이트리스트 강제

CORS_ALLOWED_ORIGINS는 프로덕션에서 필수이며, AllowCredentials가 true인 상태에서 값이 "*"이면 미들웨어가 시작을 거부합니다. "나중에 고치자" 와일드카드가 실수로 프로덕션에 들어가지 않습니다.

신뢰 프록시 인식 클라이언트 IP

TRUSTED_PROXIES는 CIDR 허용 목록. X-Forwarded-For는 직전 피어가 목록에 있을 때만 인정 — 클라이언트 제어 IP 헤더를 신뢰한 이전 미들웨어를 대체.

AES 암호화 RTSP 자격증명

카메라 RTSP 자격증명은 32바이트 VMS_CREDENTIAL_KEY로 저장 시 AES 암호화되며, 스트림 설정 시 필요할 때 복호화됩니다.

월 디스플레이 키오스크 토큰

공개 월 디스플레이 표면은 스코프 제한, 읽기 전용 키오스크 토큰을 사용 — 할당된 대시보드는 렌더링하지만 상태를 변경할 수 없으며, 토큰은 개별 회수 가능.

운영 안전

프로덕션 업그레이드가 안전한 방법

NOT VALID 제약 정책

기존 테이블에 대한 모든 ADD CONSTRAINT는 NOT VALID로 작성됩니다 — 새 행에 적용되고 기존 행은 나중에 비대화식으로 검증. 기존 행에 대한 즉시 검증이 마이그레이션을 의존하는 모든 서비스를 차단했던 2026-05-16 사건에서 배움.

문서화된 복구 런북

프로덕션 사고가 작성된 런북(docs/runbooks/*)이 되어 다음 대응자가 로그 고고학에서 복구를 재발명하지 않도록 합니다.

순차적 페어 마이그레이션

모든 스키마 변경은 번호가 매겨진 .up.sql + .down.sql 쌍이며 엄격한 순서로 적용됩니다. 라이브 ALTER 없음, 손으로 편집한 테이블 없음.

신뢰 토폴로지

모든 모듈이 같은 거버넌스 계층을 상속.

Tap any layer to see how it helps a buyer evaluate the platform.

Step 01

Signal

Doors, visitors, cameras, intercoms, parking, and devices generate live operational signals instead of isolated alerts.

01Signal

Doors, visitors, cameras, intercoms, parking, and devices generate live operational signals instead of isolated alerts.

02Context

Each signal becomes useful because operator, person, role, site, zone, policy, and related module records are shown together.

03Action

Teams approve, deny, review, escalate, annotate, or link evidence without leaving the command surface.

04Audit

Every decision keeps the who, what, when, why, and related evidence needed for handoff, reporting, and investigation.

호스팅 선택은 신뢰 모델을 바꾸지 않습니다 — 같은 통제가 클라우드, 온프레미스, 하이브리드 배포에 적용됩니다.

배포

세 가지 배포 모델, 같은 보안 모델.

클라우드

관리형 출시

빠른 시작, 관리형 플랫폼 운영. 기본 LLM은 Anthropic Claude. 엄격한 거주성 규칙이 없는 그린필드 배포와 멀티사이트 포트폴리오에 최적.

온프레미스

사이트 통제

경계 내 전체 스택 — TimescaleDB, NATS, EMQX, MediaMTX, MinIO, Ollama. 텔레메트리 없음, 아웃바운드 LLM 호출 없음. 정부 / 헬스케어 / 거주성 제약 사이트에 필수.

하이브리드

단계적 현대화

컨트롤 플레인은 클라우드, 민감 워크로드는 온프레미스. 테넌트별 LLM 프로필로 한 포트폴리오가 클라우드와 자체 호스팅 추론을 한 운영자 UI에서 혼합.

가장 잘 맞는 곳

신뢰가 구매 결정의 일부인 사이트.

보안 검토가 "감사 쿼리, 마이그레이션 정책, LLM 데이터 경로를 보여 달라"로 시작한다면 — 올바른 곳에 있습니다.

헬스케어 및 정부 사이트
산업 및 공장 시설
보안 민감 구역이 있는 상업, 주거, 캠퍼스 환경

다음 단계

보안 검토를 배포 팀에 가져오세요

기능 체크리스트가 아니라 구체 코드 경로, 마이그레이션, 감사 쿼리, LLM 데이터 경계를 함께 살펴봅니다.