Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Baca dokumentasi Apigee Edge.
Cara mendapatkan kunci API
Contoh berikut menjelaskan cara mendapatkan kunci API yang dapat Anda gunakan untuk memvalidasi panggilan API ke layanan target yang di-proxy-kan melalui Apigee Adapter untuk Envoy.
1. Login ke Apigee
- Buka UI Apigee di browser.
- Setelah berada di UI, pilih organisasi yang sama dengan yang Anda gunakan untuk mengonfigurasi Apigee Adapter untuk Envoy.
2. Membuat Developer
Anda dapat menggunakan developer yang sudah ada untuk melakukan pengujian, atau membuat developer baru dengan cara berikut:
- Pilih Publikasikan > Developer di menu navigasi samping.
- Klik + Developer.
- Isi dialog untuk membuat developer baru. Anda dapat menggunakan nama/email developer mana pun yang Anda inginkan.
3. Membuat Produk API
Ikuti contoh pembuatan Produk yang diberikan di bawah ini. Lihat juga Tentang konfigurasi produk API.
- Pilih Publish > API Products di menu navigasi samping.
- Klik +Create.
- Isi halaman Detail produk sebagai berikut. Jangan klik Simpan sebelum diminta untuk melakukannya.
Kolom Nilai Nama httpbin-product
Display Name httpbin product
Lingkungan your_environment Tetapkan parameter ini ke lingkungan yang Anda gunakan saat menyediakan Apigee Adapter untuk Envoy dengan
apigee-remote-service-cli
.Akses Private
Kuota 5 permintaan setiap 1 menit Lihat juga Tentang produk API.
- Di bagian Atribut Khusus, klik +TAMBAHKAN ATRIBUT KUSTOM.
- Masukkan pasangan nama/nilai ini:
- Name: Masukkan nama atribut ini:
apigee-remote-service-targets
- Nilai: Masukkan nama layanan target. Contoh:
httpbin.org
- Name: Masukkan nama atribut ini:
- Klik OK.
- Klik Save.
4. Membuat Aplikasi Developer
- Pilih Publikasikan > Aplikasi di menu navigasi samping.
- Klik + Aplikasi.
- Isi halaman Aplikasi Developer sebagai berikut. Jangan Simpan sebelum diminta.
- Di bagian Credentials, klik + Add product, lalu pilih produk yang baru saja Anda konfigurasikan: httpbin-product.
- Klik Create.
- Di bagian Credentials, klik Show di samping Key.
- Salin nilai Kunci Konsumen. Nilai ini adalah kunci API
yang akan Anda gunakan untuk membuat panggilan API ke layanan
httpbin
.
Nama | httpbin-app
|
Display Name | httpbin app
|
Developer | Pilih developer yang Anda buat sebelumnya, atau pilih developer mana pun yang Anda inginkan dari daftar. |
Tentang produk API
Produk API adalah titik kontrol utama untuk Apigee Remote Service. Saat membuat Produk API dan mengikatnya ke layanan target, Anda membuat kebijakan yang akan diterapkan ke setiap permintaan yang dikonfigurasi agar ditangani oleh Adaptor Apigee untuk Envoy.
Definisi Produk API
Saat menentukan Produk API di Apigee, Anda dapat menetapkan sejumlah parameter yang akan digunakan untuk mengevaluasi permintaan:
- Target
- Request path
- Kuota
- Cakupan OAuth
Target Layanan Jarak Jauh
Definisi Produk API akan berlaku untuk permintaan jika permintaan sesuai dengan binding target (misalnya, httpbin.org
) dan jalur permintaan (misalnya, /httpbin
). Daftar target potensial disimpan sebagai atribut pada Produk API.
Secara default, Apigee Remote Service memeriksa header :authority (host)
khusus Envoy terhadap daftar targetnya; tetapi dapat dikonfigurasi untuk menggunakan header lain.
Jalur Resource API
Jalur yang dimasukkan cocok dengan aturan berikut:
- Satu garis miring (
/
) saja cocok dengan jalur apa pun. *
valid di mana saja dan cocok di dalam segmen (di antara garis miring).**
valid di akhir dan cocok dengan apa pun hingga akhir baris.
Kuota
Kuota menentukan jumlah pesan permintaan yang boleh dikirimkan aplikasi ke API selama satu jam, hari, minggu, atau bulan. Jika aplikasi mencapai batas kuota, panggilan API berikutnya akan ditolak.
Kasus penggunaan kuotaKuota memungkinkan Anda menerapkan jumlah permintaan yang dapat diajukan klien ke layanan dalam jangka waktu tertentu. Kuota sering kali digunakan untuk memberlakukan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Misalnya, kuota dapat digunakan untuk membatasi traffic pada layanan gratis, sekaligus memungkinkan akses penuh untuk pelanggan yang membayar.
Kuota ditentukan di Produk APIParameter kuota dikonfigurasi di Produk API. Misalnya, saat membuat Produk API, Anda juga dapat menetapkan batas kuota, satuan waktu, dan interval yang diizinkan.
>
Karena kunci API dipetakan kembali ke Produk API, setiap kali kunci API diverifikasi, penghitung kuota yang sesuai dapat dikurangi (jika Kuota ditentukan dalam Produk terkait).
Tidak seperti dalam runtime Apigee, Kuota yang dimasukkan dalam Definisi produk otomatis diberlakukan oleh Apigee Remote Service. Jika permintaan diotorisasi, permintaan akan mengurangi kuota yang diizinkan.
Tempat kuota dipertahankanKuota dikelola dan diperiksa secara lokal oleh proses Remote Service dan dipelihara secara asinkron dengan Apigee Runtime. Artinya, kuota tidak ditentukan dan mungkin akan mengalami kelebihan jika Anda memiliki lebih dari satu Layanan Jarak Jauh yang mempertahankan kuota. Jika koneksi ke Runtime Apigee terganggu, kuota lokal akan terus menjadi kuota mandiri hingga dapat terhubung kembali ke Runtime Apigee.
Cakupan OAuth
Jika menggunakan token JWT, Anda dapat membatasi token ke subset cakupan OAuth yang diizinkan. Cakupan yang ditetapkan ke token JWT yang Anda keluarkan akan diperiksa dengan cakupan Produk API.
Tentang Aplikasi developer
Setelah mengonfigurasi Produk API, Anda akan membuat Aplikasi yang terkait dengan Developer. Aplikasi ini memungkinkan klien mengakses Produk API yang terkait dengan Kunci API atau Token JWT.
Menggunakan autentikasi berbasis JWT
Anda bisa menggunakan token JWT untuk melakukan panggilan proxy API yang diautentikasi alih-alih menggunakan kunci API. Bagian ini menjelaskan cara menggunakan perintah apigee-remote-service-cli token
untuk membuat, memeriksa, dan merotasi token JWT. Untuk lingkungan hybrid Apigee, Anda dapat menggunakan perintah ini untuk membuat rahasia Kubernetes untuk menyimpan JWT.
Ringkasan
Verifikasi dan autentikasi JWT ditangani oleh Envoy menggunakan Filter Autentikasi JWT miliknya.
Setelah diautentikasi, filter ext-authz
Envoy akan mengirimkan header permintaan dan JWT ke
apigee-remote-service-envoy
. API ini mencocokkan klaim api_product_list
dan scope
JWT terhadap Produk Apigee API untuk memberikan otorisasinya terhadap target permintaan.
Membuat token JWT Apigee
Token JWT Apigee dapat dibuat menggunakan CLI:
apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
Atau dengan menggunakan endpoint token OAuth standar. Contoh curl:
curl https://org-env.apigee.net/remote-service/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"
Menggunakan token JWT
Setelah mendapatkan token, Anda cukup meneruskannya ke Envoy di header Otorisasi. Contoh:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
Kegagalan token JWT
Penolakan Envoy
Jika Envoy menolak token, Anda mungkin melihat pesan seperti:
Jwks remote fetch is failed
Jika ya, pastikan konfigurasi Envoy Anda berisi URI yang valid di bagian
remote_jwks
, yang dapat dijangkau oleh Envoy, dan Anda telah menetapkan sertifikat
dengan benar saat menginstal proxy Apigee. Anda akan dapat memanggil URI secara langsung dengan panggilan GET dan menerima respons JSON yang valid.
Contoh:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Pesan lain dari Envoy mungkin terlihat seperti:
- "Audiens di Jwt tidak diizinkan"
- "Penerbit Jwt tidak dikonfigurasi"
Berikut adalah persyaratan dalam konfigurasi Envoy yang mungkin perlu Anda ubah.
Memeriksa token
Anda dapat menggunakan CLI untuk memeriksa token Anda. Contoh
apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
atau
apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Proses Debug
Lihat bagian Kunci API yang valid gagal.Logging
Anda dapat menyesuaikan level logging pada layanan $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Semua pencatatan log dikirim ke {i>stderr<i}.
Elemen | Diperlukan | Deskripsi |
---|---|---|
-l, --level log | Level yang valid: debug, info, peringatan, error. | Menyesuaikan level logging. Default: info |
-j, --json-log | Memberikan output log sebagai data JSON. |
Envoy menyediakan logging. Untuk informasi selengkapnya, lihat link dokumentasi Envoy berikut:
Mengubah nama secret kebijakan
Secret Kubernetes yang di-deploy ke cluster berisi kredensial yang diperlukan adaptor untuk mengautentikasi komunikasi dengan proxy layanan jarak jauh. Secret ini memerlukan titik pemasangan volume, yang dapat dikonfigurasi. Secara default, direktori pemasangannya adalah /policy-secret
.
Untuk mengubah direktori pemasangan, ikuti langkah-langkah berikut:
- Jalankan perintah ini:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name
Contoh:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
- Buka
$CLI_HOME/samples/apigee-envoy-adapter.yaml
di editor. - Ubah nama direktori pemasangan menjadi nama baru:
volumeMounts: - mountPath: /config name: apigee-remote-service-envoy readOnly: true - mountPath: /opt/apigee/tls name: tls-volume readOnly: true - mountPath: /my-mount-point name: policy-secret readOnly: true
- Simpan file dan terapkan ke mesh layanan:
kubectl apply -f $REMOTE_SERVICE_HOME/samples/apigee-envoy-adapter.yaml
Menggunakan proxy jaringan
Proxy HTTP dapat disisipkan menggunakan variabel lingkungan HTTP_PROXY dan HTTPS_PROXY di lingkungan biner apigee-remote-service-envoy. Jika menggunakannya, variabel lingkungan NO_PROXY juga dapat digunakan untuk mengecualikan host tertentu agar tidak dikirim melalui proxy.
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
Perlu diingat bahwa proxy harus dapat dijangkau dari apigee-remote-service-envoy.
Tentang metrik dan analisis
Endpoint metrik Prometheus tersedia di :5001/metrics
. Anda dapat mengonfigurasi
nomor port ini. Lihat File konfigurasi.
Analisis Envoy
Link berikut memberikan informasi tentang cara mendapatkan data analisis proxy Envoy:
Analisis Istio
Link berikut memberikan informasi tentang cara mendapatkan data analisis proxy Envoy:
Analisis Apigee
Apigee Remote Service untuk Envoy mengirim statistik permintaan ke Apigee untuk pemrosesan analisis. Apigee melaporkan permintaan ini di bagian nama Produk API terkait.
Untuk informasi tentang analisis Apigee, lihat Ringkasan layanan Analytics.