Melindungi kredensial Cloud pada aplikasi Android ML Kit Anda

Jika aplikasi Android menggunakan salah satu Cloud API ML Kit, sebelum meluncurkan aplikasi dalam produksi, 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 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.

Cara tercepat untuk melakukannya adalah dengan menautkan Project Firebase Anda ke Google Play. Anda dapat melakukannya dari bagian Integrasi pada setelan project di Firebase console.

Saat Anda menautkan project, tanda tangan SHA-1 aplikasi produksi Anda akan diimpor ke project Firebase, yang dapat dikonfirmasi di halaman Setelan. Perhatikan bahwa menautkan project Firebase dan Google Play juga menjadikan data Google Play lainnya, termasuk statistik error dan pendapatan, dapat diakses oleh Firebase, dan data Firebase, termasuk analisis, dapat diakses oleh Google Play.

Atau, jika tidak ingin berbagi data antara project Firebase dan Google Play, Anda dapat menentukan tanda tangan SHA-1 aplikasi Anda sendiri di halaman Setelan. Baca bagian Mengautentikasi klien untuk mempelajari cara mendapatkan tanda tangan SHA-1 aplikasi Anda.

2. Batasi cakupan kunci API

Selanjutnya, konfigurasi kunci API yang ada untuk melarang akses ke Cloud Vision API:

  1. Buka halaman Kredensial pada Cloud Console.

  2. Untuk setiap kunci API dalam daftar, buka tampilan edit, dan di bagian Pembatasan Kunci, tambahkan semua API yang tersedia ke dalam daftar, kecuali Cloud Vision API.

3 Buat dan gunakan kunci API khusus debug

Terakhir, buat kunci API baru yang akan digunakan hanya untuk pengembangan. ML Kit dapat menggunakan kunci API ini untuk mengakses layanan Cloud di lingkungan yang tidak mendukung autentikasi aplikasi, misalnya saat berjalan di emulator.

  1. Buat kunci API baru yang akan digunakan untuk pengembangan:

    1. Buka halaman Kredensial pada Cloud Console.
    2. Klik Buat kredensial > Kunci API dan catat kunci API yang baru. Dengan kunci ini, API dapat diakses dari aplikasi yang tidak diautentikasi, karena itu pastikan kerahasiaan kunci ini terjaga.
  2. 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:

    1. Jika Anda belum memiliki manifes debug, buatlah terlebih dahulu dengan mengklik File > Baru > Lainnya > File Manifes Android dan pilih debug dari kumpulan sumber target.

    2. Pada manifes debug, tambahkan pernyataan berikut:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. Pada aplikasi Anda, konfigurasi ML Kit agar menggunakan pencocokan sidik jari sertifikat untuk mengautentikasi klien dalam produksi dan menggunakan kunci API—kunci debug—hanya dalam build debug:

    Java
    Android

    FirebaseVisionCloudDetectorOptions.Builder optionsBuilder =
            new FirebaseVisionCloudDetectorOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setModelType(FirebaseVisionCloudDetectorOptions.STABLE_MODEL);
    // ...
    
    // And lastly:
    FirebaseVisionCloudDetectorOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getVisionCloudLabelDetector(options).detectInImage(myImage);

    Kotlin
    Android

    val optionsBuilder = FirebaseVisionCloudDetectorOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setModelType(FirebaseVisionCloudDetectorOptions.STABLE_MODEL)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getVisionCloudLabelDetector(options).detectInImage(myImage)

Langkah berikutnya

Baca checklist peluncuran yang berisi informasi tentang cara menyiapkan aplikasi Anda untuk diluncurkan saat menggunakan fitur Firebase lainnya.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.