Membatasi akses API dengan kunci API

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.

Jika Anda menetapkan persyaratan kunci API di API, permintaan ke metode yang dilindungi, class, atau API akan ditolak kecuali jika memiliki kunci yang dibuat di project Anda atau dalam project lain milik developer yang telah Anda beri akses untuk mengaktifkan API Anda. Project tempat kunci API dibuat tidak dicatat dan tidak ditambahkan ke header permintaan. Namun, Anda dapat melihat Google Cloud project yang terkait dengan klien di halaman Layanan Endpoint , seperti yang dijelaskan dalam Memfilter project konsumen tertentu.

Untuk mengetahui informasi tentang Google Cloud project tempat kunci API harus dibuat, lihat Berbagi API yang dilindungi oleh kunci API.

Membatasi akses ke semua metode API

Untuk mewajibkan kunci API untuk semua panggilan ke API, tambahkan apiKeyRequired = AnnotationBoolean.TRUE ke anotasi@Api Anda. Contoh:

@Api(
  name = "echo",
  version = "v1",
  apiKeyRequired = AnnotationBoolean.TRUE
  )
public class Echo {
//API class and methods...
}

Membatasi akses ke metode API tertentu

Untuk mewajibkan kunci API untuk semua panggilan ke metode API tertentu, tambahkan apiKeyRequired = AnnotationBoolean.TRUE ke anotasi@ApiMethod Anda. Contoh:

@ApiMethod(name = "echo_api_key", path = "echo_api_key", apiKeyRequired = AnnotationBoolean.TRUE)
public Message echoApiKey(Message message, @Named("n") @Nullable Integer n) {
  return doEcho(message, n);
}

Untuk mewajibkan kunci API untuk semua panggilan ke class API tertentu, tambahkan apiKeyRequired = AnnotationBoolean.TRUE ke @ApiClass anotasi Anda.

Menghapus pembatasan kunci API untuk metode

Untuk menonaktifkan validasi kunci API untuk API atau metode API, hapus api_key_required=True (Python) atau apiKeyRequired = AnnotationBoolean.TRUE (Java) dari API atau dekorator atau anotasi metode Anda. Kemudian, kompilasi ulang dan deploy ulang.

Memanggil API menggunakan kunci API

Jika API atau metode API memerlukan kunci API, berikan kunci menggunakan parameter kueri bernama key, seperti yang ditunjukkan dalam contoh cURL ini:

curl \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{"message": "echo"}' \
    "${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY}"

dengan HOST dan API_KEY adalah variabel yang berisi nama host API dan kunci API Anda. Ganti echo dengan nama API Anda, dan v1 dengan versi API Anda.

Berbagi API yang dilindungi oleh kunci API

Kunci API dikaitkan dengan Google Cloud project tempat kunci API dibuat. Jika Anda memutuskan untuk mewajibkan kunci API untuk API Anda, Google Cloud project tempat kunci API dibuat bergantung pada jawaban atas pertanyaan berikut:

  • Apakah Anda perlu membedakan pemanggil API Anda sehingga Anda dapat menggunakan fitur Endpoint seperti kuota?
  • Apakah semua pemanggil API Anda memiliki Google Cloud project mereka sendiri?
  • Apakah Anda perlu menyiapkan pembatasan kunci API yang berbeda?

Anda dapat menggunakan diagram alur keputusan berikut sebagai panduan untuk memutuskan project mana yang akan digunakan untuk membuat kunci API. Google Cloud

Hierarki keputusan kunci API

Memberikan izin untuk mengaktifkan API

Jika Anda perlu membedakan pemanggil API Anda, dan setiap pemanggil memiliki Google Cloud project mereka sendiri, Anda dapat memberikan izin utama untuk mengaktifkan API di project mereka sendiri Google Cloud . 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 projectnya sendiri. Google Cloud Untuk membedakan pemanggil API Anda, kunci API untuk setiap pemanggil harus dibuat di project yang berbeda Google Cloud . Anda dapat memberikan izin kepada rekan kerja Anda untuk mengaktifkan API di Google Cloud project yang terkait dengan program klien.

Untuk mengizinkan pengguna membuat kunci API mereka sendiri:

  1. Di Google Cloud project tempat API Anda dikonfigurasi, berikan izin kepada setiap pengguna untuk mengaktifkan API Anda.
  2. Hubungi pengguna, dan beri tahu mereka bahwa mereka dapat mengaktifkan API Anda di project mereka sendiri Google Cloud dan membuat kunci API.

Membuatproject terpisah Google Cloud untuk setiap pemanggil

Jika Anda perlu membedakan pemanggil API Anda, dan tidak semua pemanggil memiliki Google Cloud project, Anda dapat membuat Google Cloud project dan kunci API terpisah untuk setiap pemanggil. Sebelum membuat project, pertimbangkan nama project sehingga Anda dapat dengan mudah mengidentifikasi pemanggil yang terkait dengan project tersebut.

Misalnya, Anda memiliki pelanggan eksternal API Anda, dan Anda tidak tahu bagaimana program klien yang memanggil API Anda dibuat. Mungkin beberapa klien menggunakan Google Cloud layanan dan memiliki Google Cloud project, dan mungkin beberapa tidak. Untuk membedakan pemanggil, Anda harus membuat project dan kunci API Google Cloud terpisah untuk setiap pemanggil.

Untuk membuat Google Cloud project dan kunci API terpisah untuk setiap pemanggil:

  1. Buat project terpisah untuk setiap pemanggil.
  2. Di setiap project, aktifkan API Anda dan buat kunci API.
  3. Berikan kunci API kepada setiap pemanggil.

Membuat kunci API untuk setiap pemanggil

Jika Anda tidak perlu membedakan pemanggil API Anda, tetapi Anda ingin menambahkan pembatasan kunci API, Anda dapat membuat kunci API terpisah untuk setiap pemanggil di project yang sama.

Untuk membuat kunci API untuk setiap pemanggil di project yang sama:

  1. 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 butuhkan.
  2. Berikan kunci API kepada setiap pemanggil.

Membuat satu kunci API untuk semua pemanggil

Jika Anda tidak perlu membedakan pemanggil API Anda, 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 untuk semua pemanggil:
  1. Di project tempat API Anda dikonfigurasi, atau project tempat API Anda diaktifkan, buat kunci API untuk semua pemanggil yang memiliki pembatasan kunci API yang Anda butuhkan.
  2. Berikan kunci API yang sama kepada setiap pemanggil.

Langkah berikutnya