Praktik terbaik keamanan API

Kunci API diperlukan untuk aplikasi dan project yang menggunakan API dan SDK Google Maps Platform. Untuk mendapatkan keamanan maksimum dengan upaya minimum, amankan kunci API Anda saat membuatnya.

Meskipun Anda dapat mengamankan kunci API setelah membuat dan menggunakannya, akan ada batasan yang berbeda berdasarkan cara kunci tersebut digunakan. Memperbarui atau mengganti kunci di aplikasi seluler (Android dan iOS) adalah proses yang paling rumit, karena kunci tidak akan diganti semua hingga semua pelanggan mengupdate aplikasi mereka. Memperbarui atau mengganti kunci di aplikasi JavaScript atau Layanan Web jauh lebih mudah, tetapi memperbarui atau mengganti kunci ini tetap memerlukan perencanaan yang cermat dan pekerjaan yang cepat.

Praktik keamanan yang berlaku untuk setiap produk Google Maps Platform, seperti Maps JavaScript API, tercantum di bagian Informasi selengkapnya.

Membatasi kunci API Anda

Saat pertama kali membuat kunci API, Anda dapat membatasinya dengan pembatasan aplikasi, dan satu atau beberapa pembatasan API.

  • Pembatasan aplikasi membatasi penggunaan kunci API untuk platform tertentu (Android atau iOS) atau situs tertentu (alamat IP dan situs publik). Hanya satu jenis pembatasan aplikasi yang dapat ditambahkan ke setiap kunci API.

  • Pembatasan API akan membatasi penggunaan kunci API untuk satu atau beberapa API atau SDK Google Maps Platform. Hanya permintaan untuk menggunakan API atau SDK yang terkait dengan kunci API akan diproses. Untuk setiap kunci API tertentu, Anda dapat menentukan pembatasan API sebanyak yang diperlukan.

Jika Anda tidak mengamankan kunci API saat membuatnya, buat kunci API tambahan dan batasi kunci API tersebut, lalu update semua aplikasi Anda dengan kunci API baru tersebut. Meskipun satu kunci per aplikasi adalah opsi yang ideal untuk tujuan keamanan, Anda dapat menggunakan kunci yang dibatasi pada beberapa aplikasi selama jenis pembatasan aplikasi pada kunci tersebut tidak akan menimbulkan masalah ketidakcocokan dengan aplikasi yang menggunakan kunci yang sama.

Jika Anda membatasi kunci API setelah membuatnya, periksa penggunaan kunci API untuk memastikan pembatasan tidak akan menghentikan aplikasi Anda yang ada.

  1. Buka halaman Metrik Google Cloud Console.

  2. Pilih Tampilkan filter.

  3. Dari Dikelompokkan Berdasarkan, pilih Kredensial. Anda akan melihat kunci API yang digunakan dengan layanan Google.

  4. Klik Kredensial.

  5. Batalkan pilihan semua kredensial.

  6. Untuk setiap kunci yang ditampilkan, pilih kunci lalu klik Oke.

  7. Dari Dikelompokkan Berdasarkan, pilih API. Anda akan melihat pembatasan API yang diterapkan pada kunci tersebut.

    Memilih API method dari Grouped By dapat memberi Anda petunjuk tentang jenis pembatasan aplikasi yang paling sesuai untuk sebuah kunci.

Menetapkan pembatasan aplikasi pada kunci API

  1. Buka halaman 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 Tentukan satu atau beberapa situs perujuk. Karakter pengganti boleh digunakan untuk memberi otorisasi semua subdomain (misalnya, *.google.com menerima semua situs yang diakhiri dengan .google.com). Tentukan https:// dan http:// sebagaimana mestinya. Anda harus menggunakan representasi khusus untuk jenis lainnya dari protokol URL perujuk. Misalnya, format file:///path/to/ sebagai __file_url__//path/to/*. Setelah mengaktifkan perujuk, pastikan untuk memantau penggunaan Anda untuk memastikan kecocokannya dengan perkiraan Anda. Protokol perujuk berikut didukung: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    Alamat IP Tentukan satu alamat IPv4 atau IPv6, atau subnet menggunakan notasi CIDR. Karena permintaan layanan web akan memeriksa dan membandingkan alamat IP eksternal terhadap pembatasan kunci API, gunakan alamat IP publik server.
    Aplikasi Android Tambahkan sidik jari sertifikat penandatanganan SHA-1 dan nama paket Android Anda dari file AndroidManifest.xml.
    Aplikasi iOS Di bawah jenisnya, pilih ID paket iOS yang sesuai dari daftar.
  4. Pilih Simpan.

Menetapkan pembatasan API pada kunci API

  1. Buka halaman Credentials.

  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 Select APIs, 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.)

Menghapus kunci API yang tidak digunakan

Sebelum Anda menghapus kunci API, pastikan kunci tersebut tidak digunakan dalam produksi. Jika tidak ada traffic yang berhasil, kunci tersebut kemungkinan aman untuk dihapus.

Cara menghapus kunci API:

  1. Buka halaman Kredensial.

  2. Pilih kunci API yang ingin dihapus.

  3. Pilih tombol Hapus di dekat bagian atas halaman.

  4. Saat dialog Hapus kredensial muncul, pilih Hapus.

    Penghapusan kunci API memerlukan waktu beberapa menit untuk diterapkan. Setelah penerapan, traffic yang menggunakan kunci API yang dihapus akan ditolak.

Cara lain untuk mengamankan API Anda

Berhati-hatilah saat membuat ulang kunci API

Pembuatan ulang kunci API akan membuat kunci baru yang memiliki semua pembatasan kunci lama. Tindakan ini juga akan memulai timer 24 jam untuk menonaktifkan kunci API lama.

Selama periode ini, kunci lama dan baru akan diterima, sehingga Anda dapat memigrasikan aplikasi Anda untuk menggunakan kunci baru. Namun, aplikasi apa pun yang masih menggunakan kunci API lama akan berhenti berfungsi setelah periode ini berlalu.

  1. Buka halaman API keys.

  2. Pilih Revert to previous key.

  3. Pada dialog Revert, klik Revert key.

Setelah melakukan roll back, kunci versi "baru" sebelumnya akan menjadi versi sebelumnya, dan timer penonaktifan 24 jam yang baru akan ditetapkan untuk kunci versi sebelumnya tersebut. Anda dapat mengembalikan di antara dua nilai kunci tersebut hingga Anda membuat ulang kunci untuk kedua kalinya.

Pembuatan ulang yang kedua ini akan menimpa nilai kunci tidak aktif yang lama.

Memantau penggunaan API Anda

Untuk memeriksa penggunaan kunci API Anda:

  1. Buka halaman Metrics.

  2. Klik Show filters.

  3. Dari Grouped by, pilih API method.

  4. Di bagian Response code, pilih 2xx untuk melihat semua permintaan yang berhasil ke kunci ini.

Jika Anda mendeteksi penggunaan yang tidak sah, lakukan hal berikut:

  1. Batasi kunci Anda.

    Jika kunci yang sama digunakan di beberapa aplikasi, migrasikan aplikasi tersebut untuk menggunakan beberapa kunci API, dan sebaiknya gunakan kunci API terpisah untuk setiap aplikasi.

  2. Jika penggunaan yang tidak sah terus berlanjut, buat ulang atau hapus kunci yang terpengaruh.

  3. Hubungi dukungan.

Menggunakan kunci API terpisah untuk setiap aplikasi

Tindakan ini akan membatasi cakupan setiap kunci. Jika kunci API disalahgunakan, Anda dapat menghapus dan membuat ulang kunci yang terpengaruh tanpa harus memperbarui kunci API lainnya.

Bermigrasi ke beberapa kunci API

Untuk bermigrasi dari menggunakan satu kunci API untuk beberapa aplikasi, ke satu kunci API unik untuk setiap aplikasi, lakukan tindakan berikut:

  1. Identifikasi aplikasi yang memerlukan kunci baru.

    • Aplikasi web paling mudah diupdate karena Anda mengontrol semua kode. Rencanakan untuk mengupdate semua kunci aplikasi berbasis web.
    • Aplikasi seluler jauh lebih sulit, karena pelanggan Anda harus mengupdate aplikasi sebelum kunci baru dapat digunakan.
  2. Buat dan batasi kunci baru.

    • Tambahkan pembatasan aplikasi dan sedikitnya satu pembatasan API.
  3. Tambahkan kunci baru ke berbagai aplikasi Anda.

    • Untuk aplikasi seluler, proses ini mungkin memerlukan waktu berbulan-bulan hingga semua pengguna Anda mengupdate aplikasi ke versi terbaru dengan kunci API baru.

Metode perlindungan aplikasi Maps Web Service API atau Static Web API

  • Simpan kunci API dan rahasia penandatanganan di luar kode sumber aplikasi Anda. Jika Anda menyimpan kunci API atau informasi pribadi lainnya dalam variabel lingkungan atau menyertakan file yang disimpan secara terpisah, kemudian membagikan kode Anda, kunci API atau rahasia penandatanganan tidak akan disertakan dalam file yang dibagikan.

  • Simpan kunci API atau rahasia penandatanganan di dalam file yang terdapat di luar hierarki sumber aplikasi Anda. Jika Anda menyimpan kunci API atau informasi pribadi lainnya di dalam file, simpanlah file tersebut di luar hierarki sumber aplikasi untuk memastikan kunci Anda berada di luar sistem kontrol kode sumber Anda. Hal ini sangat penting jika Anda menggunakan sistem pengelolaan kode sumber yang terbuka untuk publik seperti GitHub.

Metode perlindungan aplikasi seluler Web Service API atau Static Web API

  • Gunakan server proxy. Server proxy menyediakan sumber lengkap untuk berinteraksi dengan API Google Maps Platform yang sesuai. Untuk informasi selengkapnya tentang cara menggunakan server proxy, lihat Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries.

  • Obfuscate atau enkripsikan kunci API atau rahasia penandatanganan. Hal ini akan mempersulit penyalinan kunci API dan data pribadi lainnya secara langsung dari aplikasi.

Informasi selengkapnya

Tabel ini mencantumkan pembatasan kunci API yang sesuai dan praktik terbaik keamanan API 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
Address Validation API Pembatasan alamat IP(4) Address Validation API
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
Routes API Pembatasan alamat IP(4) Routes 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 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.

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

4 Pembatasan IP mungkin tidak praktis dalam beberapa skenario, misalnya pada aplikasi seluler dan lingkungan cloud yang mengandalkan alamat IP dinamis. Saat menggunakan Maps Web Service API dalam skenario tersebut, amankan aplikasi Anda menggunakan server proxy atau obfuscation.

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