본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
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보안 리뷰 후 허용
자체 서명승인된 custom repository공개키 지문·배포 주체·버전 검증
unsigned서명 없는 자체 빌드격리 환경 전용

공식 문서는 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 식별자는 allowlist로 선택하고 filter value는 parameter binding으로 전달하며 실행은 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 축소

2.0 자체 서명 저장소

custom extension을 unsigned로만 취급할 필요는 없습니다. 자체 repository를 등록하고 RSA 공개키로 서명을 검증할 수 있습니다. 다만 저장소 기능은 아직 변경 가능한 상태입니다.

allow_extension_repositories의미
undecided새 등록 금지, 기존 custom repository 신뢰 유지
allowedcustom repository 등록 허용
forbidden새 등록 금지, 기존 custom repository도 불신

core-only 실행 환경은 다음 설정을 별도로 적용합니다. allow_community_extensions=false만으로 custom repository 정책까지 고정했다고 보지 않습니다.

SET allow_extension_repositories = 'forbidden';
SELECT repository_name, prefix, key_fingerprints
FROM duckdb_extension_repositories();

자체 저장소를 허용하는 배포는 공개키 지문을 별도 채널로 확인하고, key rotation과 허용 버전을 기록합니다. 실행 중 설정은 더 엄격한 방향으로만 이동할 수 있습니다. Extension Repositories.

2.0 SECURE VIEW의 범위

CREATE SECURE VIEW는 stats()나 실행 계획에서 하위 테이블의 통계·내부 정보가 드러나는 것을 제한합니다. 필터가 있는 일반 VIEW만으로 이런 정보 노출을 막았다고 보지 않습니다. CREATE VIEW.

이 기능은 원본 테이블·파일을 직접 읽을 수 있는 실행 주체를 차단하는 ACL이 아닙니다. OS/스토리지 권한과 SQL 실행 범위를 함께 통제합니다. 또한 secret의 SCOPE는 credential 선택 범위이며, 실제 접근 허용 범위는 IAM·스토리지 정책으로 제한합니다.

참고 자료

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

관련 문서

동시성·보안·운영

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

참고 자료

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

On this page

환경별 정책기본 hardening SQLExtension policySecret policyUntrusted SQL 방어CI 체크리스트사고 대응2.0 자체 서명 저장소2.0 SECURE VIEW의 범위참고 자료