Mengaktifkan penerapan keamanan dan kuota

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

Halaman ini menjelaskan cara mengaktifkan opsi penerapan kuota dan keamanan default yang tersedia dengan Apigee Operator untuk Kubernetes.

Sebelum memulai

Sebelum memulai tugas ini, pastikan untuk menyelesaikan langkah-langkah berikut:

  • Instal Apigee Operator untuk Kubernetes. Lihat Menginstal Apigee Operator untuk Kubernetes untuk mengetahui petunjuk penginstalan.
  • Buat ekstensi layanan traffic. Untuk menyelesaikan langkah ini, Anda dapat menggunakan ApigeeBackendService atau APIMExtensionPolicy. Lihat Membuat APIMExtensionPolicy untuk mengetahui informasi selengkapnya tentang cara membuat ekstensi traffic menggunakan APIMExtensionPolicy. Lihat Membuat ApigeeBackendService untuk mengetahui informasi selengkapnya tentang cara membuat ekstensi traffic menggunakan ApigeeBackendService.

Baik Anda membuat ekstensi layanan traffic untuk Gateway GKE menggunakan ApigeeBackendService atau APIMExtensionPolicy, Anda harus menyelesaikan langkah-langkah dalam panduan ini untuk mengaktifkan kunci API default dan kebijakan Kuota yang ditambahkan ke APIMExtensionPolicy pendukung.

Peran yang diperlukan

Jika Anda menetapkan peran yang diperlukan ke akun layanan seperti yang dijelaskan dalam Menginstal Apigee Operator untuk Kubernetes, tidak ada peran atau izin IAM tambahan yang diperlukan untuk menyelesaikan tugas ini.

Anda dapat memilih untuk mengizinkan tindakan pada resource di cluster Google Kubernetes Engine menggunakan mekanisme role-based access control (RBAC) bawaan di Kubernetes. Untuk mengetahui informasi selengkapnya, lihat Memberikan otorisasi pada tindakan dalam cluster menggunakan role-based access control.

Ringkasan

Bagian berikut menjelaskan cara mengaktifkan opsi penerapan kuota dan keamanan default yang tersedia dengan Apigee Operator untuk Kubernetes. Dalam panduan ini, Anda akan:

  1. Tentukan produk API.
  2. Tentukan set operasi API.
  3. Uji ekstensi layanan Apigee.
  4. Lihat Analisis API Apigee di konsol Google Cloud .

Langkah-langkah yang diperlukan untuk menentukan produk API dan set operasi API sedikit berbeda, bergantung pada apakah Anda membuat ekstensi traffic untuk GKE Gateway menggunakan ApigeeBackendService atau APIMExtensionPolicy.

Mendefinisikan Produk API

Pada langkah ini, Anda akan menentukan produk API yang akan digunakan untuk mengelola kebijakan kuota dan penerapan kunci API.

Menggunakan APIMExtensionPolicy

Tentukan produk API:

  1. Buat file baru bernama api-product.yaml dalam namespace apim.
  2. Salin konten berikut ke dalam file baru:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: APIMExtensionPolicy
            group: apim.googleapis.com
            namespace: apim
        attributes:
          - name: access
            value: private
  3. Terapkan file ke Gateway menggunakan perintah berikut:
    kubectl -n apim apply -f api-product.yaml

Menggunakan ApigeeBackendService

Tentukan produk API:

  1. Buat file baru bernama api-product.yaml dalam namespace apim.
  2. Salin konten berikut ke dalam file baru:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: ApigeeBackendService
            group: apim.googleapis.com
            namespace: default
        attributes:
          - name: access
            value: private
  3. Terapkan file ke Gateway menggunakan perintah berikut:
    kubectl -n default apply -f api-product.yaml

Menentukan set operasi API

Pada langkah ini, Anda akan menentukan set operasi API yang akan digunakan untuk mengelola penerapan operasi REST.

Menggunakan APIMExtensionPolicy

Tentukan set operasi API untuk produk API yang dibuat pada langkah sebelumnya:

  1. Buat file baru bernama apim-policies.yaml dalam namespace apim.
  2. Salin konten berikut ke dalam file baru. File ini menentukan kebijakan kuota dan operasi REST yang tersedia untuk produk API yang ditentukan pada langkah sebelumnya:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: apim
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: apim
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Terapkan file ke Gateway:
    kubectl -n apim apply -f apim-policies.yaml

Menggunakan ApigeeBackendService

Tentukan set operasi API untuk produk API yang dibuat pada langkah sebelumnya:

  1. Buat file baru bernama apim-policies.yaml dalam namespace default.
  2. Salin konten berikut ke dalam file baru. File ini menentukan kebijakan kuota dan operasi REST yang tersedia untuk produk API yang ditentukan pada langkah sebelumnya:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: default
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: default
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Terapkan file ke Gateway:
    kubectl -n default apply -f apim-policies.yaml

Menguji ekstensi layanan Apigee

Pada langkah ini, Anda akan menggunakan UI Apigee di konsol Google Cloud untuk menguji ekstensi layanan Apigee dan kebijakan ekstensi Apigee yang diterapkan ke Gateway Anda.

Menguji penyiapan

Siapkan resource API yang Anda butuhkan untuk pengujian:

  1. Buka halaman Apigee API management di konsol Google Cloud :

    Pengelolaan API Apigee

  2. Pilih organisasi Apigee tempat Anda menginstal Apigee Operator untuk Kubernetes.
  3. Buat developer:
    1. Pilih Distribusi > Developer.
    2. Di halaman Developer, klik + Buat.
    3. Di halaman Tambahkan developer, lengkapi kolom yang wajib diisi menggunakan nilai apa pun yang Anda inginkan.
    4. Klik Tambahkan.
  4. Membuat Aplikasi:
    1. Pilih Distribusi> Aplikasi.
    2. Di halaman Aplikasi, klik + Buat
    3. Di halaman Buat Aplikasi, isi kolom wajib diisi di bagian Detail Aplikasi menggunakan nilai berikut:
      • Nama aplikasi: demo-app
      • Developer: Pilih developer yang Anda buat pada langkah sebelumnya, atau developer lain dari daftar.
    4. Di bagian App Credentials, klik + Add Credential.
    5. Di bagian Credential, isi kolom wajib diisi di bagian Credential Details dengan nilai berikut:
      • Credential name: demo-credential
      • Jenis kredensial: Pilih Kunci API.
    6. Klik Buat.
    7. Di bagian Produk, klik + Tambahkan produk.
    8. Pilih api-product-1 yang dibuat pada langkah sebelumnya.
    9. Klik Tambahkan.
    10. Klik Buat.
  5. Di halaman Detail Aplikasi, di bagian Kredensial, klik untuk menampilkan nilai Kunci.

    Salin nilai Key. Anda akan menggunakan kunci ini untuk melakukan panggilan API ke layanan Anda pada langkah selanjutnya.

  6. Di halaman App Details, di bagian Credential, klik untuk menampilkan nilai App Secret.

    Salin nilai Rahasia aplikasi. Anda akan menggunakan nilai ini untuk membuat token akses pada langkah selanjutnya.

Menguji penerapan kunci API

Gunakan perintah berikut untuk mengirim permintaan ke Gateway menggunakan kunci API yang diperoleh pada langkah sebelumnya:

curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_NAME adalah nama Gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME adalah nama host yang ditentukan dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Permintaan akan berhasil dan menampilkan respons yang mirip dengan berikut ini:

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "apigee-apim-operator-test.apigee.net",
    "User-Agent": "curl/8.7.1",
    "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt",
    "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739"
  },
  "origin": "34.54.193.72",
  "url": "https://34.54.193.72/get"
}

Menguji pemberlakuan kuota

Untuk menguji penerapan kuota yang ditentukan di APIMExtensionPolicy, kirim permintaan dari langkah sebelumnya ke Gateway sepuluh kali dalam rentang waktu satu menit.

Anda dapat menjalankan skrip berikut untuk membuat permintaan:

#!/bin/sh
for i in $(seq 1 11); do
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
    sleep 1
done

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_NAME adalah nama Gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME adalah nama host yang ditentukan dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Tindakan ini akan memicu pelanggaran kuota dan menimbulkan kesalahan yang mirip dengan berikut ini:

{"fault":{"faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}

Menguji penerapan operasi REST

Untuk menguji penerapan operasi REST, gunakan perintah berikut untuk mengirim permintaan ke Gateway menggunakan URL yang tidak ada dalam set operasi API:

curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_NAME adalah nama Gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME adalah nama host yang ditentukan dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Permintaan akan gagal dengan respons yang mirip dengan berikut:

{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}

Melihat Analisis API Apigee di konsol Google Cloud

Anda dapat melihat traffic API yang ditangani oleh GKE Gateway dan APIMExtensionPolicy menggunakan Analisis API Apigee di konsol Google Cloud :

  1. Buka halaman Apigee API management di konsol Google Cloud :

    Pengelolaan API Apigee

  2. Pilih organisasi Apigee tempat Anda menginstal Apigee Operator untuk Kubernetes.
  3. Pilih Analytics > Metrik API di menu navigasi samping.
  4. Di tab Performa Proxy API, pilih lingkungan yang Anda buat di langkah penginstalan opsional Buat lingkungan Apigee, atau lingkungan yang dibuat oleh Apigee Operator untuk Kubernetes selama penginstalan. Nama lingkungan akan diawali dengan awalan apigee-ext-proc-enabled-env.
  5. Amati traffic API yang direkam.

Memecahkan masalah

Jika Anda mengalami masalah saat menggunakan kebijakan pengelolaan API dengan Apigee Operator untuk Kubernetes, lihat Memecahkan masalah Apigee Operator untuk Kubernetes untuk mengetahui solusi atas error umum.

Langkah berikutnya

Untuk menambahkan kebijakan tambahan, lihat Menambahkan kebijakan ke GKE Gateway.