이 프롬프트는 Gemini CLI과 같은 AI 어시스턴트가 앱의 Firebase Security Rules를 생성하고 개선하는 데 도움이 될 수 있습니다. 프롬프트를 사용하여 사용자별 액세스 권한 부여, 역할 기반 권한 구현, 데이터 검증과 같은 일반적인 사용 사례의 Rules를 작성할 수 있습니다.
이 프롬프트는 다음을 위한 Rules 생성에 중점을 둡니다.
- Cloud Firestore: 앱의 로직에 따라 컬렉션과 문서를 보호합니다.
- Cloud Storage for Firebase: 저장된 파일의 액세스 권한을 확인합니다.
이 프롬프트를 사용하면 강력한 보안 상황을 시작하는 데 도움이 되지만 프로덕션에 배포하기 전에 항상 Rules을(를) 철저히 테스트해야 합니다. Rules 테스트에 관한 자세한 내용은 Firebase Security Rules 시작하기: 규칙 테스트를 참고하세요.
기본 요건
- 보안 규칙 권장사항을 숙지합니다.
- Firebase Security Rules의 단위 테스트를 실행하고 Firebase Local Emulator Suite를 사용하려면 Node.js를 설치하고 Firebase CLI를 설치합니다. 전체 안내는 로컬 에뮬레이터 도구 모음 설치, 구성, 통합을 참고하세요.
- 권장사항: 아직 설치하지 않았다면 Gemini CLI을 설치합니다. 다음 안내에서는 Gemini CLI 확장 프로그램을 설치하고 사용하여 Rules을 생성하는 방법을 설명합니다. 다른 AI 어시스턴트를 사용하려면 저장소에서 프롬프트를 복사하여 선택한 AI 어시스턴트에 붙여넣으면 됩니다.
- 이 Gemini CLI 확장 프로그램은 Firebase MCP 서버를 사용하여 생성된 Firebase Security Rules의 유효성을 검사합니다. MCP 서버는 Rules의 테스트 및 배포를 더 쉽게 하는 데도 사용할 수 있습니다. 확장 프로그램을 사용하여 Firebase Security Rules를 생성하기 전에 Firebase MCP 서버를 설치합니다.
제한사항
Google에서는 이 환경을 적극적으로 개선하고 있으므로 제한사항 목록이 변경될 수 있습니다. 업데이트가 있는지 자주 확인하세요.
- Firebase의 Gemini는 Firebase Security Rules을 생성할 수 없습니다. Gemini CLI과 같은 대체 AI 어시스턴트를 사용합니다.
- 이 프롬프트는 Cloud Firestore 및 Cloud Storage for Firebase의 Firebase Security Rules를 생성하도록 설계되었습니다. 아직 Firebase Realtime Database의 Rules를 생성할 수 없습니다.
- Firebase Security Rules는 Firebase Admin SDK를 사용하는 경우와 같이 서버 또는 기타 백엔드 환경에서 데이터베이스나 버킷에 액세스할 때는 호출되지 않습니다. Admin SDK를 사용하는 경우 백엔드 코드에서 승인 및 데이터 유효성 검사를 관리해야 합니다.
프롬프트 사용
Firebase Security Rules의 경우 실험용 Gemini CLI 확장 프로그램을 사용하여 규칙과 테스트를 생성합니다.
이 확장 프로그램은 소스 코드를 분석하여 Cloud Firestore 및 Cloud Storage의 데이터 스키마와 액세스 패턴을 식별하는 데 도움을 줍니다. 최소 권한의 원칙에 따라 Rules을 작성하고 반복적인 '공격' 시뮬레이션을 통해 취약점을 발견하도록 설계되었습니다. 최종 확인을 지원하기 위해
@firebase/rules-unit-testing를 사용하는 시작 단위 테스트 모음을 제공하므로 Firebase 로컬 에뮬레이터 도구 모음을 사용하여 로컬에서 보안 로직을 확인할 수 있습니다.확장 프로그램을 설치하고 사용하려면 다음 단계를 따르세요.
Gemini CLI 확장 프로그램을 설치합니다.
gemini extensions install https://github.com/firebase/snippets-rulesGemini CLI를 엽니다.
gemini
프로젝트의 루트에서 확장 프로그램을 실행하여 Cloud Firestore의 규칙을 생성합니다.
/firebase-rules:firestore Generate rules using PROJECT ID PROJECT_ID또는 Cloud Storage의 규칙을 생성합니다.
/firebase-rules:storage Generate rules using PROJECT ID PROJECT_ID and BUCKET NAME BUCKET_NAME
확장 프로그램은 프로젝트 루트에 Cloud Firestore의 경우
rules_test디렉터리를, Cloud Storage의 경우storage_rules_test디렉터리를 만듭니다. 이 새 디렉터리에는 생성된.rules파일과 단위 테스트가 포함된 Node.js 프로젝트가 포함되어 있습니다.규칙 유효성 검사 및 테스트 결과를 검토합니다.
- 구문 유효성 검사 - 규칙을 생성한 후 Gemini CLI는 Firebase MCP 서버의
firebase_validate_security_rules명령어를 사용하여 구문을 자동으로 검사합니다. - 단위 테스트 - 구문 유효성 검사 후 Gemini CLI는 Firebase Local Emulator Suite를 사용하여 생성된 단위 테스트를 실행하려고 시도합니다. 테스트를 실행하려면 별도의 터미널에서 Firebase Local Emulator Suite를 실행해야 합니다.
테스트가 자동으로 실행되지 않으면 별도의 터미널에서 Firebase Local Emulator Suite을 시작한 후 다음 옵션 중 하나를 사용하여 테스트를 실행합니다.
* Instruct Gemini CLI to run tests: ```none Firebase Emulator Suite is running in a separate terminal. Please execute the tests. ``` * Run tests manually by following the instructions in the `README.md` file in the `rules_test` or `storage_rules_test` directory.- 구문 유효성 검사 - 규칙을 생성한 후 Gemini CLI는 Firebase MCP 서버의
생성된 Rules의 결과가 만족스러우면 다음 Firebase CLI 명령어를 사용하여 Rules를 배포합니다.
Cloud Firestore
firebase deploy --only firestore:rulesCloud Storage
firebase deploy --only storage
추가 리소스
- 보안 상황에 대한 추가 지원이 필요한 경우 Gemini CLI용 보안 확장 프로그램을 사용할 수도 있습니다. 이 확장 프로그램은 오픈소스 확장 프로그램으로, 코드 변경사항을 분석하여 보안 위험과 취약점을 식별합니다.