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 dasar adalah aturan allow, yang memungkinkan operasi read dan write jika kondisi yang opsional terpenuhi. Beberapa contoh aturan ini adalah:

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

Aturan jalur file match yang mewakili referensi Cloud Storage. Aturan dapat match satu atau beberapa jalur file, dan lebih dari satu 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 Aturan Keamanan Storage lebih lanjut di bagian Melindungi File.

Aturan Contoh

Aturan Keamanan Storage harus terlebih dahulu menentukan service (dalam kasus kami 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 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 != null && 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 di-deploy dengan mengklik Publikasikan, 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 menerapkan aturan. Jika Anda memilih Storage saat menjalankan firebase init, file storage.rules dengan salinan aturan default akan dibuat di direktori project Anda. Anda dapat men-deploy aturan ini menggunakan perintah firebase deploy. Jika Anda memiliki beberapa bucket di project, Anda dapat menggunakan deploy target 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.