Firebase 보안 규칙 시작하기

Firebase 보안 규칙은 Cloud Firestore, 실시간 데이터베이스, Cloud Storage의 데이터에 완전하게 맞춤설정 가능한 강력한 보호 기능을 제공합니다. 다음 단계에 따라 데이터를 보호하고 악의적인 사용자로부터 앱을 보호할 수 있는 규칙을 쉽게 배워 보세요.

Firebase 보안 규칙 이해하기

규칙을 작성하기 전에 시간을 들여 사용하고 있는 Firebase 제품용 특정 Firebase 보안 규칙 언어를 살펴보는 것이 좋습니다. Cloud Storage는 정의된 경로에 액세스 조건을 설정하는 matchallow 문에 의존하는 CEL(Common Expression Language)의 상위 집합을 활용합니다.

먼저 Firebase 보안 규칙 언어의 핵심 구문을 알아보세요.

인증 설정

앱에 Firebase 인증을 추가하지 않았다면 먼저 추가합니다. Firebase 인증은 여러 가지 일반적인 인증 방법을 지원하며 통합적인 인증 기능을 제공하기 위해 Firebase 보안 규칙과 통합됩니다.

앱에 추가적으로 커스텀 인증 정보를 설정할 수 있습니다.

Firebase 보안 규칙 및 Firebase 인증을 자세히 알아보세요.

데이터 및 규칙 구조 정의

데이터를 구조화하는 방법은 규칙을 구조화하고 구현하는 방법에 영향을 미칠 수 있습니다. 데이터 구조를 정의할 때 규칙 구조에 미칠 수 있는 영향을 고려하세요.

예를 들어 Cloud Storage에서 각 사용자의 특정 역할을 나타내는 필드를 포함하고자 할 수 있습니다. 규칙에서 이 필드를 읽고 사용하여 역할 기반 액세스를 허용할 수 있습니다. Cloud Firestore 데이터베이스를 만들고 Cloud Firestore 문서에 액세스 기준을 저장한 후 Cloud Storage 보안 규칙에서 해당 문서에 액세스할 수도 있습니다.

데이터 및 규칙 아키텍처를 정의할 때는 제품에 따른 규칙의 하위 전파 여부에 유의하세요. 실시간 데이터베이스에서는 규칙이 하향식으로 작동하며 상위 규칙이 하위 규칙을 재정의합니다. 규칙이 특정 경로에서 읽기 또는 쓰기 권한을 부여하는 경우 그 아래의 모든 하위 노드에 대한 액세스 권한도 부여됩니다. 반면 Cloud Firestore와 Cloud Storage에서는 규칙이 데이터 계층 구조의 특정 수준에만 적용되므로 다른 수준의 액세스를 제어하기 위해서는 명시적인 규칙을 작성해야 합니다.

규칙 보기

기존 규칙을 보려면 Firebase CLI 또는 Firebase Console을 사용합니다. 실수로 업데이트를 덮어쓰지 않으려면 같은 방법을 사용해 규칙을 일관되게 수정해야 합니다. 로컬에서 정의된 규칙이 최신 업데이트를 반영하는지 확실하지 않은 경우 언제든지 Firebase Console을 통해 Firebase 보안 규칙의 가장 최근에 배포된 버전을 볼 수 있습니다.

Firebase Console에서 규칙에 액세스하려면 프로젝트를 선택한 후 왼쪽 탐색 패널에서 Storage를 클릭합니다. 올바른 데이터베이스 또는 스토리지 버킷으로 이동한 후 규칙을 클릭합니다.

Firebase CLI에서 규칙에 액세스하려면 firebase.json 파일에 언급된 규칙 파일로 이동합니다.

기본 규칙 작성

앱을 개발하고 규칙을 이해하면서 규칙을 구현하여 다음을 포함한 몇 가지 기본 사용 사례를 해결해 보세요.

  • 콘텐츠 소유자 전용: 사용자별로 콘텐츠 액세스를 제한합니다.
  • 혼합 액세스: 사용자에게 쓰기 액세스를 제한하지만 공용 읽기 액세스를 허용합니다.
  • 속성 기반 액세스: 사용자 그룹 또는 유형으로 액세스를 제한합니다.

규칙 테스트

Firebase Console에서 Firebase 보안 규칙을 설정하는 경우 동작을 신속하게 검증하려면 Firebase 규칙 플레이그라운드를 사용하면 됩니다. 하지만 변경사항을 프로덕션으로 배포하기 전에 로컬 에뮬레이터 도구 모음을 사용하여 좀 더 철저하게 테스트하는 것이 좋습니다.

규칙 배포

Firebase Console 또는 Firebase CLI를 사용하여 프로덕션으로 규칙을 배포하세요. Firebase 보안 규칙 관리 및 배포에 설명된 단계를 따릅니다.