Dengan Cloud Firestore Security Rules, Anda dapat berfokus membangun pengalaman pengguna yang menyenangkan, tanpa harus mengelola infrastruktur atau menulis autentikasi sisi server dan kode otorisasi.
Aturan keamanan memberikan kontrol akses dan validasi data dalam format yang sederhana namun ekspresif. Untuk membangun sistem akses berbasis pengguna dan berbasis peran yang menjaga keamanan data pengguna, Anda harus menggunakan Firebase Authentication dengan Cloud Firestore Security Rules.
Aturan keamanan versi 2
Mulai Mei 2019, aturan keamanan Cloud Firestore versi 2 kini
tersedia. Versi 2 aturan mengubah perilaku karakter pengganti
berulang {name=**}
. Anda harus menggunakan versi 2 jika berencana untuk
menggunakan kueri grup koleksi. Anda harus memilih
versi 2 dengan menerapkan rules_version = '2';
di baris pertama dalam aturan keamanan
Anda:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Menulis aturan
Anda akan menulis dan mengelola Cloud Firestore Security Rules yang disesuaikan dengan model data yang Anda buat untuk database default dan setiap database tambahan di project Anda.
Semua Cloud Firestore Security Rules terdiri dari pernyataan match
, yang mengidentifikasi dokumen di
database Anda, dan ekspresi allow
, yang mengontrol akses ke dokumen tersebut:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Sebelum membaca atau menulis data, setiap permintaan database dari library klien seluler/web Cloud Firestore dievaluasi terhadap aturan keamanan Anda. Apabila aturan tersebut menolak akses ke salah satu lokasi dokumen yang ditentukan, seluruh permintaan akan gagal.
Berikut adalah beberapa contoh kumpulan aturan dasar. Meskipun valid, aturan ini tidak direkomendasikan untuk aplikasi produksi:
Auth diperlukan
// 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;
}
}
}
Tolak semua
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Izinkan semua
// 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;
}
}
}
Jalur {document=**}
yang digunakan dalam contoh di atas cocok dengan dokumen apa pun di seluruh database. Lanjutkan ke panduan membuat struktur aturan keamanan untuk mempelajari cara mencocokkan jalur data tertentu dan menangani data hierarkis.
Aturan pengujian
Cloud Firestore menyediakan simulator aturan yang dapat Anda gunakan untuk menguji kumpulan aturan Anda. Anda dapat mengakses simulator dari tab Rules di bagian Cloud Firestore pada Firebase console.
Dengan simulator aturan, Anda dapat menyimulasikan pembacaan, penulisan, dan penghapusan yang diautentikasi dan tidak diautentikasi. Saat menyimulasikan permintaan terautentikasi, Anda dapat membuat dan melihat pratinjau token autentikasi dari berbagai penyedia. Permintaan yang disimulasikan berjalan melawan kumpulan aturan di editor Anda, bukan aturan yang saat ini digunakan.
Men-deploy aturan
Agar dapat menggunakan Cloud Firestore dari aplikasi seluler, Anda harus men-deploy aturan keamanan. Anda dapat men-deploy aturan di Firebase console, menggunakan Firebase CLI, atau dengan REST API pengelolaan Cloud Firestore.
Pembaruan Cloud Firestore Security Rules dapat memerlukan waktu hingga satu menit untuk berefek pada kueri dan pemroses baru. Namun, diperlukan waktu hingga 10 menit untuk sepenuhnya menerapkan perubahan dan memengaruhi pemroses aktif mana pun.
Menggunakan Firebase console
Guna menyiapkan dan men-deploy rangkaian aturan pertama Anda, untuk database default di project, buka tab Rules di bagian Cloud Firestore pada Firebase console.
Tulis aturan Anda di editor online, lalu klik Publish.
Menggunakan Firebase CLI
Anda juga dapat men-deploy aturan menggunakan Firebase CLI. Dengan CLI, Anda dapat mempertahankan aturan dalam kontrol versi bersama kode aplikasi Anda, serta men-deploy aturan sebagai bagian dari proses deployment yang sudah ada.
// 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
Meningkatkan keamanan untuk Cloud Storage
Aplikasi Anda akan mendapatkan manfaat dari fitur database Cloud Firestore yang andal serta fitur pengelolaan dan penyimpanan file Cloud Storage. Jika digunakan bersamaan, kedua produk ini juga memberikan keamanan aplikasi yang diperkuat, karena Cloud Firestore dapat menangkap persyaratan otorisasi yang dapat digunakan oleh Aturan Keamanan Firebase untuk kedua produk tersebut. Untuk mengetahui informasi selengkapnya, lihat panduan untuk Cloud Storage.
Langkah berikutnya
- Pelajari cara membuat struktur aturan keamanan.
- Tulis kondisi aturan keamanan kustom.
- Baca referensi aturan keamanan.