데이터 암호화
Connect Base는 전송 중(in transit)과 저장 시(at rest) 모두 데이터를 암호화합니다.
전송 중 암호화 (TLS)
모든 API 통신은 TLS 1.3으로 암호화됩니다.
적용 범위
- API 요청/응답
- WebSocket 연결 (
cb.realtime,cb.webrtc,cb.game) - 파일 업로드/다운로드 (Presigned URL 포함)
자동 적용
SDK는 기본적으로 HTTPS 엔드포인트를 사용합니다. 별도 설정이 필요하지 않습니다.
typescript
const cb = new ConnectBase({
publicKey: 'cb_pk_...'
// baseUrl 기본값: https://api.connectbase.world
})저장 시 암호화
데이터베이스 암호화
저장된 모든 row 는 AES-256으로 암호화됩니다.
- 자동 암호화/복호화 (애플리케이션 코드 변경 불필요)
- 키 관리는 Connect Base 가 처리
- 성능 영향 최소화
파일 스토리지 암호화
업로드된 파일도 Object Storage 에서 암호화되어 저장됩니다.
typescript
// 파일 업로드 시 자동 암호화 — 별도 옵션 불필요
const result = await cb.storage.uploadFile('stg_xxx', file)필드 레벨 암호화
특정 컬럼만 추가로 암호화할 수 있습니다 (AES-256-GCM).
컬럼 생성 시 encrypted: true 옵션을 지정하세요.
typescript
// REST API 또는 콘솔의 컬럼 추가에서 encrypted: true 지정
await fetch('https://api.connectbase.world/v1/public/tables/tbl_users/columns', {
method: 'POST',
headers: {
'X-Public-Key': 'cb_pk_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'ssn',
data_type: 'string',
is_required: true,
order: 5,
encrypted: true // 필드 레벨 암호화 활성화
})
})📌 암호화된 필드의 제약:
- DB 레벨 필터/정렬이 불가합니다 (값이 암호문이므로)
- 앱 레벨에서 조회한 후 메모리에서 검색해야 합니다
- 서버에
SECRET_ENCRYPTION_KEY환경 변수가 설정되어 있어야 합니다
사용 시점
typescript
// 저장 — SDK 호출은 일반 컬럼과 동일. 서버에서 자동 암호화
await cb.database.createData('tbl_users', {
data: {
email: '[email protected]',
ssn: '123-45-6789' // 자동 암호화되어 저장
}
})
// 조회 — 자동 복호화
const row = await cb.database.getDataById('tbl_users', 'row_xxx')
console.log(row.data.ssn) // '123-45-6789'키 관리
마스터 키
- Connect Base 가 관리
- HSM(Hardware Security Module) 또는 KMS 에 저장
- 정기적으로 자동 로테이션
데이터 암호화 키 (DEK)
- 각 앱별로 고유한 키 생성
- 마스터 키로 암호화되어 저장 (envelope encryption)
📌 SDK 에는 키 로테이션 메서드가 노출되어 있지 않습니다. 키 로테이션이 필요하면 Connect Base 지원팀에 문의하세요.