Cloud Firestore 보안 규칙 시작하기

Cloud Firestore Security Rules를 사용하면 우수한 사용자 환경을 구축하는 데 집중할 수 있습니다. 인프라를 관리하거나 서버 측을 작성하지 않고도 인증 및 승인 코드

보안 규칙은 간단하지만 표현력 있는 형식으로 액세스 제어 및 데이터 검증을 제공합니다. 조직의 보안 상태를 유지하는 사용자 기반 및 역할 기반 액세스 시스템을 사용자 데이터를 안전하게 보호하려면 Firebase 인증(Cloud Firestore Security Rules).

보안 규칙 버전 2

2019년 5월부터 Cloud Firestore 보안 규칙 버전 2가 있습니다. 규칙 버전 2는 재귀 와일드 카드 {name=**}. 다음을 계획하는 경우 버전 2를 사용해야 합니다. 컬렉션 그룹 쿼리를 사용합니다. 다음을 선택해야 합니다. rules_version = '2';을(를) 보안의 첫 번째 줄로 만들어 버전 2 규칙:

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

규칙 작성

사용한 데이터 모델에 맞는 Cloud Firestore Security Rules을 작성하고 관리합니다. 프로젝트의 기본 데이터베이스 및 각 추가 데이터베이스에 대해 생성합니다.

모든 Cloud Firestore Security Rules는 다음 위치에서 문서를 식별하는 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 Console의 Cloud Firestore 섹션입니다.

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

규칙 배포

모바일 앱에서 Cloud Firestore을(를) 사용하려면 다음 요건을 충족해야 합니다. 보안 규칙을 배포합니다 Firebase Console에서 Firebase CLI 또는 Cloud Firestore 관리 REST API를 사용합니다.

Cloud Firestore Security Rules 업데이트가 새 쿼리에 영향을 미치는 데 최대 1분이 걸릴 수 있습니다. 리스너입니다. 하지만 변경사항이 완전히 전파되어 모든 활성 리스너에 반영되는 데 최대 10분이 소요될 수 있습니다.

Firebase Console 사용

첫 번째 규칙 세트를 설정 및 배포하려면 프로젝트에서 규칙 탭을 열고 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 rules for all configured databases
firebase deploy --only firestore

Cloud Storage의 보안 강화

앱에서 Cloud Firestore의 강력한 데이터베이스 기능을 활용할 수 있습니다. 및 Cloud Storage의 파일 저장 및 관리 기능이 포함됩니다. 사용됨 이러한 제품은 앱 보안도 강화합니다. Cloud Firestore에서 Firebase 보안 규칙에서 사용할 수 있는 승인 요구사항을 캡처할 수 있습니다. 를 사용할 수 있습니다. 자세한 내용은 Cloud Storage 가이드를 참고하세요.

다음 단계