Panduan memulai: Mengamankan traffic ke layanan dengan Google Cloud konsol

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 pada fungsi Cloud Run 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 API Gateway.

    Buka 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 Anda belum pernah mengaktifkan layanan ini untuk project yang Anda pilih, Anda akan diminta untuk melakukannya.

  3. Konfirmasi bahwa 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, API Gateway merutekan panggilan masuk ke backend fungsi Cloud Run bernama helloGET yang berisi fungsi yang ditunjukkan 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 kode fungsi Cloud Run contoh dan men-deploy layanan backend fungsi Cloud Run.

Membuat konfigurasi API

API Gateway menggunakan konfigurasi API untuk merutekan panggilan ke layanan backend. Anda dapat menggunakan spesifikasi OpenAPI yang berisi ekstensi khusus untuk menentukan perilaku Gateway API yang dipilih. Untuk mengetahui detail selengkapnya tentang ekstensi OpenAPI yang didukung, lihat artikel berikut:

Spesifikasi OpenAPI untuk panduan memulai ini berisi petunjuk perutean ke backend fungsi Cloud Run:

OpenAPI 2.0

# openapi-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://GATEWAY_LOCATION -PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

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
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      responses:
        '200':
          description: A successful response
          content:
            application/json:
              schema:
                type: string

Gunakan spesifikasi OpenAPI ini untuk menentukan API Anda:

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

  2. Salin dan tempel konten spesifikasi OpenAPI yang ditampilkan dalam contoh sebelumnya ke dalam file yang baru dibuat.

  3. Edit file sebagai berikut:

    1. Di kolom title, ganti API_ID dengan nama API Anda (yang Anda buat 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.
    2. Di kolom address, ganti PROJECT_ID dengan nama project Google Cloud Anda dan ganti GATEWAY_LOCATION dengan Google Cloud tempat gateway Anda di-deploy.

Membuat gateway

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

  1. Buka halaman API Gateway di konsol Google Cloud .

    Buka Gateway API

  2. Klik Create Gateway.

  3. Di bagian API:

    1. Pilih untuk membuat API baru atau memilih API yang ada dari drop-down Pilih API. Untuk tutorial ini, pilih Create a new API.
    2. Masukkan Nama Tampilan untuk API Anda.
    3. Masukkan API ID untuk API Anda.
    4. (Opsional) Tambahkan label ke API Anda menggunakan format key:value. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
  4. Di bagian API Config:

    1. Pilih 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.
    2. Gunakan browser file untuk mengupload openapi-functions.yaml yang digunakan untuk menentukan API Anda.
    3. Masukkan nama tampilan untuk konfigurasi API Anda.
    4. Pilih akun layanan dari menu drop-down. Akun layanan yang Anda pilih digunakan sebagai identitas untuk API Gateway.

    5. (Opsional) Tambahkan label ke konfigurasi API Anda menggunakan format key:value. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.

  5. Di bagian Gateway details:

    1. Masukkan nama tampilan gateway. URL ke gateway akan dibuat secara otomatis.
    2. Pilih lokasi gateway dari menu drop-down.
    3. (Opsional) Tambahkan label ke gateway Anda menggunakan format key:value. Untuk menambahkan lebih dari satu label, klik Tambahkan Label dan masukkan nilai tambahan.
  6. Klik Create Gateway.

Tindakan ini akan men-deploy konfigurasi API di gateway yang baru dibuat. Men-deploy konfigurasi API di gateway menentukan URL eksternal yang dapat digunakan klien API untuk mengakses API Anda.

Operasi ini mungkin memerlukan waktu beberapa menit hingga selesai. Untuk memeriksa status proses pembuatan dan deployment, klik ikon Notifikasi di menu navigasi utama untuk menampilkan notifikasi status, seperti yang ditunjukkan pada gambar berikut:

Panel notifikasi untuk notifikasi status

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

Buka Gateway API

Catat URL gateway. Anda akan menggunakannya untuk menguji deployment di langkah berikutnya.

Menguji deployment API Anda

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

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 Gateway API.

Mengamankan akses dengan kunci API

Untuk mengamankan akses ke backend API Anda, buat kunci API yang terkait dengan project Anda dan berikan akses kunci tersebut untuk memanggil API Anda. Lihat Membatasi akses API dengan kunci API untuk mengetahui informasi selengkapnya.

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

Untuk mengamankan akses ke gateway 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 Managed Service 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
    3. Di halaman landing untuk layanan Anda, klik Aktifkan.
  2. 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 security dan securitySchemes seperti 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://GATEWAY_LOCATION-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 agar memerlukan kunci API yang diteruskan sebagai parameter kueri bernama key saat 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

    securitySchemes mengonfigurasi API Anda untuk mewajibkan kunci API yang diteruskan sebagai parameter kueri bernama key saat meminta akses ke semua jalur yang ditentukan dalam spesifikasi.

  3. Membuat dan men-deploy konfigurasi API baru ke gateway yang ada:
    1. Buka halaman landing Gateway.

      Buka Gateway API

    2. Pilih gateway Anda dari daftar untuk melihat detailnya.
    3. Klik Edit untuk membuka panel konfigurasi gateway.
    4. Di bagian API config:
      1. Pilih Create a new API config dari drop-down yang tersedia.
      2. Upload spesifikasi OpenAPI yang telah diubah menggunakan browser file.
      3. Masukkan nama tampilan untuk konfigurasi API baru Anda.
      4. Pilih akun layanan dari menu drop-down. Akun layanan yang Anda pilih digunakan sebagai identitas untuk API Gateway.
      5. (Opsional) Tambahkan label ke konfigurasi API Anda menggunakan format key/value. 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 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

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 Anda.

Selamat! Anda telah berhasil melindungi backend API dengan Gateway API. Sekarang Anda dapat mulai mengintegrasikan klien API baru dengan membuat kunci API tambahan.

Melacak aktivitas API

  1. Lihat grafik aktivitas untuk API Anda di halaman API Gateway di konsolGoogle Cloud . Klik API Anda untuk melihat grafik aktivitasnya di halaman Ringkasan. Mungkin perlu waktu beberapa saat agar permintaan tercermin dalam grafik.

  2. 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 .

    Buka Gateway API

    Setelah berada di halaman API Gateway:

    1. Pilih API yang akan dilihat.
    2. Klik tab Details.
    3. Klik link di bagian Log.

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam panduan memulai ini, Anda dapat:

Atau, Anda juga dapat menghapus project Google Cloud yang digunakan untuk tutorial ini.

Langkah berikutnya