Last updated 30 August 2026 · This page is our written information security programme.최종 수정 2026년 8월 30일 · 이 문서가 저희의 서면 정보보호 프로그램입니다.
A small program holding other people’s names should be able to say exactly how they are protected. This is that statement, and it is the document to hand your IT reviewer.
다른 사람의 이름을 담는 작은 프로그램이라면 그것이 어떻게 보호되는지 정확히 말할 수 있어야 합니다. 이 문서가 그 설명이며, 기관 IT 검토 담당자에게 그대로 전달하시면 됩니다.
The first control is that there is very little to protect. Names, voice parts, an optional height, and attendance marks. No identifiers, no contact details for singers, no photographs, nothing biometric, no payment information belonging to anyone but the account holder. A breach of Risers cannot expose what Risers never held.
첫 번째 통제는 보호할 것 자체가 매우 적다는 점입니다. 이름, 성부, 선택 입력인 키, 출석 표시가 전부입니다. 식별번호도, 단원 연락처도, 사진도, 생체 정보도, 계정 소유자 외의 결제 정보도 없습니다. 애초에 담지 않은 것은 유출될 수 없습니다.
Access is enforced by the database itself, not by the app. Every row of every table carries a row-level security policy tied to the signed-in account, so a request for someone else’s roster returns nothing at all — not an error the client could ignore, but zero rows. The same policies were tested against a real PostgreSQL server: a stranger sees zero documents, cannot change another account’s plan, and cannot grant themselves anything.
접근 통제는 앱이 아니라 데이터베이스 자체가 강제합니다. 모든 표의 모든 행에 로그인 계정과 연결된 row-level security 정책이 걸려 있어, 다른 사람의 명단을 요청하면 아무것도 반환되지 않습니다. 클라이언트가 무시할 수 있는 오류가 아니라 0건입니다. 같은 정책을 실제 PostgreSQL 서버에서 시험했습니다. 타인은 문서를 0건 보고, 다른 계정의 요금제를 바꿀 수 없으며, 스스로에게 어떤 권한도 부여할 수 없습니다.
The operator account that can see across accounts is a separate flag that can only be set directly in SQL by us; a database trigger refuses the change whenever it arrives from any signed-in browser session, so the privilege cannot be granted through the application at all, even by someone who already holds it.
계정 전체를 볼 수 있는 운영자 권한은 저희가 SQL에서만 설정할 수 있는 별도 표시입니다. 데이터베이스 트리거가 로그인된 브라우저 세션에서 오는 변경을 거부하므로, 이미 그 권한을 가진 사람조차 애플리케이션을 통해서는 권한을 부여할 수 없습니다.
One person operates Risers. That account uses a hardware-backed passkey or an authenticator app for multi-factor authentication on the hosting, database and payment consoles. Administrative access to production data is used only to answer a support request or to fix a fault, and we ask before looking at a choir. There are no other employees or contractors with access.
Risers는 한 사람이 운영합니다. 그 계정은 호스팅·데이터베이스·결제 콘솔에서 하드웨어 기반 패스키 또는 인증 앱을 이용한 다중 인증을 사용합니다. 운영 데이터에 대한 관리자 접근은 지원 요청에 답하거나 오류를 고칠 때에만 사용하며, 합창단 자료를 보기 전에 먼저 여쭙습니다. 접근 권한을 가진 다른 직원이나 외주 인력은 없습니다.
Attendance is deleted automatically after the period the account holder chooses — two years unless changed, and as little as six months. The deletion runs on every device and on the server copy. Account deletion is available inside the app and removes the account, the choir and the attendance history immediately; encrypted backups holding an older copy cycle out within 30 days.
출석 기록은 계정 소유자가 정한 기간이 지나면 자동 삭제됩니다. 바꾸지 않으면 2년이고, 짧게는 6개월까지 줄일 수 있습니다. 삭제는 모든 기기와 서버 사본에서 실행됩니다. 계정 삭제는 앱 안에서 가능하며 계정·합창단 자료·출석 기록을 즉시 제거합니다. 이전 사본이 남은 암호화 백업은 30일 이내에 순환 소멸합니다.
We will notify affected account holders without undue delay and within 72 hours of becoming aware, and institutions holding a written agreement within the period that agreement sets. The notice will say what happened, which information was involved, what we have done, and what you should do. We will not wait for certainty about the full extent before telling you something has happened.
인지한 때로부터 지체 없이, 72시간 이내에 해당 계정 이용자에게 알리고, 서면 계약을 맺은 기관에는 계약이 정한 기한 안에 통지합니다. 통지에는 무슨 일이 있었는지, 어떤 정보가 관련되었는지, 저희가 무엇을 했는지, 이용자가 무엇을 하셔야 하는지를 적습니다. 전체 범위가 확실해질 때까지 기다렸다가 알리지 않습니다.
If you find a security fault, write to ee.sinhaeng@gmail.com. We will acknowledge within three days and will not pursue anyone who reports a fault in good faith without accessing other people’s data.
보안 결함을 발견하시면 ee.sinhaeng@gmail.com로 알려 주세요. 3일 이내에 접수 확인을 드리며, 타인의 자료에 접근하지 않고 선의로 제보하신 분께는 어떠한 법적 조치도 취하지 않습니다.