Anda dapat menggunakan kunci API untuk membatasi akses ke metode API tertentu atau semua metode dalam API. Halaman ini menjelaskan cara membatasi akses API ke klien yang memiliki kunci API dan juga menunjukkan cara membuat kunci API.
Extensible Service Proxy (ESP) menggunakan Service ControlAPI untuk memvalidasi kunci API dan pengaitannya dengan API yang diaktifkan project. Jika Anda menetapkan persyaratan kunci API di API, permintaan ke metode, class, atau API yang dilindungi akan ditolak kecuali jika permintaan tersebut memiliki kunci yang dibuat di project Anda atau dalam project lain milik developer yang telah Anda berikan akses untuk mengaktifkan API Anda. Project tempat kunci API dibuat tidak dicatat ke dalam log dan tidak ditambahkan ke header permintaan. Namun, Anda dapat melihat project Google Cloud yang terkait dengan klien di Endpoints > Service, seperti yang dijelaskan dalam Memfilter untuk project konsumen tertentu.
Untuk mengetahui informasi tentang project Google Cloud tempat kunci API harus dibuat, lihat Membagikan API yang dilindungi oleh kunci API.
Secara default di layanan gRPC, semua metode API memerlukan kunci API untuk mengaksesnya. Anda dapat menonaktifkan persyaratan kunci API untuk seluruh API atau untuk metode tertentu. Anda melakukannya dengan menambahkan bagian penggunaan ke konfigurasi layanan dan mengonfigurasi aturan dan pemilih, seperti yang dijelaskan dalam prosedur berikut.
Membatasi atau memberikan akses ke semua metode API
Untuk menentukan bahwa kunci API tidak diperlukan untuk mengakses API Anda:
Buka file konfigurasi layanan gRPC project Anda di editor teks, lalu temukan atau tambahkan bagian
usage
.Di bagian
usage
, tentukan aturanallow_unregistered_calls
sebagai berikut. Karakter pengganti"*"
diselector
berarti aturan berlaku untuk semua metode di API.usage: rules: # All methods can be called without an API Key. - selector: "*" allow_unregistered_calls: true
Menghapus pembatasan kunci API untuk suatu metode
Untuk menonaktifkan validasi kunci API untuk metode tertentu meskipun Anda telah membatasi akses API untuk API tersebut:
Buka file konfigurasi layanan gRPC project Anda di editor teks dan temukan atau tambahkan bagian
usage
:Di bagian
usage
, tentukan aturanallow_unregistered_calls
sebagai berikut.selector
berarti aturan hanya berlaku untuk metode yang ditentukan, dalam hal ini,ListShelves
.usage: rules: # ListShelves method can be called without an API Key. - selector: endpoints.examples.bookstore.Bookstore.ListShelves allow_unregistered_calls: true
Memanggil API menggunakan kunci API
Panggilan API bervariasi, bergantung pada apakah Anda melakukan panggilan dari klien gRPC atau klien HTTP.
Klien gRPC
Jika metode memerlukan kunci API, klien gRPC harus meneruskan nilai kunci sebagai
metadata
x-api-key
dengan panggilan metodenya.
Python
Java
Go
Node.js
Klien HTTP
Jika Anda menggunakan Cloud Endpoints untuk fitur transcoding HTTP gRPC, klien HTTP dapat mengirim kunci sebagai parameter kueri dengan cara yang sama seperti yang dilakukan untuk layanan OpenAPI.
Membagikan API yang dilindungi oleh kunci API
Kunci API dikaitkan dengan project Google Cloud tempat kunci tersebut dibuat. Jika Anda memutuskan untuk mewajibkan kunci API untuk API, project Google Cloud tempat kunci API dibuat bergantung pada jawaban atas pertanyaan berikut:
- Apakah Anda perlu membedakan antara pemanggil API agar dapat menggunakan fitur Endpoint seperti kuota?
- Apakah semua pemanggil API Anda memiliki project Google Cloud sendiri?
- Apakah Anda perlu menyiapkan pembatasan kunci API yang berbeda?
Anda dapat menggunakan hierarki keputusan berikut sebagai panduan untuk menentukan project Google Cloud tempat kunci API akan dibuat.
Memberikan izin untuk mengaktifkan API
Jika Anda perlu membedakan antara pemanggil API, dan setiap pemanggil memiliki project Google Cloud-nya sendiri, Anda dapat memberikan izin akun utama untuk mengaktifkan API di project Google Cloud-nya sendiri. Dengan cara ini, pengguna API Anda dapat membuat kunci API mereka sendiri untuk digunakan dengan API Anda.
Misalnya, tim Anda telah membuat API untuk penggunaan internal oleh berbagai program klien di perusahaan Anda, dan setiap program klien memiliki project Google Cloud-nya sendiri. Untuk membedakan antara pemanggil API Anda, kunci API untuk setiap pemanggil harus dibuat di project Google Cloud yang berbeda. Anda dapat memberikan izin kepada rekan kerja untuk mengaktifkan API di project Google Cloud yang terkait dengan program klien.
Untuk mengizinkan pengguna membuat kunci API mereka sendiri:
- Di project Google Cloud tempat API Anda dikonfigurasi, berikan setiap pengguna izin untuk mengaktifkan API Anda.
- Hubungi pengguna, dan beri tahu mereka bahwa mereka dapat mengaktifkan API Anda di project Google Cloud mereka sendiri dan membuat kunci API.
Membuat project Google Cloud terpisah untuk setiap pemanggil
Jika perlu membedakan antara pemanggil API, dan tidak semua pemanggil memiliki project Google Cloud, Anda dapat membuat project Google Cloud dan kunci API terpisah untuk setiap pemanggil. Sebelum membuat project, pikirkan nama project sehingga Anda dapat dengan mudah mengidentifikasi pemanggil yang terkait dengan project.
Misalnya, Anda memiliki pelanggan eksternal untuk API, dan Anda tidak tahu bagaimana program klien yang memanggil API dibuat. Mungkin beberapa klien menggunakan layanan Google Cloud dan memiliki project Google Cloud, dan mungkin beberapa tidak. Untuk membedakan pemanggil, Anda harus membuat project Google Cloud dan kunci API terpisah untuk setiap pemanggil.
Untuk membuat project Google Cloud dan kunci API terpisah untuk setiap pemanggil:
- Buat project terpisah untuk setiap pemanggil.
- Di setiap project, aktifkan API Anda dan buat kunci API.
- Berikan kunci API kepada setiap pemanggil.
Membuat kunci API untuk setiap pemanggil
Jika Anda tidak perlu membedakan antara pemanggil API, tetapi ingin menambahkan batasan kunci API, Anda dapat membuat kunci API terpisah untuk setiap pemanggil dalam project yang sama.
Untuk membuat kunci API bagi setiap pemanggil dalam project yang sama:
- Di project tempat API Anda dikonfigurasi, atau project tempat API Anda diaktifkan, buat kunci API untuk setiap pelanggan yang memiliki pembatasan kunci API yang Anda perlukan.
- Berikan kunci API kepada setiap pemanggil.
Membuat satu kunci API untuk semua pemanggil
Jika Anda tidak perlu membedakan antara pemanggil API, dan Anda tidak perlu menambahkan pembatasan API, tetapi Anda tetap ingin mewajibkan kunci API (misalnya, untuk mencegah akses anonim), Anda dapat membuat satu kunci API untuk digunakan oleh semua pemanggil.
Untuk membuat satu kunci API bagi semua pemanggil:- Di project tempat API Anda dikonfigurasi, atau project tempat API Anda diaktifkan, buat kunci API untuk semua pemanggil.
- Berikan kunci API yang sama kepada setiap pemanggil.