Buka konsol

Memulai Aturan Keamanan Storage

Dalam aplikasi standar, developer harus membuat 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 Aturan Keamanan Firebase untuk Cloud Storage guna menangani autentikasi, otorisasi, dan validasi data.

Dengan menggunakan Cloud Storage dan Aturan Keamanan Storage, Anda dapat fokus membangun pengalaman pengguna yang menyenangkan, tanpa harus mengelola infrastruktur atau menulis autentikasi sisi server dan kode otorisasi yang rumit.

Ringkasan

Aturan Keamanan Storage digunakan untuk menentukan siapa saja yang mempunyai akses baca dan tulis ke file yang tersimpan di Cloud Storage, serta bagaimana file disusun dan metadata apa yang dikandungnya. Jenis aturan dasarnya adalah aturan allow, yang membolehkan operasi read dan write jika memenuhi persyaratan opsional tertentu. Beberapa contoh aturan ini adalah:

// Rules can optionally specify a condition
allow write: if <condition>;

Aturan match (mencocokkan) lokasi file yang mewakili referensi Cloud Storage. Aturan dapat match dengan satu atau beberapa lokasi file, dan lebih dari satu aturan dapat match dengan lokasi file dalam request yang ada:

// 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 akan menampilkan berbagai 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 tentang Aturan Keamanan Storage di bagian Melindungi File.

Aturan Contoh

Aturan Keamanan Storage harus terlebih dahulu menentukan service (dalam kasus kita, firebase.storage), dan bucket Cloud Storage (melalui match /b/{bucket}/o) yang menjadi dasar evaluasi 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 bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Publik

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with Google App Engine, this will also make
// files uploaded via GAE public.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      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>/path/to/file.txt"
    match /user/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

Pribadi

// Access to files through Firebase Storage is completely disallowed.
// Files may still be accessible through Google App Engine or GCS 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 Google 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 sepenuhnya menggunakan aturan pribadi. Namun, perlu diketahui bahwa pengguna tidak dapat membaca atau menulis apa pun melalui Cloud Storage dengan aturan tersebut. Pengguna yang mengakses file dari aplikasi Google App Engine atau GCS API mungkin masih memiliki akses.

Mengedit Aturan

Cloud Storage memudahkan Anda dalam mengedit Aturan Keamanan Storage melalui tab Aturan pada bagian Storage di Firebase console. Di tab Aturan, Anda dapat melihat dan mengedit aturan saat ini dengan cepat dan mudah. Aturan ini diterapkan dengan mengklik Publikasikan atau dengan menyimpan file (ctrl/cmd + s). Aturan akan langsung diupload ke server Cloud Storage, tetapi mungkin membutuhkan waktu hingga lima menit hingga aturan tersebut berlaku.

Firebase CLI juga dapat digunakan untuk menerapkan aturan. Jika Anda memilih Storage saat menjalankan firebase init, file storage.rules dengan salinan aturan default akan dibuat dalam direktori project Anda. Anda dapat menerapkan aturan ini menggunakan perintah firebase deploy. Jika Anda memiliki beberapa bucket di project, Anda dapat menggunakan terapkan target untuk menerapkan 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.