Buka konsol

Melindungi kredensial Cloud aplikasi iOS ML Kit Anda

Jika aplikasi iOS Anda menggunakan salah satu Cloud API ML Kit, sebelum meluncurkan aplikasi dalam produksi, Anda harus menjalankan beberapa langkah tambahan untuk mencegah akses API tanpa izin.

1. Kurangi cakupan kunci API yang ada

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

  1. Buka halaman Kredensial pada Cloud Console. Saat diminta, pilih project dengan nama yang sama seperti project Firebase Anda.

  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.

    Saat mengonfigurasi Pembatasan API untuk kunci API, Anda secara eksplisit menyatakan API yang dapat diakses oleh kunci. Secara default, jika bagian Pembatasan API kosong, 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 kunci tersebut akan tetap berfungsi untuk setiap API yang Anda aktifkan sendiri, atau yang diaktifkan secara otomatis saat Anda menyiapkan Firebase.

Perhatikan bahwa jika Anda mengaktifkan API tambahan di waktu mendatang, Anda juga harus menambahkannya ke daftar Pembatasan API untuk kunci API tersebut.

2. Buat kunci API baru untuk digunakan dengan ML Kit

Selanjutnya, buat kunci API baru untuk ML Kit yang hanya mengizinkan panggilan ke Cloud Vision API:

  1. Kembali ke halaman Kredensial. Pastikan project Firebase Anda masih dipilih.

  2. Klik Buat kredensial > Kunci API. Catat kunci API baru ini, lalu klik Batasi kunci.

  3. Di bagian Pembatasan Kunci, tambahkan Cloud Vision API saja ke dalam daftar.

Kunci API ini hanya memberikan akses ke Cloud Vision API dan dapat digunakan oleh ML Kit untuk mengakses model berbasis cloud.

Untuk membantu mengurangi konsekuensi kunci yang disusupi, Anda harus mengurangi kuota per pengguna Cloud Vision API dari setelan defaultnya. Untuk melakukannya:

  1. Buka halaman Kuota Cloud Vision API dari konsol Cloud. (Saat diminta, pilih project dengan nama yang sama seperti project Firebase Anda.)

  2. Di bagian Permintaan, tetapkan kuota Permintaan per menit per pengguna yang masuk akal bagi aplikasi Anda. Misalnya, jika aplikasi Anda mengupload gambar dokumen dan mengembalikan hasil gambar sebagai teks, kemungkinan pengguna tidak akan melakukannya lebih dari sekali setiap beberapa detik, sehingga kuota 30-40 mungkin akan aman.

    Perhatikan bahwa dalam konteks ini "permintaan per pengguna" mengacu pada permintaan dari satu alamat IP. Pertimbangkan hal ini jika Anda mengharapkan banyak pengguna menggunakan aplikasi Anda pada waktu yang bersamaan melalui NAT.

4. Panggil Cloud APIs menggunakan kunci API ML Kit

Terakhir, di aplikasi Anda, konfigurasi ML Kit agar menggunakan kunci API baru.

Karena kunci API ML Kit mengizinkan akses yang tidak diautentikasi ke Cloud Vision API, kerahasiaan kunci harus dijaga guna mencegah penggunaan dan tagihan tidak sah ke akun penagihan Anda. Caranya, usahakan untuk tidak memasukkan kunci API ke biner aplikasi Anda. Sebagai gantinya, pada saat runtime aplikasi, verifikasi bahwa pengguna yang dikenal baik sudah login, dan baru setelah itu, ambil kunci API dari server.

Bahkan dengan menerapkan praktik ini pun, kunci API tetap bisa disusupi. Anda harus mengambil langkah untuk membantu mengurangi konsekuensi kunci yang disusupi, seperti mengurangi kuota per pengguna API seperti yang dijelaskan di atas, menerapkan kebijakan rotasi kunci, dan menerbitkan kunci yang berbeda untuk kelompok pengguna berbeda.

Setelah aplikasi Anda mendapatkan kunci API dengan aman, saat ingin memanggil Cloud API ML Kit, tentukan kunci:

Swift

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Objective-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

Selain itu, Anda harus mengikuti saran umum dalam Mengamankan kunci API.

Langkah berikutnya

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