Privacy Policy
Nexa SQL (the “Software”) is a database SQL client for Windows, macOS, and Linux (a GUI plus the command-line tool nsql) distributed by SosomLab (the “Company”). This Privacy Policy explains what data the Software handles, where it is stored, what goes over the network, and how the Company handles license requests — the only case in which the Company receives personal information.
1. Summary
- The Software contains no analytics, telemetry, advertising, tracking, or crash reporting of any kind. There is no account sign-up and no automatic update check.
- The Software connects only to database servers that you specify. SQL statements, result data, and schema information travel only between your PC and that database server; the Company never receives or sees them.
- The only exception is the Extension Manager. It is off by default, and even when you turn it on it downloads lists and files from extension repositories only when you open the extensions panel or run a refresh or install (Section 4).
- Saved connection passwords are stored on your device encrypted with ChaCha20-Poly1305 (Section 3).
- Licenses are verified with an offline file and never contact a server. The Company receives your name, email address, and related data only when you email a license request code yourself (Section 5).
2. Data Stored on Your Device
The Software creates files in your user configuration folder: %APPDATA%\nexa-sql on Windows, ~/Library/Application Support/nexa-sql on macOS, and ~/.config/nexa-sql on Linux. If the NSQL_HOME environment variable is set, that folder is used instead. The GUI and the CLI (nsql) share the same folder.
| Item | Contents | Storage |
|---|---|---|
| Settings | Display, editor, grid, execution, logging, and other options (settings.conf) | Plain text |
| Connection profiles | Profile name, DBMS type, host, port, database, user name, role (profiles/) | Plain text (password excluded) |
| Connection passwords | Only when you choose to save them | Encrypted (ChaCha20-Poly1305 · Section 3) |
| Device key | 32-byte random key used to encrypt passwords (device.key) | Windows: protected with DPAPI · macOS/Linux: owner-only file (0600) |
| Connection-attempt list | Names of profiles you have tried to connect with at least once (connected.list) — used to show server status in the connection window | Plain text |
| Object-name cache | Schemas, object types, and object names of databases you connected to (meta/) — to speed up search and completion on the next launch. File names are hashes; no passwords are stored | Plain text |
| Workspace and edit history | Open tabs and project state (workspaces/), per-file undo history (undo/), snapshots of unsaved tab contents (backups/files/ · cleaned up after 7 days by default), persisted variables (vars/) | Plain text |
| DDL backup before object drop | DDL generated before you drop an object from the explorer (backups/drop/ · setting explorer.drop_backup, on by default) | Plain text |
| License file | Only if installed (license/) — license ID, licensee name/email, device ID hash, tier, validity | Plain text (Ed25519-signed) |
| Log file | Only if you set a path in log.file (empty by default = nothing written to disk) | Plain text |
When launched in folder mode (nexa-sql <folder>), some workspace state such as bookmarks is stored under .nsql/ in that folder.
The execution log and transaction log (statements sent, bind values, elapsed time, row counts) are kept in memory only while the Software runs and are not written to disk unless you specify a log file or copy/export them yourself. Logs, settings, and the transaction log are designed not to record passwords.
None of these files leave your device. You may delete any of them, and deleting the configuration folder removes all data permanently. Uninstalling the Software may not delete the configuration folder automatically.
2-1. Query Results and Your Data
The Software keeps the results of queries you run in memory in order to display them. Exporting results to files (CSV, JSON, etc.) or copying them to the clipboard happens only when you do it, and you are responsible for managing those files. Data in your database servers and query results are never sent to the Company.
3. Protection of Connection Passwords
- When you save a password in a connection profile, only the password is sealed with ChaCha20-Poly1305 and written to the profile file. The seal is bound to the profile name, so ciphertext moved from one profile to another will not open.
- The sealing key derives from
device.key. On Windows this key is protected with DPAPI (CryptProtectData, scoped to the current Windows account), so it can be unlocked only by the same Windows account; copying the folder to another PC or account will not open it. On macOS and Linux the key is kept in an owner-readable-only file (permission 0600). The Software does not integrate with the operating system keychain. - Therefore, on macOS and Linux, if the whole configuration folder is leaked, the saved passwords can be opened with the
device.keyin the same folder. This scheme protects against leaks of profile files alone; it does not protect against an attacker who has access to your user account or device. - Passwords you do not save are kept, for reconnection, only in memory during the session, encrypted with a random key, and are never written to disk.
4. Network Communication
4-1. Database Servers You Specify
The Software connects to the database servers (Oracle, SQL Server, PostgreSQL) you specify in a connection profile or on the command line, sends credentials and SQL statements, and receives results. SQLite is a local file and uses no network. While the connection window is open, the Software also attempts a TCP connection only (no login) to the host and port of profiles you have tried to connect with at least once, to show whether the server is reachable. All of these communications go to servers you specified; the Company receives none of their contents by any route.
Encryption in transit depends on the DBMS and server configuration. SQL Server uses TLS (full session or login only, via the mssql.encrypt setting); Oracle follows the Oracle Instant Client you installed and its network configuration. In the current version, PostgreSQL connections do not support TLS and are transmitted in plain text. On untrusted networks, please use a VPN, SSH tunnel, or similar.
4-2. Extension Manager (Optional · Off by Default)
The Extension Manager setting extensions.enabled is off by default, and while it is off the Software contacts no extension repository. Even when you turn it on, the Software downloads the following with the operating system’s curl only when you open the extensions panel or run a refresh or install. There is no automatic or periodic lookup.
- Official extension repository:
https://raw.githubusercontent.com/SosomLab/nexa-sql/main/extensions(hosted by GitHub) - Any separate address specified by an extension file (e.g., a GitHub Releases asset)
- Repositories you add yourself (
extensions.repositories)
These are GET requests only, reading the index (index.json) and extension files; no user data is sent. As with any web request, however, the party hosting the repository (such as GitHub) can see your IP address and the time of the request, subject to that host’s policies. Downloaded files are verified with SHA-256 before installation, and code extensions run in a sandbox (WASM).
4-3. Other Communication
Apart from the above, the Software does not communicate over the internet. There is no license check, update check, or usage reporting.
5. Personal Information Processed for License Requests
The Software can be used with all features for personal and noncommercial purposes without a license (the license feature-gate setting license.gates is off by default). Only users who want a license file go through the procedure below, and this is the only case in which the Company receives personal information.
5-1. How It Works
You create a request code in the Software (Help ▸ License) or with nsql license request, and you send it yourself by email to [email protected]. The Software sends nothing automatically.
5-2. Items Processed
| Item | Contents |
|---|---|
| Name and email address | The values you enter in the request code, and the address you send the email from |
| Device ID hash | A 20-byte value obtained by hashing the operating system’s machine identifier (Windows MachineGuid · macOS IOPlatformUUID · Linux machine-id) with SHA-256 and a domain tag. The original identifier is not included in the request code and cannot be derived from the hash |
| Request metadata | App version, operating system type, request date |
| Email contents | Anything you add in the email body (organization, intended use, etc.) |
| Paid (commercial) licenses | Information needed for the contract and payment (purchaser, organization, order details, etc.) — explained separately in that transaction |
5-3. Purposes
- Issuing and reissuing a license file bound to your PC (adding, replacing, or renewing devices)
- Keeping an issuance record (a ledger of license ID, device ID hash, licensee, and issue date) and verifying reissue requests after loss
- Responding to license-related inquiries
This information is not used for advertising or marketing and is not sold or provided to third parties, except where required by law.
5-4. Retention
The information is kept for as long as needed to issue and manage the license (the license validity period and the period for handling reissues), and is deleted without delay upon your request. Information that applicable law requires to be retained for a certain period (e.g., contract and payment records of paid transactions) is kept for that period. After deletion, verifying a reissue for that license may be difficult.
5-5. Processors and International Transfer
Because license requests arrive by email, their contents are stored on the servers of the email service provider used by the Company. The Company does not otherwise outsource processing or provide the information to third parties.
6. Third-Party Components
The Software uses no third-party analytics, advertising, or crash-reporting services. Oracle connections use the Oracle Instant Client that you install separately, whose behavior and data handling follow Oracle’s policies. The curl used by the Extension Manager is a tool included with the operating system, and third-party extensions you install are the responsibility of their authors.
7. Children
The Software is a tool for database professionals and is not directed at children. The Company does not knowingly collect personal information from children.
8. Your Rights
- All data described in Sections 2–4 resides on your device under your control, and you can delete it yourself. The Company has no access to it.
- For information you sent to the Company for a license (Section 5), you may request access, correction, deletion, or suspension of processing. Contact us below and we will act on your request without delay after verifying your identity.
9. Contact
- Email: [email protected]
10. Changes to This Policy
If this Privacy Policy changes, the revised text and its effective date will be posted on this page. Material changes — in particular, if the Software begins any new network communication or the scope of personal information processed by the Company expands — will be announced at least 7 days before they take effect.
개인정보처리방침
Nexa SQL(이하 “소프트웨어”)는 SosomLab(이하 “회사”)가 배포하는 Windows·macOS·Linux용 데이터베이스 SQL 클라이언트(GUI와 명령줄 도구 nsql)입니다. 이 개인정보처리방침은 소프트웨어가 어떤 데이터를 다루고, 어디에 저장하며, 네트워크로 무엇이 나가는지, 그리고 회사가 개인정보를 받는 유일한 경우인 라이선스 발급 요청을 어떻게 처리하는지를 설명합니다.
1. 요약
- 소프트웨어에는 분석·텔레메트리·광고·추적·크래시 보고 기능이 일절 없습니다. 계정 가입도 없고, 자동 업데이트 확인도 하지 않습니다.
- 소프트웨어가 접속하는 곳은 이용자가 직접 지정한 데이터베이스 서버뿐입니다. 질의문·결과 데이터·스키마 정보는 이용자의 PC와 그 DB 서버 사이에서만 오가며, 회사는 이를 받지도 볼 수도 없습니다.
- 유일한 예외는 확장 관리자입니다. 기본값은 꺼짐이며, 이용자가 켠 뒤 확장 패널을 열거나 새로 고침·설치를 실행할 때만 확장 저장소에서 목록과 파일을 내려받습니다(제4항).
- 저장한 연결 비밀번호는 이용자 기기에 ChaCha20-Poly1305로 암호화되어 저장됩니다(제3항).
- 라이선스는 오프라인 파일로 확인하며 서버와 통신하지 않습니다. 라이선스 발급을 원하는 이용자가 직접 이메일로 요청 코드를 보낼 때에만 회사가 이름·이메일 등을 받습니다(제5항).
2. 기기에 저장되는 데이터
소프트웨어는 사용자 설정 폴더에 파일을 만듭니다. Windows는 %APPDATA%\nexa-sql, macOS는 ~/Library/Application Support/nexa-sql, Linux는 ~/.config/nexa-sql이며, 환경 변수 NSQL_HOME을 지정하면 그 폴더를 씁니다. GUI와 CLI(nsql)는 같은 폴더를 공유합니다.
| 항목 | 내용 | 저장 방식 |
|---|---|---|
| 설정 | 화면·편집기·그리드·실행·로그 등 옵션(settings.conf) | 평문 |
| 연결 프로필 | 프로필 이름·DBMS 종류·호스트·포트·데이터베이스·사용자명·역할(profiles/) | 평문 (비밀번호 제외) |
| 연결 비밀번호 | 이용자가 “저장”을 선택한 경우에만 | 암호화 (ChaCha20-Poly1305 · 제3항) |
| 기기 키 | 비밀번호 암호화에 쓰는 32바이트 무작위 키(device.key) | Windows: DPAPI로 보호 · macOS/Linux: 소유자만 읽는 파일(0600) |
| 접속 시도 목록 | 한 번 이상 접속을 시도한 프로필 이름(connected.list) — 접속 창에서 서버 상태를 보여 주는 데 사용 | 평문 |
| 객체 이름 캐시 | 접속한 DB의 스키마·객체 종류·객체 이름(meta/) — 다음 실행 때 검색·완성을 빠르게 하기 위함. 파일 이름은 해시이며 비밀번호는 담기지 않음 | 평문 |
| 작업 환경·편집 기록 | 열린 탭·프로젝트 상태(workspaces/), 파일별 실행 취소 기록(undo/), 미저장 탭 본문 스냅숏(backups/files/ · 기본 7일 후 정리), 보존 변수(vars/) | 평문 |
| 객체 삭제 전 DDL 백업 | 탐색기에서 객체를 삭제할 때 미리 만든 DDL(backups/drop/ · 설정 explorer.drop_backup, 기본 켜짐) | 평문 |
| 라이선스 파일 | 설치한 경우에만(license/) — 라이선스 ID·이용자 이름/이메일·기기 ID 해시·등급·기한 | 평문 (Ed25519 서명) |
| 로그 파일 | 이용자가 설정 log.file에 경로를 지정한 경우에만(기본 비어 있음 = 파일로 남기지 않음) | 평문 |
폴더 모드(nexa-sql <폴더>)로 실행하면 북마크 등 일부 작업 상태는 그 폴더의 .nsql/ 아래에 저장됩니다.
실행 로그와 트랜잭션 로그(보낸 문장·바인드 값·소요 시간·행 수)는 실행 중 메모리에만 보관되며, 이용자가 로그 파일을 지정하거나 직접 복사·내보내기 하지 않는 한 디스크에 기록되지 않습니다. 로그·설정·트랜잭션 로그에는 비밀번호를 남기지 않도록 설계되어 있습니다.
이 파일들은 기기 밖으로 나가지 않습니다. 이용자는 각 파일을 직접 삭제할 수 있으며, 설정 폴더 전체를 삭제하면 모든 데이터가 영구히 제거됩니다. 소프트웨어를 제거해도 설정 폴더는 자동으로 삭제되지 않을 수 있습니다.
2-1. 질의 결과와 이용자 데이터
소프트웨어는 이용자가 실행한 질의의 결과를 화면에 표시하기 위해 메모리에 둡니다. 결과를 파일로 내보내기(CSV·JSON 등)하거나 클립보드로 복사하는 것은 이용자가 직접 실행할 때만 이뤄지며, 그 파일의 관리는 이용자의 책임입니다. DB 서버에 들어 있는 데이터와 질의 결과는 회사로 전송되지 않습니다.
3. 연결 비밀번호의 보호
- 연결 프로필에 비밀번호를 저장하면 비밀번호만 ChaCha20-Poly1305로 봉인해 프로필 파일에 기록합니다. 봉인에는 프로필 이름이 함께 묶이므로 한 프로필의 암호문을 다른 프로필로 옮겨도 열리지 않습니다.
- 봉인 키는
device.key에서 나옵니다. Windows에서는 이 키를 DPAPI(CryptProtectData· 현재 Windows 계정 범위)로 보호하므로 같은 Windows 계정에서만 풀 수 있고, 폴더를 다른 PC나 다른 계정으로 복사하면 열리지 않습니다. macOS·Linux에서는 키를 소유자만 읽을 수 있는 파일(권한 0600)로 둡니다. 운영체제 키체인과는 연동하지 않습니다. - 따라서 macOS·Linux에서는 설정 폴더 전체가 유출되면 같은 폴더의
device.key로 저장된 비밀번호를 열 수 있습니다. 이 방식은 프로필 파일만 따로 유출되는 경우를 막는 것이지, 이용자 계정이나 기기 자체에 접근한 공격자를 막지 못합니다. - 저장하지 않은 비밀번호는 재접속을 위해 실행 중 메모리 안에서만 무작위 키로 암호화해 보관하며, 디스크에 기록하지 않습니다.
4. 네트워크 통신
4-1. 이용자가 지정한 데이터베이스 서버
소프트웨어는 이용자가 연결 프로필이나 명령줄에 지정한 DB 서버(Oracle · SQL Server · PostgreSQL)에 접속해 인증 정보와 질의문을 보내고 결과를 받습니다. SQLite는 로컬 파일이므로 네트워크를 쓰지 않습니다. 또한 접속 창이 열려 있는 동안 한 번 이상 접속을 시도한 프로필의 호스트·포트에 대해 서버가 살아 있는지 TCP 연결만 시도합니다(로그인 없음). 이 통신의 상대는 모두 이용자가 지정한 서버이며, 회사는 어느 경로로도 그 내용을 받지 않습니다.
전송 구간의 암호화는 DBMS와 서버 설정에 따릅니다. SQL Server는 TLS(설정 mssql.encrypt로 전 구간 또는 로그인만), Oracle은 이용자가 설치한 Oracle Instant Client와 그 네트워크 설정을 따릅니다. 현재 판의 PostgreSQL 연결은 TLS를 지원하지 않아 평문으로 전송됩니다. 신뢰할 수 없는 네트워크에서는 VPN·SSH 터널 등을 이용하시기 바랍니다.
4-2. 확장 관리자 (선택 기능 · 기본 꺼짐)
확장 관리자는 설정 extensions.enabled가 꺼져 있는 것이 기본값이며, 꺼져 있는 동안에는 어떤 확장 저장소에도 접속하지 않습니다. 이용자가 켠 경우에도 확장 패널을 열거나 새로 고침·설치를 실행할 때만 운영체제의 curl로 다음을 내려받습니다. 자동·주기 조회는 없습니다.
- 공식 확장 저장소:
https://raw.githubusercontent.com/SosomLab/nexa-sql/main/extensions(GitHub가 호스팅) - 확장 파일이 따로 주소를 지정한 경우 그 주소(예: GitHub Releases 자산)
- 이용자가 직접 추가한 저장소(
extensions.repositories)
이 요청은 목록(index.json)과 확장 파일을 읽는 GET 요청뿐이며 이용자 데이터를 보내지 않습니다. 다만 일반적인 웹 요청과 마찬가지로 저장소를 호스팅하는 측(GitHub 등)은 이용자의 IP 주소와 요청 시각을 알 수 있으며, 이는 해당 호스팅 사업자의 정책을 따릅니다. 내려받은 파일은 SHA-256으로 검증한 뒤 설치되고, 코드 확장은 샌드박스(WASM)에서 실행됩니다.
4-3. 그 밖의 통신
위의 경우 외에 소프트웨어는 인터넷으로 통신하지 않습니다. 라이선스 확인·업데이트 확인·사용 통계 전송은 없습니다.
5. 라이선스 발급 요청 시 처리하는 개인정보
소프트웨어는 라이선스 없이도 개인·비상업 용도로 모든 기능을 쓸 수 있습니다(라이선스 기능 제한 설정 license.gates는 기본 꺼짐). 라이선스 파일을 발급받으려는 이용자만 아래 절차를 거치며, 이 경우가 회사가 개인정보를 받는 유일한 경우입니다.
5-1. 처리 방식
이용자는 소프트웨어(도움말 ▸ 라이선스) 또는 nsql license request로 요청 코드를 만들어, 이를 이용자가 직접 이메일로 [email protected]에 보냅니다. 소프트웨어가 자동으로 전송하는 것은 없습니다.
5-2. 처리 항목
| 항목 | 내용 |
|---|---|
| 이름·이메일 주소 | 이용자가 요청 코드에 입력한 값, 그리고 이메일을 보낸 주소 |
| 기기 ID 해시 | 운영체제의 기기 식별자(Windows MachineGuid · macOS IOPlatformUUID · Linux machine-id)를 도메인 태그와 함께 SHA-256으로 해시한 20바이트 값. 원래 식별자는 요청 코드에 담기지 않으며 해시로부터 역산할 수 없습니다 |
| 요청 메타데이터 | 앱 버전, 운영체제 종류, 요청 일자 |
| 이메일에 적은 내용 | 이용자가 이메일 본문에 덧붙인 내용(소속·용도 등) |
| 유료(상업) 라이선스 | 계약·대금 처리에 필요한 정보(구매자·조직명·주문 정보 등) — 해당 거래에서 별도로 안내합니다 |
5-3. 처리 목적
- 이용자의 PC에 묶인 라이선스 파일의 발급·재발급(기기 추가·교체·갱신)
- 발급 내역 관리(라이선스 ID·기기 ID 해시·이용자·발급일을 기록한 발급 대장)와 분실 시 재발급 확인
- 라이선스와 관련한 문의 응대
이 정보를 광고·마케팅에 쓰거나 제3자에게 판매·제공하지 않습니다. 다만 법령에 따라 요구되는 경우는 예외로 합니다.
5-4. 보유 기간
라이선스의 발급·관리에 필요한 기간(라이선스 유효기간과 재발급 대응 기간) 동안 보유하며, 이용자가 삭제를 요청하면 지체 없이 삭제합니다. 다만 관계 법령이 일정 기간 보존을 요구하는 정보(예: 유료 거래의 계약·대금 기록)는 그 기간 동안 보관합니다. 삭제 후에는 그 라이선스의 재발급 확인이 어려울 수 있습니다.
5-5. 처리 위탁과 국외 이전
회사는 라이선스 요청을 이메일로 받으므로, 이메일 내용은 회사가 사용하는 이메일 서비스 제공자의 서버에 저장됩니다. 그 외에 처리를 위탁하거나 제3자에게 제공하지 않습니다.
6. 제3자 구성요소
소프트웨어는 제3자 분석·광고·크래시 보고 서비스를 사용하지 않습니다. Oracle 접속에는 이용자가 따로 설치한 Oracle Instant Client를 사용하며, 이 구성요소의 동작과 데이터 처리는 Oracle의 정책을 따릅니다. 확장 관리자가 사용하는 curl은 운영체제에 포함된 도구이며, 이용자가 설치한 제3자 확장은 각 제작자의 책임입니다.
7. 아동에 관한 사항
소프트웨어는 데이터베이스 전문가용 도구로서 아동을 대상으로 하지 않습니다. 회사는 아동의 개인정보를 알면서 수집하지 않습니다.
8. 이용자의 권리
- 제2항~제4항의 데이터는 모두 이용자 기기 안에 있으며 이용자가 직접 통제하고 삭제할 수 있습니다. 회사는 이에 접근하지 않습니다.
- 라이선스 발급을 위해 회사에 보낸 정보(제5항)에 대해서는 열람·정정·삭제·처리 정지를 요청할 수 있습니다. 아래 연락처로 요청하시면 본인 확인 후 지체 없이 처리합니다.
9. 문의처
- 이메일: [email protected]
10. 방침의 변경
이 개인정보처리방침이 변경되는 경우 개정된 내용과 시행일을 이 페이지에 게시합니다. 중요한 변경 — 특히 소프트웨어가 새로운 네트워크 통신을 시작하거나 회사가 처리하는 개인정보의 범위가 넓어지는 경우 — 은 시행일로부터 최소 7일 전에 공지합니다.