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.
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
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.
Luaskan bagian ini untuk mempelajari cara membuat kunci khusus API
Petunjuk berikut menjelaskan cara membuat kunci API terpisah yang dibatasi untuk API palsu yang disebut Super Service API.
Langkah 1: Mengonfigurasi kunci API yang ada untuk melarang akses ke Super Service API
Buka halaman Kredensial di Google Cloud Console. Saat diminta, pilih project Anda.
Untuk setiap kunci API yang ada dalam daftar, buka tampilan edit.
Di bagian API restrictions, pilih Restrict key, lalu tambahkan ke daftar semua API yang ingin diakses oleh kunci API. Pastikan untuk tidak menyertakan API yang dituju oleh kunci API terpisah yang Anda buat (dalam contoh ini, Super Service API).
Saat mengonfigurasi API restrictions untuk kunci API, Anda secara eksplisit mendeklarasikan API yang dapat diakses oleh kunci tersebut. Secara default, jika opsi Don't restrict key terpilih di bagian API restrictions, kunci API dapat digunakan untuk mengakses API apa pun yang diaktifkan untuk project.
Sekarang, kunci API yang ada tidak akan memberikan akses ke Super Service API, tetapi setiap kunci akan terus berfungsi untuk setiap API yang Anda tambahkan ke daftar API restrictions miliknya.
Langkah 2: Membuat dan menggunakan kunci API baru untuk akses ke Super Service API
Kembali ke halaman Kredensial. Pastikan project Firebase Anda masih dipilih.
Klik Buat kredensial > Kunci API. Catat kunci API baru ini, lalu klik Restrict key.
Di bagian API restrictions, pilih Restrict key, lalu tambahkan hanyaSuper Service API ke daftar.
Kunci API baru ini memberikan akses hanya ke Super Service API.
Konfigurasi aplikasi dan layanan Anda agar menggunakan kunci API baru ini.
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
Bagaimana cara menentukan kunci API yang terkait dengan Aplikasi Firebase saya?
Anda dapat menggunakan salah satu opsi berikut untuk menentukan kunci API mana yang terkait dengan Aplikasi Firebase Anda:
Firebase console
Buka settingsProject settings,
lalu scroll ke bawah ke kartu Your apps.
Pilih aplikasi yang diinginkan.
Dapatkan file/objek konfigurasi Firebase untuk aplikasi yang diinginkan, lalu cari kunci API-nya:
Apple: Download GoogleService-Info.plist, lalu cari kolom API_KEY
Android: Download google-services.json, cari konfigurasi untuk aplikasi yang Anda inginkan (cari nama paketnya), lalu cari kolom current_key
Web: Pilih opsi Config, lalu cari kolom apiKey
Firebase CLI
Dapatkan file/objek konfigurasi Firebase untuk aplikasi yang diinginkan dengan menjalankan perintah berikut:
firebase apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (salah satu dari): IOS | ANDROID | WEB
FIREBASE_APP_ID: ID unik yang ditetapkan Firebase untuk Aplikasi Firebase Anda (cari ID Aplikasi Anda)
Di konfigurasi Firebase cetak aplikasi, cari kunci API-nya:
Apple: Cari kolom API_KEY
Android: Cari konfigurasi untuk aplikasi yang diinginkan (cari nama paketnya), lalu cari kolom current_key
Web: Cari kolom apiKey
REST API
Dapatkan apiKeyId (UID) kunci API dengan memanggil
endpoint yang berlaku untuk aplikasi yang diinginkan, lalu teruskan
nilai apiKeyId ke langkah berikutnya.
keyString ini adalah nilai yang sama yang dapat ditemukan di artefak konfigurasi
Aplikasi
(Apple |
Android |
Web).
Dapatkah saya mencantumkan dua kunci API untuk Aplikasi Firebase yang sama di file/objek konfigurasi Firebase?
Aplikasi Apple Firebase — Setiap aplikasi memiliki file konfigurasi sendiri dan hanya dapat mencantumkan satu kunci API.
Aplikasi Android Firebase — Semua aplikasi Android dalam project Firebase dicantumkan dalam file konfigurasi yang sama, dan setiap aplikasi hanya dapat mencantumkan satu kunci API. Namun, setiap aplikasi dalam file konfigurasi ini dapat mencantumkan kunci berbeda.
Aplikasi Web Firebase — Setiap aplikasi memiliki objek konfigurasinya sendiri dan hanya dapat mencantumkan satu kunci API.
Namun, Anda dapat menggunakan beberapa kunci API dengan satu aplikasi. Anda harus menyediakan mekanisme agar aplikasi dapat mengakses kunci API lainnya, seperti melalui variabel lingkungan. Mekanisme untuk mengakses kunci API lainnya tidak dapat bergantung hanya pada kunci API yang tercantum dalam file/objek konfigurasi Firebase tersebut.
Bagaimana cara Firebase mengetahui kunci API yang cocok dengan aplikasi (seperti dalam file/objek konfigurasi Firebase)?
Jika Firebase tidak menemukan kunci yang dibatasi yang cocok, maka dalam file/objek konfigurasi akan tercantum iOS key untuk aplikasi Apple, Android key untuk aplikasi Android, dan Browser key untuk aplikasi web (dengan asumsi kunci ini ada dan tidak memiliki "Pembatasan Aplikasi" yang membuatnya tidak cocok dengan aplikasi tersebut).
Dapatkah saya menghapus kolom dan kunci API secara manual dari file/objek konfigurasi Firebase?
Ya, Anda dapat menghapus kunci API secara manual dari file/objek konfigurasi. Namun, Anda harus memberikan beberapa mekanisme lain agar aplikasi dapat mengakses kunci API (seperti melalui variabel lingkungan). Jika tidak, panggilan ke layanan Firebase akan gagal.
Dapatkah saya mengedit file/objek konfigurasi Firebase secara manual dengan kunci API yang berbeda?
Ya, Anda dapat mengedit file/objek konfigurasi secara manual untuk mengaitkan kunci API yang berbeda dengan aplikasi.
Dapatkah saya memindahkan kunci API dari satu project Firebase ke project lainnya?
Tidak, kunci API hanya mengidentifikasi project tertentu dan tidak dapat dipindahkan ke project lain.
Saya mendapatkan email atau pesan error bahwa kunci API saya tidak valid. Apa yang terjadi dan bagaimana cara mengatasinya?
Berikut adalah beberapa penyebab paling umum untuk kunci API yang tidak valid:
Kunci API memiliki "Pembatasan Kunci API" yang diterapkan padanya, yang membuatnya tidak dapat cocok dengan aplikasi yang mencoba menggunakan kunci tersebut ("Pembatasan Aplikasi") atau tidak dapat digunakan untuk API yang sedang dipanggil ("Pembatasan API").
Kunci API telah dihapus dari project di Google Cloud Console.
Kunci API tidak dibuat untuk Project ID yang tercantum di file/objek konfigurasi Firebase milik aplikasi.
Salah satu cara untuk memperbaiki masalah ini adalah dengan mendapatkan versi terbaru file/objek konfigurasi Firebase milik aplikasi, lalu mengganti file/objek konfigurasi lama dengan file/objek yang telah diperbarui.
Sebelum mengirim file konfigurasi untuk download atau menampilkan objek konfigurasi di konsol, Firebase akan memeriksa apakah kunci API yang tercantum cocok dengan aplikasi.
Bagaimana cara memperbaiki error ini? "Gagal mengambil ID pengukuran aplikasi Firebase ini dari server."
Mungkin "Pembatasan API" telah diterapkan pada kunci API yang digunakan oleh aplikasi web Anda. Jika demikian, pastikan bahwa Firebase Management API ada dalam daftar API yang diizinkan.
Apa yang terjadi jika saya menghapus kunci API yang tercantum di Google Cloud Console?
Jika Anda menghapus kunci API yang saat ini digunakan oleh aplikasi, panggilan API dari aplikasi tersebut akan gagal. Anda mungkin akan mendapatkan laporan, email, atau error yang menyatakan bahwa Anda mencoba menggunakan kunci API yang tidak valid.
Penghapusan kunci API bersifat permanen dan tidak dapat diurungkan.