데이터 격리
- 모든 테이블에 회사 단위 행 수준 보안(RLS)이 걸려 있어 다른 회사 데이터는 조회 자체가 불가능합니다.
- 급여·채용·검진·결재처럼 민감한 테이블은 클라이언트 접근 권한을 아예 회수하고 서버 API 만 다룹니다.
- 첨부 파일은 비공개 버킷에 경로별 정책(본인·결재선·관리 권한자)으로 보호되고, 허용된 파일 형식만 저장됩니다.
- 운영팀의 고객 화면 확인(지원 모드)은 읽기 전용이며 데이터베이스 단에서 쓰기가 거부되고 전부 기록됩니다.
암호화
- 주민등록번호·계좌·임금·연락처 등 개인정보는 애플리케이션 키로 암호화해 저장하고, 화면에는 마스킹된 값을 보여 줍니다.
- 복호화는 세부 권한을 가진 사람만 서버 API 로 할 수 있고, 누가 언제 무엇을 열람했는지 기록(개인정보 열람 이력)이 남습니다.
- 전송 구간은 TLS(HSTS preload)로만 이루어지며, 데이터베이스·백업은 저장 시 암호화됩니다.
인증
- 2단계 인증(인증 앱)을 지원하며, 회사 정책으로 관리자 또는 전 구성원에게 강제할 수 있습니다. 백업 코드로 복구할 수 있습니다.
- 로그인은 네트워크·계정 단위 시도 제한, 계정 잠금, 봇 확인(Turnstile), 유출된 비밀번호 거부로 보호됩니다.
- 새 기기·네트워크 로그인, 비밀번호 변경, 2단계 인증 변경은 본인에게 메일로 알립니다.
- 활성 세션을 직접 확인하고 다른 기기를 모두 로그아웃할 수 있습니다. 비밀번호 재설정은 1시간·1회 링크로만 가능합니다.
접근 통제
- 역할(최고관리자·매니저·구성원)과 세부 권한 그룹으로 인사·급여·계약 정보 접근을 나눕니다. 매니저는 담당 조직 범위만 봅니다.
- 급여·주민번호 조회는 역할과 별도의 세부 권한이 있어야 하고, 본인 인사 정보는 스스로 고칠 수 없습니다.
- 회사 설정·권한·휴가 조정·로그인·운영자 접속·메신저 내보내기 기록을 감사 로그로 92일까지 조회하고 CSV 로 내보낼 수 있습니다.
모니터링·가용성
- 서버·클라이언트 오류는 즉시 운영팀에 통보되고, 5분 주기 업타임 점검과 공개 상태 페이지를 운영합니다.
- 로그인 실패 추이와 크리덴셜 스터핑 서명(한 IP 가 여러 계정 시도)을 운영팀이 상시 보고 IP 를 차단합니다.
- 회사 데이터는 전체 내보내기(CSV)로 언제든 가져갈 수 있고, 삭제 요청 뒤 30일 유예 후 영구 삭제됩니다.
개발 보안
- 배포 전 타입·린트·단위 테스트와 실환경 E2E(70여 스위트, 권한·개인정보 가드 포함)를 통과해야 합니다.
- 의존성은 자동 갱신(Dependabot)과 취약점 감사를 거치고, 잠금 파일·무결성 해시로 고정합니다. 빌드에는 데이터베이스 관리 키를 주지 않습니다.
- 콘텐츠 보안 정책(nonce CSP), 클릭재킹·MIME 스니핑 차단, 서버 측 요청 위조(SSRF) 차단, 레이트리밋이 기본으로 적용됩니다.
- 정기 전수 점검(권한·격리·정확성·운영·공급망)을 수행하고 결과를 기록합니다.
데이터 위치·처리
- 데이터베이스·파일 저장소는 Supabase(AWS), 애플리케이션은 Vercel 에서 운영합니다. 처리 위탁 목록은 개인정보 처리방침에 있습니다.
- AI 기능은 암호화된 개인정보를 프롬프트에 넣지 않으며, 사용량 한도와 비용을 계측합니다.
- 메신저 보존 기간을 회사가 정할 수 있고, 알림·로그는 정해진 보존 기간 뒤 자동 삭제됩니다.