Menggunakan Kunci API
Halaman ini menjelaskan cara menggunakan kunci API di API Gateway.
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.
Untuk membuat kunci API, atau melihat kunci API yang sudah tersedia dalam project Google Cloud Anda, buka halaman APIs & Services > Credentials.
Menggunakan kunci API
Untuk menggunakan fitur API Gateway seperti kuota, Anda dapat meneruskan kunci API agar API Gateway dapat mengidentifikasi Google Cloud project yang terkait dengan aplikasi klien.
Mengonfigurasi autentikasi kunci API untuk API Gateway
Untuk mengamankan akses ke gateway menggunakan kunci API:
- Aktifkan dukungan kunci API untuk layanan Anda. Masukkan perintah berikut, dengan:
- MANAGED_SERVICE_NAME menentukan nama layanan terkelola yang dibuat saat Anda men-deploy API. Hal ini dapat dilihat di properti Managed Service yang tercantum dengan perintah
gcloud api-gateway apis describe. - PROJECT_ID menentukan nama project Google Cloud Anda.
Contoh:gcloud services enable MANAGED_SERVICE_NAME.apigateway.PROJECT_ID.cloud.goog
gcloud services enable my-api-123abc456def1.apigateway.my-project.cloud.goog
- MANAGED_SERVICE_NAME menentukan nama layanan terkelola yang dibuat saat Anda men-deploy API. Hal ini dapat dilihat di properti Managed Service yang tercantum dengan perintah
- 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: backend: 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 Anda.
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.