Praktik terbaik kunci API

Kunci API diperlukan untuk aplikasi dan project yang menggunakan API dan SDK Google Maps Platform. Dokumen ini mengidentifikasi tujuan penggunaan kunci API, cara melindunginya seperti yang Anda lakukan untuk kredensial lainnya, dan pembatasan yang sesuai untuk project Anda.

Apa yang dimaksud dengan kunci API?

Kunci API adalah kredensial berorientasi project yang memiliki dua tujuan:

  • Identifikasi Project.
    Mengidentifikasi aplikasi atau project yang melakukan panggilan ke API atau SDK.
  • Otorisasi Project.
    Memeriksa apakah aplikasi yang melakukan panggilan telah diberi akses untuk memanggil API atau SDK dan telah mengaktifkan API atau SDK di dalam project.

Ketika kunci API dibuat, kunci API tersebut akan dikaitkan dengan project. Dengan mengidentifikasi project yang melakukan panggilan, kunci API memungkinkan informasi penggunaan dikaitkan dengan project tersebut, dan membantu memastikan panggilan dari project lain ditolak.

Melindungi kunci API

Anda harus mengamankan kunci API di aplikasi Anda untuk semua produk Google Maps Platform yang digunakan oleh aplikasi Anda. Anda dapat mengamankan kunci API dengan menetapkan pembatasan dan menerapkan praktik terbaik yang sesuai untuk API Google Maps Platform di aplikasi Anda. Menampilkan kredensial yang tidak aman kepada publik dapat menyebabkan penggunaan yang tidak diinginkan, yang dapat menimbulkan tagihan tidak terduga pada akun Anda.

Praktik berikut menjelaskan strategi untuk membantu melindungi kunci API Anda. Praktik yang berlaku untuk setiap produk Google Maps Platform, seperti Maps JavaScript API, tercantum di bagian Praktik terbaik dan pembatasan kunci API.

  • Membatasi kunci API Anda. Cara terbaik untuk melindungi kunci API Anda adalah dengan membatasinya ke alamat IP spesifik, URL perujuk atau aplikasi seluler, dan API spesifik, karena hal ini akan mengurangi dampak dari penyusupan kunci secara signifikan.

    Anda dapat menentukan pembatasan aplikasi dan API untuk kunci dari konsol dengan membuka halaman Kredensial, lalu membuat kunci API baru dengan setelan yang Anda inginkan, atau mengedit setelan kunci API. Lihat bagian Membatasi kunci API untuk detail selengkapnya.

  • Gunakan kunci API independen untuk aplikasi yang berbeda. Hal ini akan membatasi cakupan setiap kunci. Jika kunci API disusupi, Anda dapat menghapus dan mencabut kunci yang terdampak tanpa harus memperbarui kunci API lainnya.
  • Hapus kunci API yang tidak diperlukan.

    Cara menghapus kunci API:

    1. Buka panel kredensial.
    2. Pilih kunci API yang ingin dihapus.
    3. Klik tombol Hapus di dekat bagian atas halaman.
    4. Saat pop-up Hapus kredensial muncul, klik HAPUS.
  • Berhati-hatilah saat membuat ulang kunci API. Jika waktu yang diperlukan untuk memigrasikan aplikasi Anda dari kunci API lama ke kunci API baru yang dibuat ulang melebihi 24 jam, instance yang tidak diperbarui akan mengalami error karena merujuk ke kunci lama, yang dihancurkan 24 jam setelah pembuatan kunci baru.

    Saat Anda membuat ulang kunci API, hal-hal berikut akan terjadi:

    • Kunci baru hasil dari proses pembuatan ulang.
    • Kunci baru akan menerima semua pembatasan dari kunci lama.
    • Periode 24 jam, yang menandai jangka waktu hingga kunci lama dihancurkan, akan dimulai.
  • Pantau penggunaan API Anda untuk mendeteksi anomali. Jika Anda menemukan penggunaan yang tidak diotorisasi, rotasi kunci Anda dan laporkan kepada Google.

    Sebelum melakukan rotasi kunci, simpan pembatasan yang terkait dengan kunci tersebut dengan membuat salinannya dalam file.

  • Pada aplikasi yang menggunakan Maps Web Service API atau Static Web API, gunakan metode berikut untuk mengamankan aplikasi dan kunci API Anda:

  • Pada aplikasi seluler yang menggunakan Web Service API atau Static Web API, coba gunakan salah satu atau beberapa teknik berikut untuk meningkatkan keamanan kunci API atau rahasia penandatanganan Anda:

Membatasi kunci API

Kunci API adalah kredensial, dan Anda harus mengelolanya dengan berhati-hati. Setidaknya, ikutilah rekomendasi di bawah ini untuk menjaga kunci Anda tetap aman, dan untuk memastikan bahwa Anda telah menerapkan pembatasan untuk mengurangi dampak penyusupan kunci API.

Anda dapat membatasi kunci API dengan menentukan pembatasan aplikasi, atau satu atau beberapa pembatasan API.

Pembatasan aplikasi membatasi penggunaan kunci API untuk situs tertentu (alamat IP dan situs) atau platform tertentu (Android dan iOS). Anda dapat memilih maksimal satu pembatasan dari kategori ini (lihat API Google Maps Platform berdasarkan Platform).

Pembatasan API membatasi penggunaan kunci API untuk satu atau beberapa API atau SDK Google Maps Platform. Permintaan untuk menggunakan API atau SDK yang terkait dengan kunci API akan diproses. Permintaan untuk menggunakan API atau SDK yang tidak terkait dengan kunci API akan gagal. Untuk kunci API, Anda dapat menentukan pembatasan API sebanyak yang diperlukan. Pastikan API atau SDK yang terkait dengan kunci API mendukung pembatasan aplikasi yang ditetapkan untuk kunci API tersebut.

Untuk menetapkan pembatasan aplikasi pada kunci API

  1. Buka panel kredensial.
  2. Pilih kunci API yang ingin Anda batasi. Halaman properti kunci API akan muncul.
  3. Di bagian Pembatasan kunci, pilih Pembatasan aplikasi.
    Pilih salah satu jenis pembatasan dan berikan informasi yang diminta sesuai dengan daftar pembatasan.
    Jenis pembatasan Deskripsi
    Perujuk HTTP

    Menerima permintaan dari daftar situs yang Anda berikan.

    Di bawah jenisnya, tentukan satu atau beberapa situs perujuk. Karakter pengganti boleh digunakan untuk penamaan situs yang serupa. Contohnya, *.google.com akan menerima semua situs yang diakhiri dengan google.com, misalnya https://developers.google.com.

    Alamat IP

    Menerima permintaan dari daftar alamat IP server web yang Anda berikan.

    Di bawah jenisnya, tentukan satu alamat IPv4 atau IPv6, atau subnet menggunakan notasi CIDR (misalnya 192.168.0.0/22). Jika Anda perlu memasukkan entri lain, kotak baru akan muncul setelah Anda selesai menambahkan entri sebelumnya.

    Aplikasi Android

    Menambahkan nama paket dan sidik jari sertifikat penandatanganan SHA-1 untuk membatasi penggunaan pada aplikasi Android Anda.

    Di bawah jenisnya, tambahkan sidik jari sertifikat penandatanganan SHA-1 dan nama paket Android Anda dari file AndroidManifest.xml Anda.

    Aplikasi iOS

    Menerima permintaan dari aplikasi iOS dengan ID paket yang Anda berikan.

    Di bawah jenisnya, pilih ID paket iOS yang sesuai dari daftar.

  4. Klik Simpan.
    Setelah langkah ini, pembatasan akan menjadi bagian dari definisi kunci API. Jika Anda gagal memberikan detail yang sesuai atau tidak mengklik “Simpan”, kunci API tidak akan dibatasi. (Untuk informasi lebih lanjut, lihat panduan Mendapatkan Kunci API untuk API atau SDK tertentu yang Anda minati.)

Untuk menetapkan pembatasan API pada kunci API

  1. Buka panel kredensial.
  2. Pilih kunci API yang ingin Anda batasi.
    Halaman Membatasi dan mengganti nama kunci API akan muncul.
  3. Di bagian Pembatasan API:
    • Klik Batasi kunci.
    • Klik drop-down Pilih API, lalu pilih API atau SDK yang Anda inginkan untuk diakses oleh aplikasi Anda menggunakan kunci API. (Jika API atau SDK tidak tercantum, Anda harus mengaktifkannya.)
  4. Klik Simpan.
    Setelah langkah ini, pembatasan akan menjadi bagian dari definisi kunci API. Jika Anda gagal memberikan detail yang sesuai atau tidak mengklik “Simpan”, kunci API tidak akan dibatasi. (Untuk informasi lebih lanjut, lihat panduan Mendapatkan Kunci API untuk API atau SDK tertentu yang Anda minati.)

Praktik terbaik dan pembatasan kunci API

Tabel berikut mencantumkan praktik terbaik dan pembatasan kunci API yang sesuai untuk setiap API, SDK, atau Layanan Google Maps Platform.

Situs dengan Maps JavaScript API, Maps Embed API, atau Maps Static API

API/SDK/Layanan Pembatasan Aplikasi(1) Pembatasan API(1) Praktik Terbaik
Maps JavaScript API(2) Pembatasan perujuk HTTP Maps JavaScript API
Directions Service, Maps JavaScript API Pembatasan perujuk HTTP Directions API, Maps JavaScript API
Distance Matrix Service, Maps JavaScript API Pembatasan perujuk HTTP Distance Matrix API, Maps JavaScript API
Elevation Service, Maps JavaScript API Pembatasan perujuk HTTP Elevation API, Maps JavaScript API
Geocoding Service, Maps JavaScript API Pembatasan perujuk HTTP Geocoding API, Maps JavaScript API
Places Library, Maps JavaScript API Pembatasan perujuk HTTP Places API, Maps JavaScript API
Maps Embed API Pembatasan perujuk HTTP Maps Embed API
Maps Static API Pembatasan perujuk HTTP Maps Static API
Street View Static API Pembatasan perujuk HTTP Street View Static API

Aplikasi dan server yang menggunakan layanan web

API/SDK/Layanan Pembatasan Aplikasi(1) Pembatasan API(1) Praktik Terbaik
Directions API Pembatasan alamat IP(4) Directions API
Distance Matrix API Pembatasan alamat IP(4) Distance Matrix API
Elevation API Pembatasan alamat IP(4) Elevation API
Geocoding API Pembatasan alamat IP(4) Geocoding API
Geolocation API Pembatasan alamat IP(4) Geolocation API
Places API(5) Pembatasan alamat IP(4) Places API
Roads API Pembatasan alamat IP(4) Roads API
Time Zone API Pembatasan alamat IP(4) Time Zone API

Aplikasi Android

API/SDK/Layanan Pembatasan Aplikasi(1) Pembatasan API(1) Praktik Terbaik
Maps SDK for Android Pembatasan Android Maps SDK for Android
Places SDK for Android Pembatasan Android Places API

Aplikasi iOS

API/SDK/Layanan Pembatasan Aplikasi(1) Pembatasan API(1) Praktik Terbaik
Maps SDK for iOS Pembatasan iOS Maps SDK for iOS
Places SDK for iOS Pembatasan iOS Places API

1 Anda dapat menggunakan kunci API yang tidak dibatasi pada semua API atau SDK Google Maps Platform. Namun, sebaiknya batasi kunci API Anda, terutama dalam skenario berikut:

  • Lingkungan pengujian dapat atau akan dapat dilihat oleh publik.
  • Aplikasi yang akan menggunakan kunci API telah siap digunakan di lingkungan produksi.

2 Untuk aplikasi seluler, sebaiknya gunakan Maps SDK for Android dan Maps SDK for iOS native.

3 Untuk Maps Static API dan Street View Static API, selain kunci API, Anda juga harus menyediakan tanda tangan digital untuk melebihi kuota harian sebanyak 25.000 beban peta.

Catatan: Rahasia bersama yang digunakan untuk penandatanganan membutuhkan setidaknya tingkat keamanan yang sama dengan kunci API yang digunakan pada Maps Web Service API.

Jika Anda perlu menandatangani permintaan gambar secara dinamis, lakukanlah di sisi server. Jika aplikasi Anda mengandalkan input sisi klien untuk membuat gambar statis, amankan aplikasi Anda menggunakan salah satu atau beberapa teknik berikut:

Jika Anda menandatangani permintaan Anda, tinjau juga jumlah permintaan tak bertanda tangan yang ingin Anda izinkan per hari, dan sesuaikan kuota permintaan tak bertanda tangan berdasarkan hal tersebut.

4 Pembatasan IP mungkin tidak praktis, misalnya pada aplikasi seluler dan lingkungan cloud yang mengandalkan alamat IP dinamis. Saat menggunakan Maps Web Service API dalam skenario ini, amankan aplikasi Anda menggunakan salah satu atau beberapa teknik berikut:

5 Untuk aplikasi seluler, sebaiknya gunakan Places SDK for Android dan Places SDK for iOS native.