Mengamankan traffic ke layanan dengan konsol Google Cloud

Halaman ini menunjukkan cara men-deploy API di Gateway API untuk mengamankan traffic ke layanan backend.

Ikuti langkah-langkah di bawah ini untuk men-deploy API baru guna mengakses layanan backend di Cloud Functions menggunakan Konsol Google Cloud. Panduan memulai ini juga menjelaskan cara menggunakan kunci API untuk melindungi backend Anda dari akses yang tidak sah.

Sebelum memulai

  1. Di konsol Google Cloud, buka halaman Gateway API dan pilih atau buat project Google Cloud.

    Buka halaman Gateway API

  2. Gateway API 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 belum mengaktifkan layanan ini untuk project yang dipilih, Anda akan diminta untuk melakukannya.

  3. Pastikan penagihan diaktifkan untuk project Anda.

    Pelajari cara mengaktifkan penagihan

Men-deploy backend API

Gateway API berada di depan layanan backend yang di-deploy dan menangani semua permintaan masuk. Dalam panduan memulai ini, Gateway API merutekan panggilan masuk ke backend Cloud Function bernama helloGET yang berisi fungsi yang ditampilkan di bawah ini:

/**
 * 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 Cloud Functions dan men-deploy layanan backend Cloud Function.

Membuat definisi API

Gateway API menggunakan definisi API untuk mengarahkan panggilan ke layanan backend. Anda dapat menggunakan spesifikasi OpenAPI yang berisi anotasi khusus untuk menentukan perilaku Gateway API yang diinginkan. Spesifikasi OpenAPI untuk panduan memulai ini berisi petunjuk pemilihan rute ke backend Cloud Function:

# 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 di atas guna menentukan API:

  1. Dari command line, buat file baru bernama openapi2-functions.yaml.

  2. Salin dan tempel konten spesifikasi OpenAPI yang ditampilkan di atas ke file yang baru dibuat.

  3. Edit file sebagai berikut:

    1. Di kolom title, ganti API_ID dengan nama API Anda (yang akan dibuat pada 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 pedoman penamaan ID API.
    2. Di kolom address, ganti PROJECT_ID dengan nama project Google Cloud Anda.

Membuat gateway

Sekarang Anda siap untuk membuat dan men-deploy gateway di API Gateway.

  1. Buka halaman Gateway API di Konsol Google Cloud.

    Buka halaman Gateway API

  2. Klik Create Gateway.

  3. Di bagian API:

    1. Anda dapat memilih untuk membuat API baru atau memilih API yang sudah ada dari drop-down Pilih API. Untuk tutorial ini, pilih Create a new API.
    2. Masukkan Display Name untuk API Anda.
    3. Masukkan ID API untuk API Anda.
    4. (Opsional) Tambahkan label ke API menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Add Label dan masukkan nilai tambahan.
  4. Di bagian Konfigurasi API:

    1. Anda dapat memilih untuk membuat konfigurasi API baru atau konfigurasi API yang sudah ada dari drop-down Pilih Konfigurasi. Untuk tutorial ini, pilih Create a new API config.
    2. Gunakan file browser untuk mengupload openapi2-functions.yaml yang digunakan untuk menentukan API Anda.
    3. Masukkan nama tampilan untuk konfigurasi API Anda.
    4. Pilih akun layanan dari daftar dropdown. Akun layanan yang Anda pilih akan digunakan sebagai identitas untuk Gateway API.

    5. (Opsional) Tambahkan label ke konfigurasi API menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Add Label dan masukkan nilai tambahan.

  5. Di bagian Detail gateway:

    1. Masukkan nama tampilan gateway. URL ke gateway dibuat secara otomatis.
    2. Pilih lokasi gateway dari menu dropdown.
    3. (Opsional) Tambahkan label ke gateway Anda menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Add Label dan masukkan nilai tambahan.
  6. Klik Create Gateway.

Tindakan ini akan men-deploy konfigurasi API pada gateway yang baru dibuat. Men-deploy konfigurasi API pada gateway 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 Notification di menu navigasi utama untuk menampilkan notifikasi status, seperti yang ditunjukkan pada gambar di bawah ini:

Panel notifikasi

Setelah berhasil diselesaikan, Anda dapat melihat detail tentang gateway di halaman landing Gateway.

Buka halaman Gateway

Catat URL gateway. Alat ini digunakan untuk menguji deployment Anda pada langkah berikutnya.

Menguji deployment API Anda

Sekarang Anda dapat mengirim permintaan ke API menggunakan URL yang dihasilkan setelah deployment gateway Anda.

Di browser Anda, masukkan URL berikut, dengan alamat:

  • GATEWAY_URL menentukan URL gateway yang di-deploy.
  • hello adalah jalur yang ditetapkan 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 Gateway API.

Mengamankan akses dengan menggunakan kunci API

Untuk mengamankan akses ke backend API, Anda dapat membuat kunci API yang terkait dengan project dan memberi kunci tersebut akses untuk memanggil API Anda. Lihat Membatasi akses API dengan kunci API untuk informasi selengkapnya.

Jika belum memiliki kunci API yang terkait dengan project Google Cloud yang digunakan dalam panduan memulai ini, Anda dapat menambahkannya dengan mengikuti langkah-langkah di bagian Membuat Kunci API.

Untuk mengamankan akses ke gateway Anda menggunakan kunci API:

  1. Aktifkan dukungan kunci API untuk layanan Anda:
    1. Di konsol Google Cloud, buka APIs & Services > Library.
    2. Di kotak penelusuran, masukkan nama Layanan Terkelola API yang baru saja Anda buat. Anda dapat menemukan nilai ini di kolom Layanan Terkelola untuk API Anda di halaman landing API. Contoh:
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. Di halaman landing untuk layanan Anda, klik Aktifkan.
  2. Ubah spesifikasi OpenAPI yang digunakan untuk membuat konfigurasi API guna menyertakan petunjuk untuk menerapkan kebijakan keamanan validasi kunci API pada semua traffic. Tambahkan jenis security dan securityDefinitions seperti yang ditunjukkan di bawah ini:
        # 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 diteruskan sebagai parameter kueri bernama key saat meminta akses ke semua jalur yang ditentukan dalam spesifikasi.
  3. Buat dan deploy konfigurasi API baru ke gateway yang ada:
    1. Buka halaman landing Gateway.

      Buka halaman Gateway

    2. Pilih gateway Anda dari daftar untuk melihat detailnya.
    3. Klik Edit untuk membuka panel konfigurasi gateway.
    4. Di bagian Konfigurasi API:
      1. Pilih Create a new API config dari dropdown yang tersedia.
      2. Upload spesifikasi OpenAPI yang telah dimodifikasi menggunakan file browser.
      3. Masukkan nama tampilan untuk konfigurasi API baru Anda.
      4. Pilih akun layanan dari daftar dropdown. Akun layanan yang Anda pilih akan digunakan sebagai identitas untuk Gateway API.
      5. (Opsional) Tambahkan label ke konfigurasi API menggunakan format kunci/nilai. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
    5. Klik Perbarui.

Menguji kunci API Anda

Setelah Anda membuat dan men-deploy API yang dimodifikasi, coba buat permintaan terhadap API tersebut.

Di browser Anda, masukkan URL berikut, dengan alamat:

  • GATEWAY_URL menentukan URL gateway yang di-deploy.
  • hello adalah jalur yang ditetapkan dalam konfigurasi API Anda.
https://GATEWAY_URL/hello

Contoh:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Hal 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 ditetapkan 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 berhasil melindungi backend API dengan Gateway API. Sekarang Anda dapat mulai mengaktifkan klien API baru dengan membuat kunci API tambahan.

Aktivitas API pelacakan

  1. Lihat grafik aktivitas untuk API Anda di halaman Gateway API di Konsol Google Cloud. Klik API Anda untuk melihat grafik aktivitasnya di halaman Overview. Mungkin perlu waktu beberapa saat agar permintaan ditampilkan dalam grafik.

  2. Lihat log permintaan untuk API Anda di halaman Logs Explorer. Link ke halaman Logs Explorer dapat ditemukan di halaman Gateway API pada Konsol Google Cloud.

    Buka halaman Gateway API

    Setelah berada di halaman Gateway API:

    1. Pilih API untuk ditampilkan.
    2. Klik tab Details.
    3. Klik link di bagian Logs.

Pembersihan

Agar tidak menimbulkan biaya 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