보안과 시크릿
Piko에서 만든 앱이 외부 API, 로그인, 결제, 고객 데이터를 다룬다면 공개 전에 보안 설정을 먼저 확인해야 합니다. Piko는 배포 버튼을 누를 때 최신 생성 파일을 자동으로 점검하고, 프로젝트 소유자는 프로젝트 설정의 보안 탭에서 전체 결과를 다시 확인할 수 있습니다.
현재 제공되는 보호 장치
섹션 제목: “현재 제공되는 보호 장치”| 항목 | 설명 |
|---|---|
| 프로젝트 보안 스캔 | 프로젝트 설정에서 키 노출, 위험한 코드, 접근 제어, CORS, 의존성, Cloudflare 바인딩, 보안 헤더 단서를 점검 |
| 배포 전 보안 가드 | 배포 버튼을 누르면 스캔을 먼저 실행하고 치명/높음 항목이 있으면 공개 배포를 멈춤 |
| 작업 화면 noindex | 보기 화면과 샌드박스 주소는 검색 노출을 막음 |
| 비공개 프로젝트 | 프로젝트 작업물과 편집 화면은 권한 있는 사용자만 접근 |
| 외부 시크릿 보관 | OAuth 키와 API 키를 프롬프트 본문 대신 보호 저장소에 보관 |
| 공개 URL 접근 제한 | Business 플랜에서 업무용 앱을 워크스페이스 내부로 제한 |
| 프로젝트 멤버 역할 | Owner, Editor, Viewer로 작업 권한 분리 |
보안 스캔에서 확인하는 것
섹션 제목: “보안 스캔에서 확인하는 것”배포 버튼을 누르면 같은 점검이 먼저 실행됩니다. 치명/높음 항목은 공개하면 피해로 이어질 수 있어 배포를 멈추고, 중간/낮음/정보 항목은 채팅에 알려준 뒤 배포를 계속합니다. 프로젝트 설정 → 보안에서 다시 스캔을 실행하면 최신 생성 파일을 기준으로 전체 결과를 확인합니다.
| 점검 항목 | 예시 |
|---|---|
| 시크릿 노출 | API key, GitHub token, private key, JWT로 보이는 값 |
| 위험한 코드 | eval, new Function, 검증 없는 HTML 삽입 |
| 접근 제어 | 민감 route 주변의 인증·권한 확인 누락 가능성 |
| 네트워크 정책 | 와일드카드 CORS, credentials와 함께 쓰는 공개 CORS |
| 의존성 | latest, *, 원격 스크립트 pipe 실행 |
| Cloudflare 바인딩 | 플랫폼 D1/R2/KV/DO, service binding 참조 |
| 보안 헤더 | 공개 응답 코드의 CSP, frame-ancestors, nosniff 단서 |
시크릿을 다룰 때
섹션 제목: “시크릿을 다룰 때”- API 키를 채팅 본문, 공개 코드, 화면 텍스트에 직접 넣지 않습니다.
- 외부 연동 설정에 저장한 뒤 앱 실행 환경으로 동기화합니다.
- 키를 교체했으면 다시 동기화하고 공개본을 확인합니다.
배포가 멈췄을 때
섹션 제목: “배포가 멈췄을 때”치명/높음 항목은 보통 API 키, 토큰, private key, 위험한 HTML/JS 실행, 플랫폼 저장소 권한처럼 밖으로 공개되면 안 되는 내용입니다. 채팅에 먼저 고쳐야 할 항목 3개가 표시되고, 전체 목록은 프로젝트 설정 → 보안 탭에서 볼 수 있습니다.
- 표시된 파일과 줄 번호를 확인합니다.
- API 키나 토큰은 코드에서 제거하고 빌드 변수나 외부 시크릿으로 옮깁니다.
- 위험한 코드나 권한 설정을 수정합니다.
- 다시 배포를 누릅니다.
아직 자동화되지 않은 것
섹션 제목: “아직 자동화되지 않은 것”현재 보안 스캔은 생성 결과물의 빠른 정적 점검입니다. 워크스페이스 전체 보안 센터, 정기 예약 스캔, CSV 내보내기, CVE 데이터베이스 기반 dependency advisory, 자동 수정 PR, 배포 차단 override 정책은 별도 로드맵입니다.