Melindungi kredensial Cloud aplikasi Android Firebase ML Anda
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Jika aplikasi Android Anda menggunakan salah satu Cloud API Firebase ML, sebelum meluncurkan
aplikasi di lingkungan production, Anda harus menjalankan beberapa langkah tambahan untuk mencegah
akses API tanpa izin.
Untuk aplikasi produksi, Anda harus memastikan bahwa hanya klien yang telah diautentikasi yang dapat
mengakses layanan cloud. (Perhatikan bahwa hanya perangkat yang tidak di-root yang dapat mengautentikasi menggunakan metode yang dijelaskan di sini.)
Selanjutnya, Anda akan membuat kunci API khusus debug yang dapat digunakan untuk memudahkan pengujian dan pengembangan.
1. Daftarkan aplikasi produksi ke Firebase
Pertama, daftarkan aplikasi produksi ke Firebase.
Pastikan Anda memiliki tanda tangan SHA-1 aplikasi. Baca bagian
Mengautentikasi klien
untuk mempelajari cara mendapatkannya.
Buka settingsProject settings di Firebase console, lalu pilih tab
Settings.
Scroll ke bawah ke kartu Your apps, lalu pilih aplikasi Android Anda.
Tambahkan tanda tangan SHA-1 aplikasi Anda ke informasi aplikasi.
2. Batasi cakupan kunci API
Selanjutnya, konfigurasi kunci API yang ada untuk melarang akses ke Cloud Vision
API:
Buka halaman Credentials 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 Cloud Vision 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 dipilih 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 layanan ML cloud, tetapi setiap kunci akan tetap berfungsi untuk setiap API yang Anda tambahkan ke daftar API restrictions.
Perhatikan bahwa jika Anda mengaktifkan API tambahan di masa mendatang, Anda harus menambahkannya ke daftar API restrictions untuk kunci API yang berlaku.
3. Buat dan gunakan kunci API khusus debug
Terakhir, buat kunci API baru yang akan digunakan hanya untuk pengembangan. Firebase ML dapat
menggunakan kunci API ini untuk mengakses layanan Google Cloud di lingkungan yang tidak
mendukung autentikasi aplikasi, seperti saat berjalan di emulator.
Buat kunci API baru yang akan digunakan untuk pengembangan:
Buka halaman Credentials di
Google Cloud console. Saat diminta, pilih project Anda.
Klik Create credentials > API key dan catat kunci API yang baru. Dengan kunci ini, API dapat diakses dari aplikasi yang tidak diautentikasi.
Oleh karena itu, pastikan kerahasiaan kunci ini terjaga.
Untuk memastikan kunci API debug baru tidak bocor bersama aplikasi yang Anda rilis,
tentukan kunci API debug dalam file manifes Android yang digunakan hanya untuk build
debug:
Jika belum memiliki manifes debug, Anda dapat membuatnya dengan mengklik
File > New > Other > Android Manifest File, lalu pilih debug
dari set sumber target.
Pada aplikasi Anda, konfigurasikan Firebase ML untuk menggunakan pencocokan sidik jari sertifikat guna
mengautentikasi klien dalam lingkungan production dan menggunakan kunci API—kunci
debug—hanya dalam build debug:
Kotlin
valoptionsBuilder=FirebaseVisionCloudImageLabelerOptions.Builder()if(!BuildConfig.DEBUG){// Requires physical, non-rooted device:optionsBuilder.enforceCertFingerprintMatch()}// Set other options. For example:optionsBuilder.setConfidenceThreshold(0.8f)// ...// And lastly:valoptions=optionsBuilder.build()FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
FirebaseVisionCloudImageLabelerOptions.BuilderoptionsBuilder=newFirebaseVisionCloudImageLabelerOptions.Builder();if(!BuildConfig.DEBUG){// Requires physical, non-rooted device:optionsBuilder.enforceCertFingerprintMatch();}// Set other options. For example:optionsBuilder.setConfidenceThreshold(0.8f);// ...// And lastly:FirebaseVisionCloudImageLabelerOptionsoptions=optionsBuilder.build();FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-31 UTC."],[],[],null,["\u003cbr /\u003e\n\nIf your Android app uses one of Firebase ML's cloud APIs, before you launch your\napp in production, you should take some additional steps to prevent\nunauthorized API access.\n\nFor your production apps, you will ensure that only authenticated clients can\naccess cloud services. (Note that only non-rooted devices can authenticate using\nthe method described.)\n\nThen, you will create a debug-only API key that you can use for convenience\nduring testing and development.\n\n1. Register your production apps with Firebase\n\nFirst, register your production apps with Firebase.\n\n1. Make sure that you have your app's SHA-1 signatures. Refer to\n [Authenticating your client](//developers.google.com/android/guides/client-auth)\n to learn how.\n\n2. Go to your settings\n *Project settings* in the Firebase console, then select the *Settings*\n tab.\n\n3. Scroll down to the *Your apps* card, then select your Android app.\n\n4. Add your app's SHA-1 signature to your app's information.\n\n2. Restrict the scope of your API keys\n\nNext, configure your existing API keys to disallow access to the Cloud Vision\nAPI:\n\n1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n2. For each existing API key in the list, open the editing view.\n\n3. In the *API restrictions* section, select **Restrict key** , then add to the\n list all of the APIs to which you want the API key to have access. Make sure\n to ***not*** include the Cloud Vision API.\n\n When you configure an API key's *API restrictions* , you are explicitly\n declaring the APIs to which the key has access. **By default, when the *API\n restrictions* section has *Don't restrict key* selected, an API key can be\n used to access any API that is enabled for the project.**\n\nNow, your existing API keys will not grant access to cloud ML services, but each\nkey will continue to work for any APIs that you added to its *API restrictions*\nlist.\n\nNote that if you enable any additional APIs in the future, you must add them to\nthe *API restrictions* list for the applicable API key.\n\n3. Create and use a debug-only API key\n\nFinally, create a new API key to be used only for development. Firebase ML can\nuse this API key to access Google Cloud services in environments where app\nauthentication isn't possible, such as when running on emulators.\n\n1. Create a new API key to be used for development:\n\n 1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n 2. Click **Create credentials \\\u003e API key** and take note of the new API\n key. This key allows API access from unauthenticated apps, so\n **keep this key confidential**.\n\n2. To ensure the new debug API key is not leaked with your released app,\n specify the debug API key in an Android manifest file used only for debug\n builds:\n\n 1. If you don't already have a debug manifest, create one by clicking\n **File \\\u003e New \\\u003e Other \\\u003e Android Manifest File** and selecting `debug`\n from the target source sets.\n\n 2. In the debug manifest, add the following declaration:\n\n ```text\n \u003capplication\u003e\n \u003cmeta-data\n android:name=\"com.firebase.ml.cloud.ApiKeyForDebug\"\n android:value=\"your-debug-api-key\" /\u003e\n \u003c/application\u003e\n ```\n3. In your app, configure Firebase ML to use certificate fingerprint matching to\n authenticate your client in production and to use API keys---the debug\n key---only in debug builds:\n\n Kotlin \n\n ```kotlin\n val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch()\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f)\n // ...\n\n // And lastly:\n val options = optionsBuilder.build()\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)https://github.com/firebase/snippets-android/blob/b694d4dbd411d31be39655f47691c3e9f3529b03/mlkit/app/src/main/java/com/google/firebase/example/mlkit/kotlin/MainActivity.kt#L30-L42\n ```\n\n Java \n\n ```java\n FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =\n new FirebaseVisionCloudImageLabelerOptions.Builder();\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch();\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f);\n // ...\n\n // And lastly:\n FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);https://github.com/firebase/snippets-android/blob/b694d4dbd411d31be39655f47691c3e9f3529b03/mlkit/app/src/main/java/com/google/firebase/example/mlkit/MainActivity.java#L30-L43\n ```\n\nNext steps\n\nSee the [launch checklist](/support/guides/launch-checklist) for information on\npreparing your app to launch when using other Firebase features."]]