Insights / 기술 해설
Cloudflare Pages와 D1로 만드는 인증된 운영 대시보드
Cloudflare Access로 진입을 보호하고 Pages Functions를 통해 D1의 운영 집계를 읽는 구성을 익명화해 소개합니다. 확인된 프로덕션 배포, 인증된 화면, DB 인덱스 사용과 미검증 항목을 구분합니다.

목차
운영 정보가 로그와 데이터베이스에 흩어져 있으면 담당자가 현재 상태를 안전하게 확인하기 어려울 수 있습니다. 이 익명 사례는 대시보드의 접근 경계, 집계, 배포를 확인하는 방법을 설명합니다. 도메인, 계정, 게시물 내용, 실제 운영 수치는 공개하지 않습니다.
집계 하나를 화면과 API에서 검증하기
먼저 지정 기간 건수 같은 한 집계로 범위를 좁히고 알려진 검증 데이터와 화면 값을 대조합니다. 빈 기간과 조회 오류를 구별하는지, 인증 전후 API 직접 접근이 어떻게 동작하는지 확인한 뒤 집계를 늘립니다. 인덱스는 해당 필터의 쿼리 계획으로 검증하세요.
Cloudflare D1:집계 조건에 맞는 인덱스 확인
페이지와 API 모두 접근 경계에 포함합니다
Cloudflare Pages의 정적 화면만 숨겨서는 데이터 API를 직접 호출할 수 있는 상태를 막지 못합니다. 화면과 API를 모두 Cloudflare Access 경계에 포함해 운영자만 데이터를 읽도록 합니다. 검증 절차로 인증 전후에 페이지와 데이터 API를 각각 시험합니다. 이 사례에서는 프로덕션 화면의 인증 경계와 전용 로그인 후 UI에 데이터가 표시되는 것을 확인했습니다. 현재 기록에서는 API 엔드포인트에 인증 없이 직접 요청한 결과가 확인되지 않아 별도 수락 항목으로 남습니다. 브라우저 코드에 인증 비밀을 넣지 않습니다.
- 인증된 대시보드 운영자는 Access 인증 후 보호된 집계 정보를 봅니다.
- 읽기 전용 API 같은 경계 안에서 D1을 읽습니다. API URL 직접 비인증 요청 차단은 확인되지 않았습니다.
쓰기 작업과 읽기 전용 집계를 분리합니다
Pages Functions의 GET 엔드포인트가 D1을 조회해 시간별 건수, 최근 처리 상태, 실행 모드를 하나의 응답으로 묶습니다. 버튼을 화면에서 감추는 데 의존하지 말고 대시보드 API 자체를 읽기 전용으로 제한합니다. 기간, 시간대, 확정 및 대기 상태의 의미를 정해 서로 다른 건수를 합치지 않도록 합니다. 누락되거나 해결되지 않은 값은 성공한 작업이나 0으로 취급하지 말고 별도로 표시합니다.
집계 쿼리에 맞춰 D1 인덱스를 확인합니다
운영 화면은 최근 기간을 반복해서 필터링하므로 화면이 잘 보인다는 사실만으로 인덱스가 유용하다고 볼 수 없습니다. 실제 집계 조건에 맞는 인덱스를 추가한 뒤 프로덕션 D1에서 쿼리 계획을 확인해 의도한 인덱스를 사용하는지 검증합니다. 인덱스 생성과 쿼리의 인덱스 사용 확인은 별개의 점검입니다. 이 사례에서는 둘 다 프로덕션에서 확인했지만 응답 시간 개선이나 대규모 부하 대응을 보여 주는 벤치마크는 하지 않았습니다.
프로덕션 배포 뒤 인증과 화면을 확인합니다
GitHub 연동으로 Pages를 프로덕션에 배포한 뒤 대상 커밋의 배포 성공과 사용자 지정 도메인의 활성 상태를 확인합니다. 이어서 인증 전에는 화면이 보호되는지, 로그인 뒤에는 대시보드 데이터가 표시되는지 확인합니다. CI나 배포 성공만으로 인증된 운영자가 프로덕션 UI를 볼 수 있다고 증명되지는 않습니다.
이 익명 사례는 단일 운영 환경에서 접근 경계, 프로덕션 화면, D1 집계 쿼리의 인덱스 사용을 확인했습니다. 여러 조직 간 권한 분리, 사용자가 늘어날 때의 부하, 모든 인증 설정에 대한 침투 시험은 하지 않았습니다. Pages 사이트 전체 구조는 Cloudflare Pages 사이트 아키텍처를 참고하세요.