[flutter] Firebase Firestore의 보안 규칙 설정하기

Firebase Firestore는 클라우드 기반의 NoSQL 데이터베이스로 앱에서 데이터를 저장, 동기화 및 쿼리할 수 있는 기능을 제공합니다. 그러나 기본 설정은 모든 사용자에게 읽기 및 쓰기 권한을 부여하므로, 데이터의 보안을 위해 Firestore의 보안 규칙을 설정해야 합니다.

1. Firestore 보안 규칙 파일 생성

Firebase Console에서 “Firestore 데이터베이스” 메뉴로 이동하여 “규칙” 탭을 선택합니다. 그리고 “규칙 파일 생성”을 클릭하여 새로운 규칙 파일을 생성합니다.

2. Firestore 보안 규칙 설정

Firestore 보안 규칙은 JSON 형식으로 작성되며, 다음과 같은 속성을 가집니다.

다음은 Firestore 컬렉션의 읽기와 쓰기에 대한 보안 규칙의 예시입니다.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

위의 예시 규칙은 모든 사용자가 읽기 및 쓰기 권한을 갖도록 설정하는 규칙입니다. request.auth는 사용자의 인증 정보를 나타냅니다. 만약 사용자 인증을 요구하지 않고 읽기 권한만 허용하려면 allow read: if true;로 규칙을 수정할 수 있습니다.

3. Firestore 보안 규칙 적용

보안 규칙을 적용하려면 rules 속성에 생성한 규칙 파일의 경로를 지정해야 합니다. firebase.json 파일을 열고 다음과 같이 firestore 항목을 찾고 rules 속성을 생성한 규칙 파일의 경로로 변경합니다.

{
  "firestore": {
    "rules": "<규칙 파일 경로>"
  }
}

규칙 파일의 경로를 지정한 후, Firebase CLI의 firebase deploy 명령어를 실행하여 변경 사항을 배포합니다.

4. Firestore 보안 규칙 테스트

보안 규칙을 설정한 후에는 앱에서 해당 규칙이 올바르게 작동하는지 테스트해야 합니다. 테스트를 위해 인증되지 않은 사용자로 앱에 접속해보고 데이터의 읽기와 쓰기가 제한되는지 확인합니다. 필요에 따라 보다 구체적인 규칙을 작성하여 더 정확한 제어를 할 수 있습니다.

Firebase Firestore에서 보안 규칙을 설정하면 앱의 데이터 보호 수준을 높일 수 있습니다. 적절한 보안 규칙을 설정하여 앱 사용자의 데이터를 안전하게 보호하세요.

참고 자료