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 kunci API biasanya digunakan, kunci API untuk layanan Firebase tidak digunakan untuk mengontrol akses ke resource backend. Hal tersebut hanya dapat dilakukan dengan Firebase Security Rules (untuk mengontrol pengguna akhir yang dapat mengakses resource) dan Firebase 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 file konfigurasi yang telah di-check-in atau kode.

Meskipun kunci API untuk layanan Firebase aman untuk disertakan dalam kode, Anda harus meninjau dan menerapkan batasan dan pembatasan yang sesuai untuk kunci tersebut.

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 APIs & Services > Credentials 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 di file konfigurasi Firebase, GoogleService-Info.plist, di kolom API_KEY.

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

  • Aplikasi Web Firebase — Temukan kunci API yang dicocokkan secara otomatis 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 cara Anda dapat membuat permintaan ke API penyingkat link Dynamic Links:

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

Saat aplikasi Anda melakukan panggilan ke Firebase API yang memerlukan kunci API yang disediakan oleh klien seluler/web, aplikasi Anda akan otomatis mencari kunci API project dalam file/objek konfigurasi Firebase. Namun, Anda dapat menyediakan kunci API untuk aplikasi menggunakan mekanisme yang berbeda, termasuk variabel lingkungan.

Meninjau dan menerapkan batasan yang sesuai pada kunci API (direkomendasikan)

Meskipun tidak perlu merahasiakan kunci API untuk layanan Firebase, Anda harus meninjau dan menerapkan batasan dan pembatasan seperti yang dijelaskan di bagian ini.

Meninjau API yang otomatis ditambahkan ke daftar yang diizinkan untuk kunci Firebase API Anda

Saat Firebase membuat kunci API di project Anda, kami akan otomatis menambahkan "Pembatasan API" ke kunci tersebut. API yang ditambahkan ke daftar yang diizinkan ini adalah API terkait Firebase yang mengharuskan klien memberikan kunci API bersama dengan panggilan. Perhatikan bahwa sebagian besar API yang diperlukan untuk penggunaan layanan Firebase sebenarnya tidak perlu ada dalam daftar yang diizinkan untuk kunci API Anda.

Karena Firebase menambahkan API yang diperlukan untuk semua layanan Firebase, daftar yang diizinkan untuk kunci API dapat menyertakan API untuk produk yang tidak Anda gunakan. Anda dapat menghapus API dari daftar yang diizinkan, tetapi Anda harus sangat berhati-hati agar tidak menghapus API yang diperlukan untuk Firebase dan layanan Firebase yang Anda gunakan (lihat daftar API terkait Firebase yang perlu ada dalam daftar yang diizinkan untuk setiap layanan/produk). Jika tidak, Anda akan mendapatkan error saat melakukan panggilan ke layanan Firebase.

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 database project Firebase atau data Cloud Storage selama data ini dilindungi oleh Firebase Security Rules. Namun, mereka 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 layanan non-Firebase

Meskipun kunci API yang digunakan untuk layanan Firebase umumnya tidak perlu dirahasiakan, Anda harus melakukan beberapa tindakan pencegahan tambahan pada kunci API yang Anda gunakan dengan API Google Cloud lainnya.

Jika Anda menggunakan Google Cloud API (di platform apa pun) yang bukan untuk layanan/produk Firebase, sebaiknya buat 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 Firebase ML dan Cloud Vision API 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 dan pemecahan masalah

FAQ

Pemecahan masalah