본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
DuckDB 고급 활용

시작과 기준선

포지셔닝과 적합한 워크로드버전·설치·런타임 기준연결·스토리지 모델실행 가능한 예제 번들

파일·레이크 분석

CSV·JSON 수집Parquet 레이크 모델링다중 파일·스키마 진화파티션 쓰기와 오브젝트 스토리지Lakehouse 포맷

분석 SQL·연동

Friendly SQL과 매크로시계열·분석 SQL중첩·반정형 데이터Python·Arrow·Polars·BIdbt·MotherDuck·Ibis 생태계Materialization·Index·통계

성능·운영

성능 프로파일링벤치마크·프로파일링 실습메모리·spill·실패 모드동시성·보안·운영보안 Hardening 체크리스트

부록

템플릿참고 자료검증 리포트업데이트 내역
핸드북›DuckDB 고급 활용›보안 Hardening 체크리스트

보안 Hardening 체크리스트

로컬 노트북, CI 배치, 내부 분석 서비스별 DuckDB 보안·리소스·확장 정책을 표준화합니다.

핵심 요약

  • DuckDB 보안은 SQL grant가 아니라 파일·네트워크·extension·secret·리소스를 다루는 실행 환경 통제 문제입니다.
  • 로컬 노트북, CI/배치, 내부 분석 서비스 세 환경별로 SQL 입력·파일·네트워크·extension·secret·리소스 정책을 다르게 둡니다.
  • extension은 parent process와 같은 권한으로 실행되므로 community/unsigned extension 허용은 코드 실행 허용 수준으로 검토합니다.
  • secret은 prefix 단위 SCOPE로 좁히고 shared 장비에서는 persistent secret을 금지하며, SQL log에 literal을 남기지 않습니다.
  • untrusted SQL은 그대로 실행하지 않고 allowlist template + parameter 바인딩으로 받아 리소스 제한된 sandbox에서 실행합니다.

DuckDB 보안은 SQL 권한 grant보다 실행 환경 통제에 가깝습니다. DuckDB SQL은 파일, 네트워크, extension, secret, CPU, 메모리까지 건드리므로 환경마다 hardening baseline을 따로 둡니다.

환경별 정책

항목로컬 노트북CI/배치내부 분석 서비스
SQL 입력신뢰한 작성자repo에 커밋된 SQLallowlist query/template
파일 접근project/scratchjob workspacecontainer volume 제한
네트워크개발자 권한egress 제한egress deny 기본
extensioncore 위주pin + checksum/버전 기록core allowlist
secretsession secret 선호cloud role/CI secretscope 좁은 service credential
리소스권장값hard limithard limit + timeout
출력/tmp/scratchstaging 후 publishper-request sandbox

기본 hardening SQL

SET memory_limit = '6GB';
SET threads = 2;
SET preserve_insertion_order = false;
SET temp_directory = '/mnt/scratch/duckdb.tmp';
SET max_temp_directory_size = '100GB';
SET allow_community_extensions = false;

allow_community_extensions는 엄격한 환경에서 community extension을 막는 기준입니다. unsigned extension은 production과 shared notebook에서 허용하지 않습니다.

Extension policy

등급예정책
built-in/corejson, parquet, httpfs허용, 버전 기록
secondary/corefts, 일부 domain extension사용 목적 명시
communitycommunity repository보안 리뷰 후 허용
unsigned/custom자체 빌드 extension격리 환경 전용

공식 문서는 extension이 DuckDB parent process와 같은 권한으로 실행된다고 설명합니다. 그래서 extension을 허용하는 일은 코드 실행을 허용하는 것과 같은 수준으로 검토합니다.

Secret policy

CREATE SECRET scoped_lake (
  TYPE s3,
  PROVIDER credential_chain,
  REGION 'ap-northeast-2',
  SCOPE 's3://company-lake/curated/'
);
체크기준
scopebucket 전체가 아니라 prefix 단위
persistenceshared 장비에서는 persistent secret 금지
rotationcloud IAM rotation 정책과 연결
loggingsecret literal을 SQL log에 남기지 않음
teardownjob 종료 후 scratch와 token cache 정리

Untrusted SQL 방어

사용자 입력 SQL은 그대로 실행하지 않습니다. 필요하면 table, column, filter value를 allowlist 기반 parameter로 받고 실행은 container/VM sandbox 안으로 제한합니다.

CI 체크리스트

체크실패 시
duckdb_extensions() 결과가 allowlist와 일치build fail
duckdb_settings()가 baseline과 일치build fail
output path가 staging prefixpublish 중단
input manifest가 기록됨재현성 경고
EXPLAIN ANALYZE smoke query 성공deploy 중단

사고 대응

사고첫 조치
secret 노출credential revoke, persistent secret 삭제
temp disk 고갈job kill, scratch cleanup, quota 조정
extension 오용extension cache 삭제, allowlist 축소
파일 유출 의심OS/cloud audit log 확인, egress log 확인
SQL DoStimeout/limit 상향이 아니라 template 축소

참고 자료

  • Securing DuckDB
  • Securing Extensions
  • Extension Distribution
  • Secrets Manager
  • Tuning Workloads

관련 문서

동시성·보안·운영

DuckDB의 단일 프로세스 write 모델, read-only 공유, extension 보안, untrusted SQL 방어 기준을 정리합니다.

참고 자료

DuckDB 고급 활용 핸드북의 공식 문서·릴리스 근거 모음

Ch9. 관측 전략

Prisma Production Guardrails · API·Prisma·DB 세 레이어 지표와 OTel 트레이스, slow query 로깅, 배포 직후 강화 관측, SLO/에러버짓 기반 알림 설계를 다룹니다.

동시성·보안·운영

DuckDB의 단일 프로세스 write 모델, read-only 공유, extension 보안, untrusted SQL 방어 기준을 정리합니다.

템플릿

DuckDB 분석 운영에 바로 복사해 쓰는 세션 설정, S3, Parquet, profiling, OOM 대응 템플릿

On this page

환경별 정책기본 hardening SQLExtension policySecret policyUntrusted SQL 방어CI 체크리스트사고 대응참고 자료