제1조 (총칙)
이 서비스를 운영하는 사업자(이하 “회사”)는 나라장터 투찰 도우미(이하 “서비스”)를 운영하면서 이용자의 개인정보를 처리합니다. 회사는 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 관련 고충을 신속하게 처리하기 위하여 이 개인정보처리방침을 수립·공개합니다.
회사의 상호·대표자·주소·연락처·사업자등록번호는 확정되는 대로 모든 화면 아래쪽에 함께 표시합니다. 확정되기 전에 임의의 값을 적지 않기 위해 지금은 표시하지 않습니다.
이 방침은 서비스 화면 전체에 적용됩니다. 로그인 없이 볼 수 있는 화면(첫 페이지, 로그인 화면, 이용약관·개인정보처리방침)에서는 개인정보를 수집하지 않습니다. 개인정보가 실제로 오가는 지점은 로그인 화면과 로그인 이후 화면입니다.
제2조 (수집하는 개인정보 항목과 수집 방법)
1. 계정 정보
서비스에는 이용자가 스스로 가입하는 절차가 없습니다. 계정은 운영자가 관리자 화면 또는 명령줄 도구로 직접 만들며, 그때 다음 값이 저장됩니다.
| 저장되는 값 | 내용 |
|---|---|
| 아이디 | 로그인에 쓰는 식별자. 중복될 수 없습니다 |
| 비밀번호 | 원문은 저장하지 않습니다. 계정마다 만든 무작위 소금값과 scrypt 해시만 저장합니다(제8조) |
| 표시 이름 | 화면에 작성자로 표시되는 이름. 계정을 만들 때 아이디와 같은 값이 자동으로 들어가며, 별도의 실명을 받는 칸은 없습니다 |
| 소속 업체 | 이용자가 속한 업체. 열람 범위를 가르는 기준입니다 |
| 권한과 상태 | 관리자 여부, 사용 가능 여부 |
| 생성 시각 | 계정이 만들어진 시각 |
서비스는 이름·주민등록번호·생년월일·성별·전화번호·이메일 주소·주소를 이용자에게서 받는 입력 칸을 두고 있지 않습니다. 다만 운영자가 아이디나 표시 이름에 실명을 쓰는 경우, 그 값은 사실상 개인을 알아볼 수 있는 정보가 되므로 회사는 이를 개인정보로 보아 이 방침에 따라 보호합니다.
이는 이용자에게 무엇을 입력받는가에 대한 설명입니다. 서비스가 보관하는 정보 전체를 뜻하지 않습니다 — 조달청이 공개한 개찰 결과에는 기업의 대표자 성명·주소·전화번호가 실려 오고 서비스는 그것을 저장합니다. 아래 4항에 따로 적었으니 반드시 함께 읽어 주십시오.
2. 서비스를 이용하는 과정에서 쌓이는 정보
이용자가 공고를 입력하고 추천을 계산하면 다음이 기록되며, 각 기록에는 작성한 사람의 계정 번호와 소속 업체 번호가 함께 남습니다.
- 입력한 공고 정보(공고번호·차수·개찰일·발주기관명·업무구분·기초금액· 예가범위·낙찰하한율·A값)
- 계산된 추천 결과(예측 분포, 추천 투찰금액, 계산 근거)
- 이용자가 입력한 개찰 결과(실제 사정률·예정가격·1순위 투찰금액·낙찰업체명, 그리고 우리 투찰금액과 낙찰 여부)
관리자는 업체의 과거 개찰 이력 파일(엑셀·CSV)을 관리자 화면에서 올릴 수 있으며, 그 내용도 위와 같은 방식으로 저장됩니다.
이 가운데 우리 투찰금액·낙찰 여부는 영업비밀로 취급되어, 업체 계정 안에만 남고 업체 사이에 공유되는 통계 표에는 옮겨지지 않습니다.
3. 자동으로 수집되는 정보
| 항목 | 실제 동작 |
|---|---|
| 접속 IP 주소 | 데이터베이스에 저장하지 않습니다. 어느 표에도 IP를 담는 칸이 없습니다 |
| 로그인 실패 기록 | 무차별 대입을 막기 위해 아이디별 실패 횟수를 서버 프로세스의 메모리에만 둡니다. 파일이나 데이터베이스에 쓰지 않으며, 서버를 다시 시작하면 사라집니다. 로그인에 성공하면 그 아이디의 기록은 즉시 지워집니다(제8조) |
| 접속 기록 | 서버 프로그램이 남기는 기본 기록이 서버 컴퓨터의 로그 파일에 쌓입니다. 서비스 프로그램은 자기 컴퓨터(127.0.0.1)에만 열려 있고 외부 접속은 같은 컴퓨터에서 도는 터널 프로그램을 거치므로, 이 기록에 남는 상대방 주소는 방문자의 주소가 아니라 그 터널 프로그램의 주소입니다 |
| 광고·분석용 추적 | 없습니다. 외부 분석 도구, 광고 스크립트, 외부에서 불러오는 파일이 한 개도 없습니다 |
4. 이용자가 아닌 사람의 정보 — 조달청 개찰 결과에 실려 들어오는 항목
서비스는 조달청이 공개하는 개찰 결과를 내려받아 통계에 씁니다. 이때 조달청이 응답한 원본을 그대로 보관하므로, 그 응답에 들어 있는 다음 항목이 함께 저장됩니다. 이것은 이용자가 입력하는 정보가 아니라 공개된 조달 정보에 실려 들어오는 정보입니다.
| 누구의 정보 | 저장되는 항목 |
|---|---|
| 낙찰기업 | 상호 · 대표자 성명 · 주소 · 전화번호 · 사업자등록번호 |
| 투찰기업 | 상호 · 대표자 성명 · 사업자등록번호 |
법인의 상호와 대표자 정보는 통상 개인정보로 보지 않으나, 개인사업자의 상호·대표자 성명·주소·전화번호는 개인을 알아볼 수 있는 정보에 해당합니다. 회사는 이 항목들을 개인정보로 보아 제8조의 보호 조치를 똑같이 적용합니다.
이 가운데 화면에 표시되는 것은 낙찰업체명뿐이며, 대표자 성명· 주소·전화번호는 저장만 되고 어느 화면에도 나타나지 않습니다. 다른 업체에 공개되는 개찰 정보 응답도 미리 정한 항목만 내보내도록 제한되어 있어, 위 항목들은 그 응답에 실리지 않습니다.
이 정보의 정보주체는 서비스 이용자가 아니므로, 열람·정정·삭제를 원하시면 제7조의 방법으로 회사에 요청해 주십시오.
제3조 (개인정보의 이용 목적)
회사는 수집한 개인정보를 다음 목적으로만 이용합니다.
- 로그인과 본인 확인 — 아이디·비밀번호로 이용자를 확인하고 로그인 상태를 유지합니다.
- 업체별 열람 범위 관리 — 소속 업체를 기준으로, 다른 업체의 공고·추천·개찰 결과가 보이지 않도록 조회 범위를 제한합니다.
- 서비스 제공 — 이용자가 입력한 공고로 추천을 계산하고, 그 이력을 이용자 본인과 같은 업체 구성원에게 보여 줍니다.
- 작성자 표시 — 목록 화면에 각 추천을 누가 만들었는지 표시합니다.
- 부정 이용 방지 — 로그인 실패가 반복되는 아이디의 시도를 지연하거나 일정 시간 막습니다.
회사는 위 목적 외의 용도로 개인정보를 이용하지 않으며, 목적이 바뀔 경우 제11조에 따라 미리 알리고 필요한 동의를 받습니다.
제4조 (보유·이용 기간과 파기)
현재 서비스에는 개인정보를 자동으로 삭제하는 기능이 없습니다. 사실대로 적습니다.
1. 보유 기간
계정과 그 계정이 만든 기록은 이용계약이 유지되는 동안 보유합니다. 이용자 또는 소속 업체가 삭제를 요청하면 제7조의 방법으로 접수해 지체 없이 파기하며, 법령에 별도의 보존 의무가 있는 경우에는 그 법령이 정한 기간을 따릅니다.
2. 지금 실제로 일어나는 일
- 관리자 화면에는 계정을 사용 중지(비활성화)하는 기능만 있습니다. 비활성화된 계정은 다음 요청부터 곧바로 로그인·조회가 막힙니다. 로그인 상태를 유지하던 쿠키가 남아 있어도 마찬가지입니다. 서버가 요청마다 계정이 아직 살아 있는지 다시 확인하기 때문입니다.
- 다만 비활성화는 삭제가 아닙니다. 계정 정보와 그 계정이 만든 기록은 데이터베이스에 그대로 남습니다.
- 실제 삭제는 운영자가 데이터베이스에서 직접 수행하는 수동 작업입니다. 화면에서 누르는 삭제 기능은 존재하지 않습니다.
3. 백업본에 남는 기간
- 서비스는 매일 새벽 3시 30분에 데이터베이스 전체를 같은 컴퓨터 안의 백업 폴더에 복사합니다.
- 이 매일 백업본은 14일이 지나면 자동으로 삭제됩니다.
- 다만 자동 삭제 대상은 매일 백업본뿐입니다. 프로그램을 크게 고치기 전에 운영자가 따로 만들어 두는 수동 백업본은 자동으로 지워지지 않고, 운영자가 지울 때까지 남습니다. 실제로 그런 사본이 보관되어 있습니다.
- 따라서 원본에서 어떤 정보를 지우더라도, 그 정보는 매일 백업본에 최대 14일간 남고, 수동 백업본이 있으면 그보다 오래 남을 수 있습니다. 삭제 요청을 처리할 때 회사는 수동 백업본까지 함께 확인합니다.
- 백업본은 외부(클라우드·외부 저장소)로 보내지 않고 서비스가 도는 컴퓨터에만 보관합니다.
4. 서버 로그
접속 기록 등 서버 로그 파일은 용량 기준으로 회전하며 최대 7세대까지 보관되고 그 이후 폐기됩니다.
제5조 (개인정보의 제3자 제공)
회사는 이용자의 개인정보를 제3자에게 제공하지 않습니다.
이는 방침상의 약속일 뿐 아니라 코드에서 확인되는 사실입니다. 서비스가 외부로 내보내는 통신은 조달청 공공데이터 OpenAPI 호출뿐이며(제6조), 그 요청에는 계정 정보가 전혀 실리지 않습니다. 그 밖에 이메일 발송, 외부 분석 도구 전송, 광고 네트워크 연동 같은 외부 전송 경로가 없습니다.
법령에 따라 수사기관 등이 적법한 절차로 요구하는 경우에만 관련 법령이 정한 범위에서 제공할 수 있습니다.
제6조 (개인정보 처리업무의 위탁)
회사는 개인정보 처리업무를 외부에 위탁하고 있지 않습니다.
조달청 OpenAPI 호출은 위탁이 아닙니다
서비스는 조달청이 공개한 공공데이터 OpenAPI를 호출해 공고 정보와 개찰 결과를 가져옵니다. 이는 회사가 밖으로 나가서 공개 자료를 조회해 오는 요청이지, 개인정보를 남에게 맡겨 처리하게 하는 위탁이 아닙니다. 조달청에 보내는 값은 서비스 인증키, 응답 형식, 페이지 번호, 한 번에 받을 건수, 조회 구분, 업무구분코드, 개찰일 범위, 공고번호가 전부입니다. 이용자의 아이디·이름· 접속 주소·소속 업체는 들어가지 않으므로, 조달청은 누가 조회했는지 알 수 없고 이용자의 개인정보를 받지도 않습니다.
통신 경로에 관한 사실
서비스 프로그램은 서버 컴퓨터에서 직접 인터넷에 노출되지 않고, 외부 사업자가 제공하는 터널 서비스를 거쳐 접속됩니다. 현재 이 서비스는 Cloudflare와 Tailscale 두 가지 경로로 외부에 열려 있는데, 암호화(TLS)가 어디에서 풀리는지가 두 경로에서 다릅니다.
| 경로 | 암호화가 풀리는 지점 |
|---|---|
| Cloudflare | Cloudflare의 접속 지점에서 풀립니다. 따라서 로그인 화면에 입력한 아이디·비밀번호를 포함한 통신이 Cloudflare의 네트워크를 평문으로 지나갑니다. |
| Tailscale | 서비스가 도는 컴퓨터에서 풀립니다. 인증서와 그 비밀키를 이 컴퓨터가 직접 보유하므로, Tailscale은 암호화된 상태로 전달만 하고 아이디·비밀번호를 볼 수 없습니다. |
회사는 이 차이를 감추지 않고 적습니다. 두 경로의 성격이 다르므로 법적 평가도 달라질 수 있습니다.
이들 통신 경로 사업자를 「개인정보 보호법」상 수탁자로 기재해야 하는지, 국외 이전에 해당해 별도의 고지가 필요한지는 법률 검토 결과에 따라 이 방침에 반영하고, 반영할 때 제11조의 절차로 공지합니다.
제7조 (정보주체의 권리와 행사 방법)
이용자는 언제든지 개인정보의 열람·정정·삭제·처리 정지를 요구할 수 있습니다.
지금의 실제 사정
현재 서비스 화면에는 이용자가 스스로 자기 정보를 보거나 고치거나 지우는 기능이 없습니다. 비밀번호를 바꾸는 화면도, 표시 이름을 바꾸는 화면도 없습니다. 계정 정보의 생성·변경·중지는 모두 운영자만 할 수 있습니다.
따라서 권리 행사는 회사에 요청해 주셔야 하며, 회사가 접수해 처리합니다. 다만 공개된 접수 창구(전용 이메일 주소 또는 문의 양식)는 아직 마련되지 않았습니다. 준비되는 대로 이 조와 제10조에 적어 이 화면에 표시하겠습니다. 그때까지는 계정을 발급해 준 운영자에게 직접 요청해 주십시오. 서비스의 모든 계정은 운영자가 직접 만들어 전달하므로, 이용자에게는 이미 연락이 닿는 경로가 있습니다.
회사는 「개인정보 보호법」과 그 시행령이 정한 기간(열람 요구의 경우 요구를 받은 날부터 10일) 안에 처리 결과를 알려 드립니다. 정정·삭제 요구가 있을 때에는 처리가 끝날 때까지 해당 개인정보를 이용하거나 제공하지 않습니다.
제8조 (개인정보의 안전성 확보 조치)
회사는 다음 조치를 실제로 적용하고 있습니다. 아래 목록은 코드에서 확인된 것만 적었습니다.
1. 비밀번호 보호
- 비밀번호 원문을 저장하지 않습니다. 계정마다 16바이트 무작위 소금값을 만들어 scrypt 해시 함수로 변환한 값만 저장합니다.
- 비밀번호를 맞춰 보는 비교는 시간 차이로 정보가 새지 않는 방식으로 수행합니다.
- 존재하지 않는 아이디로 로그인해도 같은 계산 비용을 치르게 만들어, 응답 속도로 그 아이디가 있는지 없는지 알아낼 수 없게 했습니다.
2. 로그인 보호
- 같은 아이디로 로그인 실패가 반복되면 지연 시간이 점점 늘어나고, 일정 횟수를 넘기면 일정 시간 동안 로그인 시도 자체를 막습니다. 로그인에 성공하면 그 기록은 즉시 지워집니다.
- 이 제한은 접속 주소가 아니라 아이디를 기준으로 동작합니다. 서비스가 외부 터널을 거쳐 접속되므로 서버가 보는 접속 주소는 방문자의 주소가 아니고, 방문자가 스스로 채워 보낼 수 있는 값은 신뢰하지 않기 때문입니다. 접속 주소를 신뢰할 수 있는 경로가 마련되면 그때 주소별 구분을 함께 적용할 수 있도록 설정 항목을 두었으나, 현재 설정에서는 꺼져 있습니다.
- 로그인 실패 메시지는 아이디가 틀렸는지 비밀번호가 틀렸는지 구분하지 않습니다.
3. 접근 권한 관리 (업체 분리)
- 조회 범위를 소속 업체 기준으로 제한합니다. 관리자만 전체를 볼 수 있고, 소속이 없는 일반 이용자는 자기가 만든 기록만 볼 수 있습니다.
- 다른 업체의 기록에 접근하면 “권한 없음”이 아니라 “없음”으로 응답합니다. “권한이 없다”고 답하면 그 기록이 존재한다는 사실 자체가 새어 나가기 때문입니다. 조회 경로와 입력 경로 모두 같은 규칙을 씁니다.
- 우리 투찰금액·낙찰 여부는 업체 사이에 공유되는 통계 표에 옮겨지지 않도록 구조적으로 막혀 있습니다.
4. 접속 경로와 서버 설정
- 서비스 프로그램은 자기 컴퓨터(127.0.0.1)에만 열려 있습니다. 외부에서는 터널을 통해서만 닿습니다.
- 로그인 세션 쿠키에 HttpOnly(스크립트가 쿠키를 읽지 못함), Secure(암호화 연결에서만 전송), SameSite(다른 사이트에서 온 요청에는 쿠키를 붙이지 않음) 설정을 적용합니다.
- API 인증키 같은 비밀값은 코드 저장소가 아니라 별도 파일에 보관하며, 그 파일이 본인 외에 읽을 수 있는 권한으로 되어 있으면 서비스가 아예 시작되지 않도록 막아 두었습니다.
5. 백업
- 매일 데이터베이스 전체를 백업하고, 무결성 검사를 통과한 백업만 남깁니다.
- 백업본은 외부로 보내지 않고 서비스 컴퓨터 안에 두며 14일 후 삭제합니다.
6. 아직 적용하지 않은 것
과장하지 않기 위해 함께 적습니다.
- 데이터베이스 파일 자체는 암호화되어 있지 않습니다. 파일을 읽을 수 있는 사람은 내용을 볼 수 있습니다(비밀번호는 해시라 원문을 알 수 없습니다).
- CSRF 토큰을 쓰지 않습니다. 다른 사이트에서 보낸 요청에 대한 방어는 위 SameSite 쿠키 설정에만 의존합니다.
- 이용자가 스스로 비밀번호를 바꾸는 기능이 없습니다. 변경은 운영자에게 요청해야 합니다.
- 계정을 화면에서 삭제하는 기능이 없습니다. 사용 중지만 가능하며, 삭제는 운영자의 수동 작업입니다(제4조).
- 보안 인증(ISO 27001 등)을 취득하지 않았습니다. 취득하지 않은 인증은 적지 않습니다.
제9조 (쿠키의 사용)
서비스는 로그인 상태를 유지하기 위한 쿠키 한 개만 사용합니다.
| 항목 | 내용 |
|---|---|
| 이름 | session |
| 담긴 값 | 계정 번호, 발급 시각, 그리고 이 둘이 위조되지 않았음을 증명하는 서명값 |
| 보관 기간 | 30일 (발급 후 30일이 지나면 무효) |
| 설정 | HttpOnly · Secure · SameSite |
- 이 쿠키에는 비밀번호가 들어 있지 않습니다.
- 로그아웃하면 쿠키가 즉시 삭제됩니다.
- 계정이 비활성화되면 쿠키가 남아 있어도 다음 요청부터 이용할 수 없습니다.
- 광고·분석·행태정보 수집 목적의 쿠키는 사용하지 않습니다.
이용자는 웹 브라우저 설정에서 쿠키를 차단할 수 있으나, 그 경우 로그인 상태가 유지되지 않아 서비스를 이용할 수 없습니다.
제10조 (개인정보 보호책임자)
회사는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만 처리 및 피해 구제를 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.
개인정보 보호책임자 — 홍길동
보호책임자에게 바로 닿는 공개 연락처는 아직 마련되지 않았습니다. 준비되는 대로 이 자리에 표시하며, 그때까지는 제7조와 같이 계정을 발급해 준 운영자에게 요청해 주시면 보호책임자에게 전달됩니다.
그 밖에 개인정보 침해로 인한 신고나 상담이 필요하면 아래 기관에 문의할 수 있습니다.
- 개인정보분쟁조정위원회 — 1833-6972 (kopico.go.kr)
- 개인정보침해신고센터 — 국번 없이 118 (privacy.kisa.or.kr)
- 대검찰청 사이버수사과 — 국번 없이 1301 (spo.go.kr)
- 경찰청 사이버수사국 — 국번 없이 182 (police.go.kr)
제11조 (개인정보처리방침의 변경)
이 개인정보처리방침은 2026년 8월 13일부터 적용됩니다.
법령·정책 또는 서비스 내용의 변경에 따라 이 방침을 바꿀 때에는, 변경되는 내용과 시행일을 적어도 시행 7일 전부터 서비스 화면에 공지합니다. 다만 이용자의 권리에 중대한 영향을 주는 변경(수집 항목 추가, 이용 목적 변경, 제3자 제공 개시 등)은 적어도 30일 전에 공지합니다.