Mengamankan traffic ke layanan dengan konsol Google Cloud
Halaman ini menunjukkan cara men-deploy API di API Gateway untuk mengamankan traffic ke layanan backend.
Ikuti langkah-langkah untuk men-deploy API baru guna mengakses layanan backend di fungsi Cloud Run menggunakan Google Cloud Console. Panduan memulai ini juga menjelaskan cara menggunakan kunci API untuk melindungi backend Anda dari akses tanpa izin.
Sebelum memulai
Di konsol Google Cloud, buka halaman API Gateway.
API Gateway mengharuskan Anda mengaktifkan layanan Google berikut:
Nama Judul apigateway.googleapis.com
API Gateway API servicemanagement.googleapis.com
Service Management API servicecontrol.googleapis.com
Service Control API Jika sebelumnya Anda belum mengaktifkan layanan ini untuk project yang dipilih, Anda akan diminta untuk melakukannya.
Konfirmasi bahwa penagihan diaktifkan untuk project Anda.
Men-deploy backend API
API Gateway berada di depan layanan backend yang di-deploy dan menangani semua permintaan masuk. Dalam panduan memulai ini, API Gateway merutekan panggilan masuk ke backend fungsi Cloud Run bernama helloGET
yang berisi fungsi yang ditampilkan sebagai berikut:
/** * HTTP Cloud Function. * This function is exported by index.js, and is executed when * you make an HTTP request to the deployed function's endpoint. * * @param {Object} req Cloud Function request context. * More info: https://expressjs.com/en/api.html#req * @param {Object} res Cloud Function response context. * More info: https://expressjs.com/en/api.html#res */ exports.helloGET = (req, res) => { res.send('Hello World!'); };
Ikuti langkah-langkah di Panduan memulai: Menggunakan Google Cloud CLI untuk mendownload contoh kode fungsi Cloud Run dan men-deploy layanan backend fungsi Cloud Run.
Membuat definisi API
API Gateway menggunakan definisi API untuk merutekan panggilan ke layanan backend. Anda dapat menggunakan spesifikasi OpenAPI yang berisi anotasi khusus untuk menentukan perilaku API Gateway yang dipilih. Spesifikasi OpenAPI untuk panduan memulai ini berisi petunjuk pemilihan rute ke backend fungsi Cloud Run:
# 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://us-central1-PROJECT_ID.cloudfunctions.net/helloGET responses: '200': description: A successful response schema: type: string
Untuk menggunakan spesifikasi OpenAPI yang ditampilkan dalam contoh sebelumnya guna menentukan API Anda:
Dari command line, buat file baru bernama
openapi2-functions.yaml
.Salin dan tempel konten spesifikasi OpenAPI yang ditampilkan dalam contoh sebelumnya ke dalam file yang baru dibuat.
Edit file sebagai berikut:
- Di kolom
title
, ganti API_ID dengan nama API Anda (yang akan dibuat di langkah berikutnya) dan ganti optional-string dengan deskripsi singkat pilihan Anda. Nilai kolom ini digunakan saat membuat kunci API yang memberikan akses ke API ini. Lihat Persyaratan ID API untuk mengetahui pedoman penamaan ID API. - Di kolom
address
, ganti PROJECT_ID dengan nama project Google Cloud Anda.
- Di kolom
Membuat gateway
Sekarang Anda siap membuat dan men-deploy gateway di API Gateway.
Buka halaman API Gateway di konsol Google Cloud.
Klik Buat Gateway.
Di bagian API:
- Anda dapat memilih untuk membuat API baru atau memilih API yang ada dari drop-down Select an API. Untuk tutorial ini, pilih Buat API baru.
- Masukkan Nama Tampilan untuk API Anda.
- Masukkan ID API untuk API Anda.
- (Opsional) Tambahkan label ke API Anda menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
Di bagian API Config:
- Anda dapat memilih untuk membuat konfigurasi API baru atau memilih konfigurasi API yang ada dari drop-down Select a Config. Untuk tutorial ini, pilih Create a new API config.
- Gunakan file browser untuk mengupload
openapi2-functions.yaml
yang digunakan untuk menentukan API Anda. - Masukkan nama tampilan untuk konfigurasi API Anda.
Pilih akun layanan dari menu drop-down. Akun layanan yang Anda pilih akan digunakan sebagai identitas untuk API Gateway.
(Opsional) Tambahkan label ke konfigurasi API Anda menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
Di bagian Gateway details:
- Masukkan nama tampilan gateway. URL ke gateway dibuat secara otomatis.
- Pilih lokasi gateway dari menu drop-down.
- (Opsional) Tambahkan label ke gateway menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
Klik Buat Gateway.
Tindakan ini akan men-deploy konfigurasi API di gateway yang baru dibuat. Men-deploy konfigurasi API di gateway akan menentukan URL eksternal yang dapat digunakan klien API untuk mengakses API Anda.
Mungkin perlu waktu beberapa menit hingga operasi selesai. Untuk memeriksa status proses pembuatan dan deployment, Anda dapat mengklik ikon Notifikasi di menu navigasi utama untuk menampilkan notifikasi status, seperti yang ditunjukkan pada gambar berikut:
Setelah berhasil diselesaikan, Anda dapat melihat detail tentang gateway di halaman landing Gateway.
Catat URL gateway. Ini digunakan untuk menguji deployment Anda di langkah berikutnya.
Menguji deployment API
Sekarang Anda dapat mengirim permintaan ke API menggunakan URL yang dibuat saat gateway di-deploy.
Di browser Anda, masukkan URL berikut, dengan:
- GATEWAY_URL menentukan URL gateway yang di-deploy.
hello
adalah jalur yang ditentukan dalam konfigurasi API Anda.
https://GATEWAY_URL/hello
Contoh:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Pesan Hello World!
akan ditampilkan di browser Anda.
Anda telah berhasil membuat dan men-deploy API Gateway.
Mengamankan akses menggunakan kunci API
Untuk mengamankan akses ke backend API, Anda dapat membuat kunci API yang terkait dengan project dan memberikan akses kunci tersebut untuk memanggil API. Lihat Membatasi akses API dengan kunci API untuk mengetahui informasi selengkapnya.
Jika belum memiliki kunci API yang terkait dengan project Google Cloud yang Anda gunakan dalam panduan memulai ini, Anda dapat menambahkannya dengan mengikuti langkah-langkah di Membuat Kunci API.
Untuk mengamankan akses ke gateway menggunakan kunci API:
- Aktifkan dukungan kunci API untuk layanan Anda:
- Di konsol Google Cloud, buka APIs & Services > Library.
- Di kotak penelusuran, masukkan nama Layanan Terkelola dari API yang baru saja Anda buat. 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
- Di halaman landing untuk layanan Anda, klik Enable.
- Ubah spesifikasi OpenAPI yang digunakan untuk membuat konfigurasi API Anda agar menyertakan petunjuk untuk menerapkan kebijakan keamanan validasi kunci API di semua traffic. Tambahkan jenis
security
dansecurityDefinitions
seperti yang ditunjukkan:# 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://us-central1.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"
securityDefinition
mengonfigurasi API Anda untuk mewajibkan kunci API yang diteruskan sebagai parameter kueri bernamakey
saat meminta akses ke semua jalur yang ditentukan dalam spesifikasi. - Buat dan deploy konfigurasi API baru ke gateway yang ada:
- Buka halaman landing Gateway.
- Pilih gateway Anda dari daftar untuk melihat detailnya.
- Klik Edit untuk membuka panel konfigurasi gateway.
- Di bagian API config:
- Pilih Create a new API config dari drop-down yang tersedia.
- Upload spesifikasi OpenAPI yang telah diubah menggunakan browser file.
- Masukkan nama tampilan untuk konfigurasi API baru Anda.
- Pilih akun layanan dari menu drop-down. Akun layanan yang Anda pilih akan digunakan sebagai identitas untuk API Gateway.
- (Opsional) Tambahkan label ke konfigurasi API Anda menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
- Klik Perbarui.
Menguji kunci API
Setelah membuat dan men-deploy API yang diubah, coba buat permintaan ke API tersebut.
Di browser Anda, masukkan URL berikut, dengan:
- GATEWAY_URL menentukan URL gateway yang di-deploy.
hello
adalah jalur yang ditentukan dalam konfigurasi API Anda.
https://GATEWAY_URL/hello
Contoh:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Tindakan ini akan menghasilkan error berikut:
UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.
Sekarang, di browser Anda, masukkan URL berikut, dengan:
- GATEWAY_URL menentukan URL gateway yang di-deploy.
hello
adalah jalur yang ditentukan dalam konfigurasi API Anda.- API_KEY menentukan kunci API yang Anda buat di Mengamankan akses menggunakan kunci API.
https://GATEWAY_URL/hello?key=API_KEY
Sekarang Anda akan melihat Hello World!
di browser.
Selamat! Anda telah berhasil melindungi backend API dengan API Gateway. Sekarang Anda dapat mulai melakukan aktivasi klien API baru dengan membuat kunci API tambahan.
Melacak aktivitas API
Lihat grafik aktivitas untuk API Anda di halaman API Gateway di konsol Google Cloud. Klik API Anda untuk melihat grafik aktivitasnya di halaman Ringkasan. Mungkin perlu waktu beberapa saat hingga permintaan ditampilkan dalam grafik.
Lihat log permintaan untuk API Anda di halaman Logs Explorer. Link ke halaman Logs Explorer dapat ditemukan di halaman API Gateway di konsol Google Cloud.
Setelah berada di halaman API Gateway:
- Pilih API yang akan dilihat.
- Klik tab Detail.
- Klik link di bagian Logs.
Pembersihan
Agar tidak menimbulkan tagihan pada akun Google Cloud Anda untuk resource yang digunakan dalam panduan memulai ini, Anda dapat:
Atau, Anda juga dapat menghapus project Google Cloud yang digunakan untuk tutorial ini.
Langkah selanjutnya
- Pelajari lebih lanjut Tentang API Gateway
- Ikuti panduan Mengonfigurasi lingkungan pengembangan Anda