Pelajari cara menggunakan dan mengelola kunci API untuk Firebase

Kunci API adalah string unik yang digunakan untuk merutekan permintaan ke project Firebase Anda saat berinteraksi dengan layanan Firebase dan Google. Halaman ini menjelaskan informasi dasar tentang kunci API serta praktik terbaik untuk menggunakan dan mengelola kunci API dengan aplikasi Firebase.

Informasi umum tentang kunci API dan Firebase

Kunci API untuk Firebase berbeda dengan kunci API biasa

Tidak seperti cara penggunaan kunci API biasa, kunci API untuk layanan Firebase tidak digunakan untuk mengontrol akses ke resource backend. Hal tersebut hanya dapat dilakukan dengan Aturan Keamanan Firebase (untuk mengontrol pengguna yang dapat mengakses resource) dan App Check (untuk mengontrol aplikasi yang dapat mengakses resource).

Biasanya, Anda harus melindungi kunci API dengan cermat (misalnya, menggunakan layanan vault atau menyetel kunci sebagai variabel lingkungan); tetapi, kunci API untuk layanan Firebase boleh disertakan dalam kode atau file konfigurasi yang telah didaftarkan.

Meskipun kunci API untuk layanan Firebase aman untuk disertakan dalam kode, ada beberapa kasus tertentu saat Anda harus menerapkan batas untuk kunci API; misalnya, jika Anda menggunakan Firebase ML, Firebase Authentication dengan metode login email/sandi, atau Google Cloud API yang dapat ditagih. Pelajari lebih lanjut kasus ini nanti di halaman ini.

Membuat kunci API

Project Firebase dapat memiliki banyak kunci API, tetapi setiap kunci API hanya dapat dikaitkan dengan satu project Firebase.

Kunci API secara otomatis dibuat oleh Firebase untuk Aplikasi Firebase Anda

Firebase secara otomatis membuat kunci API untuk project Anda jika Anda melakukan salah satu dari tindakan berikut:

  • Membuat project Firebase > Browser key dibuat otomatis
  • Membuat Aplikasi Apple Firebase > iOS key dibuat otomatis
  • Membuat Aplikasi Android Firebase > Android key dibuat otomatis

Anda juga dapat membuat kunci API sendiri di Google Cloud Console, misalnya untuk pengembangan atau proses debug. Pelajari lebih lanjut kapan hal ini disarankan nanti di halaman ini.

Menemukan kunci API

Anda dapat melihat dan mengelola semua kunci API project di panel API & Layanan > Kredensial di Google Cloud Console.

Anda juga dapat menemukan kunci API mana yang otomatis dicocokkan dengan Aplikasi Firebase di lokasi berikut. Secara default, semua Aplikasi Firebase project Anda untuk platform yang sama (Apple vs Android vs Web) akan menggunakan kunci API yang sama.

  • Aplikasi Apple Firebase — Temukan kunci API yang dicocokkan secara otomatis dengan aplikasi di file konfigurasi Firebase, GoogleService-Info.plist, di kolom API_KEY.

  • Aplikasi Android Firebase — Temukan kunci API yang dicocokkan secara otomatis dengan aplikasi di file konfigurasi Firebase, google-services.json, di kolom current_key.

  • Aplikasi Web Firebase — Temukan kunci API yang dicocokkan secara otomatis dengan aplikasi di objek konfigurasi Firebase, di kolom apiKey.

Menggunakan kunci API

Kunci API digunakan untuk mengidentifikasi project Firebase Anda saat berinteraksi dengan layanan Firebase/Google. Secara khusus, kunci API digunakan untuk mengaitkan permintaan API dengan project Anda untuk kuota dan penagihan. Kunci API juga berguna untuk mengakses data publik.

Misalnya, Anda dapat menggunakan kunci API secara eksplisit dengan meneruskan nilainya ke dalam panggilan REST API sebagai parameter kueri. Contoh ini menunjukkan bagaimana Anda dapat membuat permintaan ke API penyingkat link Dynamic Links:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Ketika melakukan panggilan ke Firebase API, aplikasi Anda akan secara otomatis mencari kunci API project dalam file/objek konfigurasi Firebase. Namun, Anda dapat menyetel kunci API menggunakan mekanisme yang berbeda, termasuk variabel lingkungan.

Menerapkan batasan pada kunci API (disarankan)

Meskipun tidak perlu merahasiakan kunci API untuk layanan Firebase, ada beberapa kasus spesifik (lihat di bawah) saat Anda perlu mengambil tindakan tambahan guna melindungi project Anda dari penyalahgunaan kunci API.

Memperketat kuota jika Anda menggunakan Authentication berbasis sandi

Jika Anda menggunakan Firebase Authentication berbasis sandi dan seseorang mendapatkan kunci API Anda, ia tidak akan dapat mengakses data Cloud Storage atau database project Firebase Anda selama data ini dilindungi oleh Aturan Keamanan Firebase. Namun, ia dapat menggunakan kunci API Anda untuk mengakses endpoint autentikasi Firebase dan membuat permintaan autentikasi terhadap project Anda.

Untuk mengurangi kemungkinan seseorang menyalahgunakan kunci API guna melancarkan serangan brute force, Anda dapat memperketat kuota default endpoint identitytoolkit.googleapis.com untuk mencerminkan ekspektasi traffic normal aplikasi Anda. Perlu diperhatikan bahwa jika Anda memperketat kuota ini dan aplikasi tiba-tiba mendapatkan pengguna baru, error login mungkin akan muncul hingga Anda meningkatkan kuota. Anda dapat mengubah kuota API project di Google Cloud Console.

Menggunakan kunci API terpisah yang dibatasi untuk jenis API tertentu

Meskipun kunci API yang digunakan untuk layanan Firebase umumnya tidak perlu dirahasiakan, Anda harus melakukan beberapa tindakan pencegahan tambahan pada kunci API yang digunakan untuk memberikan akses ke Google Cloud API yang telah Anda aktifkan secara manual.

Jika menggunakan Google Cloud API (pada platform apa pun) yang tidak otomatis diaktifkan oleh Firebase (artinya, Anda mengaktifkannya sendiri), sebaiknya pertimbangkan untuk membuat kunci API terpisah yang dibatasi untuk digunakan dengan API tersebut. Hal ini terutama penting jika API tersebut ditujukan untuk layanan Google Cloud yang dapat ditagih.

Misalnya, jika menggunakan Cloud Vision API Firebase ML di iOS, Anda harus membuat kunci API terpisah yang hanya digunakan untuk mengakses Cloud Vision API.

Dengan menggunakan kunci API terpisah yang dibatasi untuk API non-Firebase, Anda dapat merotasi atau mengganti kunci jika diperlukan dan menambahkan batasan tambahan pada kunci API tersebut tanpa mengganggu penggunaan layanan Firebase Anda.

Menggunakan kunci API khusus lingkungan (disarankan)

Jika Anda menyiapkan project Firebase yang berbeda untuk lingkungan yang berbeda, seperti staging dan produksi, setiap instance aplikasi harus berinteraksi dengan project Firebase yang terkait. Misalnya, instance aplikasi staging tidak boleh berinteraksi dengan project Firebase produksi. Ini juga berarti bahwa aplikasi staging perlu menggunakan kunci API yang terkait dengan project Firebase staging.

Untuk mengurangi masalah saat mempromosikan perubahan kode mulai dari pengembangan hingga staging dan produksi, tetapkan kunci API sebagai variabel lingkungan atau sertakan dalam file konfigurasi, bukan memasukkan kunci API dalam kode itu sendiri.

Perhatikan bahwa jika ingin menggunakan Firebase Local Emulator Suite untuk pengembangan bersama dengan Firebase ML, Anda harus membuat dan menggunakan kunci API khusus debug. Petunjuk untuk membuat jenis kunci tersebut dapat ditemukan di dokumen Firebase ML.

FAQ