Dalam aplikasi standar, developer harus mem-build dan mengelola banyak server yang melakukan autentikasi, otorisasi, dan validasi data, serta logika bisnis developer. Aplikasi yang menggunakan Cloud Storage for Firebase memanfaatkan Firebase Authentication dan Firebase Security Rules agar Cloud Storage dapat menangani autentikasi, otorisasi, dan validasi data serverless.
Dengan menggunakan Cloud Storage dan Cloud Storage Security Rules, Anda dapat berfokus membangun pengalaman pengguna yang menyenangkan, tanpa harus mengelola infrastruktur atau menulis autentikasi sisi server dan kode otorisasi yang rumit.
Ringkasan
Cloud Storage Security Rules digunakan untuk menentukan siapa saja yang memiliki akses baca dan tulis ke file yang disimpan di Cloud Storage, serta bagaimana file disusun dan metadata apa yang dikandungnya. Jenis aturan dasar adalah aturan allow
, yang memungkinkan operasi read
dan write
jika kondisi yang opsional
terpenuhi. Beberapa contoh aturan adalah:
// Rules can optionally specify a condition allow write: if <condition>;
Aturan match
jalur file yang mewakili
referensi Cloud Storage. Aturan dapat match
dengan satu atau beberapa jalur file, dan beberapa aturan dapat match
dengan jalur file dalam request
tertentu:
// Rules match specific paths match /images/profilePhoto.png { allow write: if <condition>; } match /images/croppedProfilePhoto.png { allow write: if <other_condition>; }
Konteks evaluasi aturan juga ditampilkan melalui objek request
dan
resource
, yang menyediakan informasi seperti konteks autentikasi
(request.auth
) dan ukuran objek yang ada (resource.size
).
// Rules can specify conditions that consider the request context match /images/profilePhoto.png { allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024; }
Pelajari lebih lanjut Cloud Storage Security Rules di bagian Melindungi File.
Aturan Contoh
Cloud Storage Security Rules harus terlebih dahulu menentukan service
(dalam kasus kita,
firebase.storage
), dan bucket Cloud Storage
(melalui match /b/{bucket}/o
) yang digunakan untuk mengevaluasi aturan. Aturan default memerlukan Firebase Authentication. Namun demikian, berikut adalah beberapa contoh aturan umum lainnya yang memiliki kontrol akses yang berbeda.
Default
// Only authenticated users can read or write to the folder
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write: if request.auth != null;
}
}
}
Publik
// Anyone can read or write to the folder, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write;
}
}
}
Pengguna
// Grants a user access to a node matching their user ID
service firebase.storage {
match /b/{bucket}/o {
// Files look like: "user/<UID>/file.txt"
match /user/{userId}/{fileName} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Pribadi
// Access to files through Cloud Storage for Firebase is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
Selama proses pengembangan, Anda dapat menggunakan aturan publik sebagai pengganti aturan default untuk menyetel file Anda agar dapat dibaca dan ditulisi oleh publik. Hal ini sangat berguna untuk pembuatan prototipe, karena Anda dapat memulai tanpa menyiapkan Firebase Authentication. Namun, karena Cloud Storage dan aplikasi App Engine default Anda menggunakan bucket yang sama, aturan ini juga membuat semua data yang digunakan aplikasi tersebut menjadi publik.
Dengan aturan pengguna, Anda dapat memberi masing-masing pengguna yang telah diautentikasi penyimpanan file milik mereka sendiri. Anda juga dapat mengunci file secara menyeluruh menggunakan aturan pribadi. Tetapi perlu diketahui bahwa pengguna tidak dapat membaca atau menulis apa pun melalui Cloud Storage dengan aturan tersebut. Pengguna yang mengakses file dari aplikasi App Engine Anda atau Google Cloud Storage API mungkin masih memiliki akses.
Mengedit Aturan
Cloud Storage memudahkan Anda dalam mengedit Cloud Storage Security Rules melalui tab Rules pada bagian Storage di Firebase console.
Di tab Rules, Anda dapat melihat dan mengedit aturan saat ini dengan cepat
dan mudah. Aturan ini di-deploy dengan mengklik Publish, atau dengan menyimpan file (ctrl/cmd + s
). Aturan akan langsung diupload ke server Cloud Storage tetapi mungkin memerlukan waktu hingga lima menit untuk ditampilkan.
Firebase CLI juga dapat digunakan untuk men-deploy aturan. Jika Anda memilih Storage
saat menjalankan firebase init
, file storage.rules
dengan salinan aturan default akan dibuat direktori project Anda. Anda dapat men-deploy aturan ini menggunakan perintah firebase deploy
. Jika Anda memiliki beberapa bucket di project, Anda dapat menggunakan target deploy untuk men-deploy aturan ke semua bucket sekaligus dari folder project yang sama.
Pelajari lebih lanjut cara kerja keamanan berbasis file di bagian Melindungi File, atau pahami keamanan berbasis pengguna di bagian Keamanan Pengguna.