Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Cloud Firestore 보안 규칙 시작하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Cloud Firestore 보안 규칙을 사용하면 인프라를 관리하거나 서버 측 인증 및 승인 코드를 작성할 필요 없이 우수한 사용자 환경을 구축하는 데 집중할 수 있습니다.

보안 규칙은 단순하지만 표현이 풍부한 형식으로 액세스 제어 및 데이터 유효성 검사를 제공합니다. 사용자 데이터를 안전하게 유지하는 사용자 기반 및 역할 기반 액세스 시스템을 구축하려면 Cloud Firestore 보안 규칙과 함께 Firebase 인증 을 사용해야 합니다.

보안 규칙 버전 2

2019년 5월 현재 Cloud Firestore 보안 규칙 버전 2를 사용할 수 있습니다. 규칙 버전 2는 재귀 와일드카드 {name=**} 의 동작을 변경합니다. 컬렉션 그룹 쿼리 를 사용하려면 버전 2를 사용해야 합니다. rules_version = '2'; 보안 규칙의 첫 번째 줄:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

작성 규칙

모든 Cloud Firestore 보안 규칙은 데이터베이스의 문서를 식별하는 match 문과 해당 문서에 대한 액세스를 제어하는 ​​표현식을 allow 하는 것으로 구성됩니다.

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

Cloud Firestore 모바일/웹 클라이언트 라이브러리의 모든 데이터베이스 요청은 데이터를 읽거나 쓰기 전에 보안 규칙에 따라 평가됩니다. 규칙이 지정된 문서 경로에 대한 액세스를 거부하면 전체 요청이 실패합니다.

다음은 기본 규칙 집합의 몇 가지 예입니다. 이러한 규칙은 유효하지만 프로덕션 애플리케이션에는 권장되지 않습니다.

인증 필요

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

모두 거부

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

모두 허용

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

위의 예에서 사용된 {document=**} 경로는 전체 데이터베이스의 모든 문서와 일치합니다. 특정 데이터 경로를 일치시키고 계층적 데이터로 작업하는 방법을 배우려면 보안 규칙 구조화 가이드를 계속 진행하십시오.

테스트 규칙

Cloud Firestore는 규칙 세트를 테스트하는 데 사용할 수 있는 규칙 시뮬레이터를 제공합니다. Firebase 콘솔의 Cloud Firestore 섹션에 있는 규칙 에서 시뮬레이터에 액세스할 수 있습니다.

규칙 시뮬레이터를 사용하면 인증 및 비인증 읽기, 쓰기 및 삭제를 시뮬레이션할 수 있습니다. 인증된 요청을 시뮬레이션할 때 다양한 공급자의 인증 토큰을 빌드하고 미리 볼 수 있습니다. 시뮬레이션된 요청은 현재 배포된 규칙 세트가 아니라 편집기의 규칙 세트에 대해 실행됩니다.

규칙 배포

모바일 앱에서 Cloud Firestore를 사용하려면 먼저 보안 규칙을 배포해야 합니다. Firebase 콘솔에서 또는 Firebase CLI를 사용하여 규칙을 배포할 수 있습니다.

Cloud Firestore 보안 규칙 업데이트가 새 쿼리 및 리스너에 영향을 미치는 데 최대 1분이 소요될 수 있습니다. 그러나 변경 사항을 완전히 전파하고 활성 수신기에 영향을 미치는 데 최대 10분이 소요될 수 있습니다.

Firebase 콘솔 사용

첫 번째 규칙 집합을 설정하고 배포하려면 Firebase 콘솔의 Cloud Firestore 섹션에서 규칙 을 엽니다.

온라인 편집기에서 규칙을 작성한 다음 게시 를 클릭합니다.

Firebase CLI 사용

Firebase CLI 를 사용하여 규칙을 배포할 수도 있습니다. CLI를 사용하면 애플리케이션 코드로 규칙을 버전 제어하고 기존 배포 프로세스의 일부로 규칙을 배포할 수 있습니다.

// Set up Firestore in your project directory, creates a .rules file
firebase init firestore

// Edit the generated .rules file to your desired security rules
// ...

// Deploy your .rules file
firebase deploy --only firestore:rules

Cloud Storage의 보안 강화

앱은 Cloud Firestore의 강력한 데이터베이스 기능과 Cloud Storage의 파일 스토리지 및 관리 기능을 활용할 수 있습니다. Cloud Firestore가 두 제품 모두에 대해 Firebase 보안 규칙에서 사용할 수 있는 승인 요구 사항을 캡처할 수 있으므로 이러한 제품을 함께 사용하면 앱 보안을 강화할 수도 있습니다. 자세한 내용 은 Cloud Storage 가이드를 참조하세요.

다음 단계