Menggunakan Kunci API
Halaman ini menjelaskan cara menggunakan kunci API di API Gateway.
Ringkasan
Kunci API adalah string yang mengidentifikasi project untuk tujuan kuota, penagihan, dan pemantauan.Google Cloud Developer membuat kunci API di project di konsol Google Cloud . Kemudian, mereka menyematkan kunci tersebut di setiap panggilan ke API Anda sebagai parameter kueri atau di header permintaan.
Jika Anda menentukan persyaratan kunci API dalam konfigurasi API, API Gateway akan menggunakan kunci API untuk mencari project terkait. Google Cloud API Gateway menolak permintaan kecuali jika kunci API dibuat di project Google Cloud Anda atau dalam projectGoogle Cloud lain tempat API Anda telah diaktifkan.
Membuat kunci API
Untuk membuat kunci API, atau melihat kunci API yang sudah tersedia dalam project Google Cloud Anda, buka halaman APIs & Services > Credentials, lalu selesaikan langkah-langkah yang dijelaskan dalam Membuat kunci API.
Mengonfigurasi autentikasi kunci API untuk API Gateway
Konfigurasi autentikasi kunci API untuk API Gateway guna mengamankan akses ke gateway Anda menggunakan kunci API, seperti yang dijelaskan di bagian berikut.
- Aktifkan dukungan kunci API untuk layanan Anda.
KonsolGoogle Cloud
Lakukan tindakan berikut:
- Di konsol Google Cloud , buka APIs & Services > Library.
- Di kotak penelusuran, masukkan nama Managed Service API. Anda dapat menemukan nilai ini di kolom Managed Service untuk API Anda di halaman landing API. Contoh:
my-api-123abc456def1.apigateway.my-project.cloud.goog
- Klik kartu layanan untuk melihat halaman landing.
- Di halaman landing untuk layanan Anda, klik Aktifkan.
Google Cloud CLI
Masukkan perintah berikut, dengan MANAGED_SERVICE_NAME menentukan nama layanan terkelola yang dibuat saat Anda men-deploy API. Ini dapat dilihat di properti Managed Service yang tercantum dengan perintah
gcloud api-gateway apis describe.gcloud services enable MANAGED_SERVICE_NAME
Contoh:
gcloud services enable my-api-123abc456def1.apigateway.my-project.cloud.goog
- Ubah spesifikasi OpenAPI yang digunakan untuk membuat konfigurasi API Anda agar menyertakan petunjuk untuk menerapkan kebijakan keamanan validasi kunci API pada semua traffic. Tambahkan jenis
securitydansecurityDefinitionsatausecuritySchemesseperti yang ditunjukkan:OpenAPI 2.0
# openapi2-functions.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloGET security: - api_key: [] responses: '200': description: A successful response schema: type: string securityDefinitions: # This section configures basic authentication with an API key. api_key: type: "apiKey" name: "key" in: "query"
securityDefinitionmengonfigurasi API Anda agar memerlukan kunci API yang diteruskan sebagai parameter kueri bernamakeysaat meminta akses ke semua jalur yang ditentukan dalam spesifikasi.OpenAPI 3.x
# openapi-functions.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backends: functions_backend: address: https://GATEWAY_LOCATION-PROJECT_ID.cloudfunctions.net/helloGET pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: functions_backend components: # This section configures basic authentication with an API key. securitySchemes: google_api_key: type: apiKey name: x-api-key in: header security: - google_api_key: [] paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
securitySchemesmengonfigurasi API Anda agar memerlukan kunci API yang diteruskan sebagai parameter kueri bernamakeysaat meminta akses ke semua jalur yang ditentukan dalam spesifikasi. - Buat konfigurasi API baru dengan deskripsi OpenAPI yang diubah menggunakan perintah berikut:
Contoh:gcloud api-gateway api-configs create NEW_CONFIG_ID \ --api=API_ID --openapi-spec=NEW_API_DEFINITION \ --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
gcloud api-gateway api-configs create my-config-key \ --api=my-api --openapi-spec=openapi-functions.yaml \ --project=my-project --backend-auth-service-account=0000000000000compute@developer.gserviceaccount.com
- Jalankan perintah berikut untuk mengupdate gateway yang ada dengan konfigurasi API baru:
Contoh:gcloud api-gateway gateways update GATEWAY_ID \ --api=API_ID --api-config=NEW_CONFIG_ID \ --location=GATEWAY_LOCATION --project=PROJECT_ID
gcloud api-gateway gateways update my-gateway \ --api=my-api --api-config=my-config-key \ --location=us-central1 --project=my-project
Membatasi kunci API
Secara default, kunci API tidak dibatasi, sehingga rentan terhadap penggunaan tanpa izin. Tambahkan pembatasan API jika memungkinkan. Pembatasan API menentukan API mana yang dapat dipanggil menggunakan kunci API. Semua kunci API yang digunakan oleh aplikasi produksi harus memiliki batasan API.
Untuk menambahkan pembatasan API:
Temukan judul API seperti yang tercantum dalam Konfigurasi API Anda. Dalam contoh berikut, judul API adalah
My Example Config:OpenAPI 2.0
# openapi.yaml swagger: '2.0' info: title: My Example Config description: Sample API on API Gateway version: 1.0.0 ...
OpenAPI 3.x
# openapi.yaml openapi: 3.0.4 info: title: My Example Config description: Sample API on API Gateway version: 1.0.0 ...
Di konsol Google Cloud , buka halaman APIs & Services > Credentials.
Pilih nama kunci API yang ingin Anda gunakan untuk API.
Di bagian API restrictions pada halaman detail kunci API, klik Restrict key.
Pilih API yang akan digunakan oleh kunci API Anda dari menu drop-down daftar API yang tersedia. Misalnya, pilih
My Example Config.Klik Simpan.
Pembatasan Anda akan segera berlaku.
Menggunakan kunci API
Untuk menggunakan fitur API Gateway seperti kuota, Anda dapat meneruskan kunci API sehingga API Gateway dapat mengidentifikasi Google Cloud project yang terkait dengan aplikasi klien.
Misalnya, Anda dapat meneruskannya menggunakan parameter kueri key dalam panggilan curl, sebagai berikut:
https://GATEWAY_URL/hello?key=API_KEY