Kunci API adalah string unik yang digunakan untuk mengarahkan permintaan ke proyek 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 dari kunci API biasa
Tidak seperti cara kunci API biasanya digunakan, kunci API untuk layanan Firebase tidak digunakan untuk mengontrol akses ke sumber daya backend ; yang hanya dapat dilakukan dengan Aturan Keamanan Firebase (untuk mengontrol pengguna mana yang dapat mengakses sumber daya) dan App Check (untuk mengontrol aplikasi mana yang dapat mengakses sumber daya).
Biasanya, Anda perlu menjaga kunci API dengan cermat (misalnya, dengan menggunakan layanan vault atau menyetel kunci sebagai variabel lingkungan); namun, kunci API untuk layanan Firebase boleh disertakan dalam kode atau file konfigurasi check-in.
Meskipun kunci API untuk layanan Firebase aman untuk disertakan dalam kode, ada beberapa kasus khusus saat Anda harus menerapkan batasan untuk kunci API Anda; misalnya, jika Anda menggunakan Firebase ML, Firebase Authentication dengan metode login email/sandi, atau Google Cloud API yang dapat ditagih. Pelajari lebih lanjut tentang kasus ini nanti di halaman ini.
Membuat kunci API
Proyek Firebase dapat memiliki banyak kunci API, tetapi setiap kunci API hanya dapat dikaitkan dengan satu proyek Firebase.
Firebase secara otomatis membuat kunci API untuk proyek Anda saat Anda melakukan salah satu hal berikut:
- Buat proyek Firebase >
Browser key
dibuat otomatis - Buat Aplikasi Apple Firebase >
iOS key
dibuat secara otomatis - Buat Aplikasi Android Firebase >
Android key
dibuat otomatis
Anda juga dapat membuat kunci API Anda sendiri di Google Cloud Console , misalnya untuk pengembangan atau debugging . Pelajari lebih lanjut tentang kapan ini mungkin direkomendasikan nanti di halaman ini.
Menemukan kunci API Anda
Anda dapat melihat dan mengelola semua kunci API proyek Anda di API & Layanan > panel Kredensial di Google Cloud Console.
Anda juga dapat menemukan kunci API mana yang secara otomatis dicocokkan dengan Aplikasi Firebase di tempat berikut. Secara default, semua Aplikasi Firebase proyek Anda untuk platform yang sama (Apple vs Android vs Web) akan menggunakan kunci API yang sama.
Firebase Apple Apps — Temukan kunci API pencocokan otomatis aplikasi di file konfigurasi Firebase,
, di bidangGoogleService-Info.plist API_KEY
.Aplikasi Android Firebase — Temukan kunci API pencocokan otomatis aplikasi di file konfigurasi Firebase,
, di bidanggoogle-services.json current_key
.Aplikasi Web Firebase — Temukan kunci API pencocokan otomatis aplikasi di objek konfigurasi Firebase, di bidang
apiKey
.
Menggunakan kunci API
Kunci API digunakan untuk mengidentifikasi proyek Firebase Anda saat berinteraksi dengan layanan Firebase/Google. Secara khusus, mereka digunakan untuk mengaitkan permintaan API dengan proyek Anda untuk kuota dan penagihan. Mereka juga berguna untuk mengakses data publik.
Misalnya, Anda dapat secara eksplisit menggunakan kunci API dengan meneruskan nilainya ke panggilan REST API sebagai parameter kueri. Contoh ini menunjukkan bagaimana Anda dapat membuat permintaan ke API penyingkat tautan Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Saat aplikasi Anda melakukan panggilan ke Firebase API, aplikasi Anda akan secara otomatis mencari di file/objek konfigurasi Firebase untuk kunci API proyek Anda. Namun, Anda dapat menyetel kunci API menggunakan mekanisme yang berbeda, termasuk variabel lingkungan.
Terapkan batasan pada kunci API (disarankan)
Meskipun tidak perlu memperlakukan kunci API untuk layanan Firebase sebagai rahasia, ada beberapa kasus tertentu (lihat di bawah) di mana Anda mungkin ingin mengambil tindakan tambahan untuk melindungi proyek Anda dari penyalahgunaan kunci API.
Kencangkan kuota jika Anda menggunakan Otentikasi berbasis kata sandi
Jika Anda menggunakan Firebase Authentication berbasis kata sandi dan seseorang mendapatkan kunci API Anda, mereka tidak akan dapat mengakses database proyek Firebase atau data Cloud Storage Anda selama data ini dilindungi oleh Aturan Keamanan Firebase . Namun, mereka dapat menggunakan kunci API Anda untuk mengakses titik akhir autentikasi Firebase dan membuat permintaan autentikasi terhadap proyek Anda.
Untuk mengurangi kemungkinan seseorang menyalahgunakan kunci API untuk mencoba serangan brute force, Anda dapat memperketat kuota default titik akhir identitytoolkit.googleapis.com
untuk mencerminkan ekspektasi lalu lintas normal aplikasi Anda. Ketahuilah bahwa jika Anda memperketat kuota ini dan aplikasi Anda tiba-tiba mendapatkan pengguna, Anda mungkin mendapatkan kesalahan saat masuk hingga Anda menambah kuota. Anda dapat mengubah kuota API proyek Anda di Google Cloud Console .
Gunakan kunci API terpisah yang dibatasi untuk jenis API tertentu
Meskipun kunci API yang digunakan untuk layanan Firebase umumnya tidak perlu diperlakukan sebagai rahasia, Anda harus mengambil beberapa tindakan pencegahan ekstra dengan kunci API yang digunakan untuk memberikan akses ke Google Cloud API yang telah Anda aktifkan secara manual.
Jika Anda menggunakan Google Cloud API (pada platform apa pun) yang tidak otomatis diaktifkan oleh Firebase (artinya Anda mengaktifkannya sendiri), Anda harus mempertimbangkan untuk membuat kunci API terpisah yang dibatasi untuk digunakan dengan API tersebut. Ini sangat penting jika API ditujukan untuk layanan Google Cloud yang dapat ditagih.
Misalnya, jika Anda menggunakan Cloud Vision API Firebase ML di iOS, Anda harus membuat kunci API terpisah yang hanya Anda gunakan untuk mengakses Cloud Vision API.
Dengan menggunakan kunci API terpisah yang dibatasi untuk API non-Firebase, Anda dapat merotasi atau mengganti kunci bila perlu dan menambahkan batasan tambahan ke kunci API tanpa mengganggu penggunaan layanan Firebase.
Petunjuk ini menjelaskan cara membuat kunci API terpisah yang dibatasi untuk API palsu yang disebut Super Service API
.
Langkah 1: Konfigurasikan kunci API Anda yang ada untuk melarang akses ke Super Service API
Buka halaman Kredensial Google Cloud Console. Saat diminta, pilih proyek Anda.
Untuk setiap kunci API yang ada dalam daftar, buka tampilan pengeditan.
Di bagian Pembatasan API , pilih Batasi kunci , lalu tambahkan ke daftar semua API yang Anda inginkan agar dapat diakses oleh kunci API. Pastikan untuk tidak menyertakan API yang Anda buatkan kunci API terpisahnya (dalam contoh ini,
Super Service API
).Saat Anda mengonfigurasi pembatasan API kunci API , Anda secara eksplisit mendeklarasikan API yang aksesnya dimiliki kunci tersebut. Secara default, ketika bagian pembatasan API telah dipilih Jangan batasi kunci , kunci API dapat digunakan untuk mengakses API apa pun yang diaktifkan untuk proyek tersebut.
Sekarang, kunci API Anda yang ada tidak akan memberikan akses ke Super Service API
, tetapi setiap kunci akan terus berfungsi untuk API apa pun yang Anda tambahkan ke daftar pembatasan API -nya.
Langkah 2: Buat dan gunakan kunci API baru untuk akses ke Super Service API
Kembali ke halaman Kredensial . Pastikan proyek Firebase Anda masih dipilih.
Klik Buat kredensial > Kunci API . Catat kunci API baru, lalu klik Batasi kunci .
Di bagian pembatasan API , pilih Restrict key , lalu tambahkan ke daftar hanya
Super Service API
.Kunci API baru ini hanya memberikan akses ke
Super Service API
.Konfigurasikan aplikasi dan layanan Anda untuk menggunakan kunci API baru.
Gunakan 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 sesuai. Misalnya, instance aplikasi staging Anda tidak boleh berbicara dengan project Firebase produksi Anda. Ini juga berarti bahwa aplikasi staging Anda perlu menggunakan kunci API yang terkait dengan project Firebase staging Anda.
Untuk mengurangi masalah dalam mempromosikan perubahan kode dari pengembangan ke staging hingga produksi, alih-alih menyertakan kunci API dalam kode itu sendiri, tetapkan sebagai variabel lingkungan atau sertakan dalam file konfigurasi.
Perhatikan bahwa jika Anda menggunakan Firebase Local Emulator Suite untuk pengembangan bersama dengan Firebase ML, Anda harus membuat dan menggunakan kunci API khusus debug. Petunjuk untuk membuat kunci semacam itu dapat ditemukan di dokumen Firebase ML .
FAQ
Anda dapat menggunakan salah satu opsi berikut untuk menentukan kunci API mana yang dikaitkan dengan Aplikasi Firebase Anda:
Konsol Firebase
Buka proyek , lalu gulir ke bawah ke kartu Aplikasi Anda .
Pilih aplikasi yang menarik.
Dapatkan file/objek konfigurasi Firebase untuk aplikasi yang diinginkan, lalu temukan kunci API-nya:
Apple : Unduh
GoogleService-Info.plist
, lalu temukan bidangAPI_KEY
Android : Unduh
google-services.json
, temukan konfigurasi untuk aplikasi yang diinginkan (cari nama paketnya), lalu temukan bidangcurrent_key
Web : Pilih opsi Config , lalu cari field
apiKey
Firebase CLI
Dapatkan file/objek konfigurasi Firebase untuk aplikasi yang diinginkan dengan menjalankan perintah berikut:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (salah satu):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : pengidentifikasi unik yang ditetapkan oleh Firebase untuk Aplikasi Firebase Anda ( temukan ID Aplikasi Anda )
- PLATFORM (salah satu):
Dalam konfigurasi Firebase yang dicetak aplikasi, temukan kunci API-nya:
Apple : Temukan bidang
API_KEY
Android : Temukan konfigurasi untuk aplikasi yang diinginkan (cari nama paketnya), lalu temukan bidang
current_key
Web : Temukan bidang
apiKey
REST API
Dapatkan
apiKeyId
(UID) dari kunci API dengan memanggil endpoint yang berlaku untuk aplikasi yang diinginkan, lalu meneruskan nilaiapiKeyId
ke langkah berikutnya.- Apple : Hubungi
projects.iosApps.get
- Android : Panggil
projects.androidApps.get
- Web : Hubungi
projects.webApps.get
- Apple : Hubungi
Dapatkan string kunci API dengan memanggil
projects.locations.keys.getKeyString
.keyString
ini adalah nilai yang sama yang dapat ditemukan di artefak konfigurasi Aplikasi ( Apple | Android | Web ).
Firebase Apple Apps — Setiap aplikasi memiliki file konfigurasinya sendiri dan hanya dapat mencantumkan satu kunci API.
Aplikasi Android Firebase — Semua aplikasi Android di proyek Firebase terdaftar dalam file konfigurasi yang sama, dan setiap aplikasi hanya dapat memiliki satu kunci API yang terdaftar. Setiap aplikasi dalam file konfigurasi ini dapat memiliki daftar kunci yang berbeda.
Aplikasi Web Firebase — Setiap aplikasi memiliki objek konfigurasinya sendiri dan hanya dapat mencantumkan satu kunci API.
Anda dapat menggunakan beberapa kunci API dengan satu aplikasi. Anda harus menyediakan mekanisme bagi aplikasi Anda untuk mengakses kunci API lain ini, seperti melalui variabel lingkungan. Mekanisme untuk mengakses kunci API lainnya tidak dapat bergantung pada kunci API yang tercantum dalam file/objek konfigurasi Firebase Anda.
Saat Anda pertama kali mendapatkan file/objek konfigurasi Firebase aplikasi Anda , Firebase akan memeriksa apakah ada kunci API yang ada di proyek Anda yang memiliki "Pembatasan Aplikasi" yang cocok dengan aplikasi (misalnya, ID bundel yang cocok untuk aplikasi Apple).
Jika Firebase tidak menemukan kunci terbatas yang cocok, maka Firebase akan mencantumkan dalam file konfigurasi/objek iOS key
untuk aplikasi Apple, Android key
Android untuk aplikasi Android, dan Browser key
untuk aplikasi web (dengan asumsi bahwa kunci ini ada dan tidak memiliki "Pembatasan Aplikasi" yang membuat mereka tidak cocok dengan aplikasi itu).
Ya, Anda dapat menghapus kunci API secara manual dari file/objek konfigurasi Anda. Namun, Anda harus menyediakan beberapa mekanisme lain agar aplikasi Anda dapat mengakses kunci API (seperti melalui variabel lingkungan). Jika tidak, panggilan apa pun ke layanan Firebase akan gagal.
Ya, Anda dapat mengedit file/objek konfigurasi secara manual untuk mengaitkan kunci API yang berbeda dengan aplikasi.
Perhatikan bahwa jika Anda mendapatkan kembali file/objek konfigurasi aplikasi Anda dari konsol, itu akan selalu mencantumkan kunci API yang secara otomatis cocok dengan aplikasi tersebut oleh Firebase . Jadi, Anda harus mengulangi pengeditan manual, sesuai kebutuhan.
Tidak, kunci API hanya mengidentifikasi proyek tertentu dan tidak dapat dipindahkan ke proyek lain.
Berikut adalah beberapa penyebab paling umum untuk kunci API yang tidak valid:
Kunci API memiliki "Pembatasan Kunci API" yang diterapkan padanya yang membuatnya tidak cocok dengan aplikasi yang mencoba menggunakan kunci ("Pembatasan Aplikasi") atau tidak dapat digunakan untuk API yang dipanggil ("Pembatasan API").
Kunci API telah dihapus dari proyek di Google Cloud Console.
Kunci API tidak dibuat untuk ID Proyek yang tercantum dalam file/objek konfigurasi Firebase aplikasi.
Salah satu cara untuk memperbaiki masalah ini adalah dengan mendapatkan versi terbaru dari file/objek konfigurasi Firebase aplikasi Anda , lalu ganti file/objek konfigurasi lama Anda dengan file/objek baru yang diperbarui. Sebelum mengirim file konfigurasi untuk diunduh atau menampilkan objek konfigurasi di konsol, Firebase memeriksa apakah kunci API yang tercantum cocok dengan aplikasi .
Kunci API yang digunakan oleh aplikasi web Anda mungkin memiliki "Pembatasan API" yang diterapkan padanya. Jika demikian, pastikan Firebase Management API ada dalam daftar API yang diizinkan.
Jika Anda menghapus kunci API yang digunakan oleh suatu aplikasi, maka panggilan API dari aplikasi tersebut akan gagal. Anda mungkin mendapatkan laporan, email, atau kesalahan bahwa Anda mencoba menggunakan kunci API yang tidak valid.
Menghapus kunci API bersifat permanen dan tidak dapat diurungkan.