Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Topik ini menjelaskan cara menyiapkan dan men-deploy proxy API yang dikonfigurasi untuk menggunakan autentikasi Google.
Pengantar
Apigee mendukung penggunaan token OAuth Google atau token OpenID Connect untuk mengautentikasi layanan Google seperti Cloud Logging dan Secret Manager serta layanan kustom yang berjalan di produk tertentu seperti Cloud Functions dan Cloud Run. Google Cloud
Untuk menggunakan fitur ini, Anda harus mengonfigurasi elemen XML <Authentication>
dalam salah satu konteks berikut:
- Kebijakan AssignMessage
- Kebijakan ServiceCallout
- Kebijakan ExternalCallout
- Konfigurasi TargetEndpoint
Setelah Anda menyelesaikan beberapa langkah penyiapan dasar (seperti yang dijelaskan dalam topik ini), Apigee akan melakukan pembuatan token dan membuat panggilan yang aman ke layanan Google yang ditargetkan atau layanan yang dihosting kustom untuk Anda, tanpa perlu menetapkan header autentikasi secara manual atau mengubah permintaan layanan. Dari perspektif developer API, proses panggilan layanan Google dari dalam proxy API yang dikonfigurasi dengan benar ditangani dengan lancar.
Opsi konfigurasi proxy API
Bagian ini menjelaskan tempat Anda dapat menggunakan elemen XML <Authentication>
untuk
mengaktifkan autentikasi Token OAuth Google atau OpenID Connect:
Opsi konfigurasi | Deskripsi |
---|---|
Kebijakan AssignMessage | Kebijakan AssignMessage memungkinkan Anda menambahkan header yang diperlukan untuk autentikasi Google dan penyisipan token. Untuk mengetahui detail dan contoh penggunaan, lihat kebijakan AssignMessage. |
Kebijakan ServiceCallout | Kebijakan ServiceCallout memungkinkan Anda memanggil layanan internal atau eksternal lainnya dari proxy API. Misalnya, ServiceCallout dapat memanggil layanan Google eksternal atau layanan yang dihosting kustom. Untuk mengetahui detail dan contoh penggunaan, lihat kebijakan ServiceCallout. |
Kebijakan ExternalCallout | Kebijakan ExternalCallout memungkinkan Anda mengirim permintaan gRPC ke server gRPC untuk menerapkan perilaku kustom yang tidak didukung oleh kebijakan Apigee. Untuk mengetahui detail penggunaan dan contohnya, lihat kebijakan ExternalCallout. |
TargetEndpoint | Tentukan layanan Google atau layanan yang dihosting kustom sebagai endpoint target proxy API. Untuk mengetahui detail dan contoh penggunaan, lihat Referensi konfigurasi Proxy API. |
Konteks yang didukung Token Auth Google
Elemen <Authentication>
memiliki dua konfigurasi sub-elemen:
<GoogleAccessToken>
atau <GoogleIDToken>
. Tabel
berikut menunjukkan konteks tempat elemen ini didukung:
Digunakan di | GoogleAccessToken | GoogleIDToken |
---|---|---|
Kebijakan AssignMessage | Didukung | Didukung |
Kebijakan ServiceCallout | Didukung | Didukung |
Kebijakan ExternalCallout | Tidak didukung | Didukung |
TargetEndpoint | Didukung | Didukung |
Langkah-langkah penerapan
Bagian ini menjelaskan cara men-deploy proxy API yang menggunakan autentikasi Google untuk memanggil layanan Google yang ditargetkan atau layanan yang dihosting kustom. Kami menjelaskan langkah-langkah deployment untuk Apigee dan Apigee hybrid secara terpisah.
Men-deploy di Apigee
Langkah-langkah berikut menjelaskan cara men-deploy proxy API di Apigee, dengan proxy yang dikonfigurasi untuk melakukan panggilan terautentikasi ke layanan Google atau layanan yang dihosting kustom. Langkah-langkah ini mengasumsikan bahwa Anda telah membuat proxy, dan
bahwa proxy tersebut menyertakan elemen <Authentication>
dalam salah satu konteks yang didukung yang tercantum.
- Buat akun layanan Google di project yang sama dengan project tempat organisasi Apigee Anda dibuat. Google CloudAnda harus memberikan nama akun layanan ini saat men-deploy proxy API yang
dikonfigurasi untuk menggunakan autentikasi Google, dan token OAuth yang dihasilkan akan merepresentasikan
akun layanan.
Anda dapat membuat akun layanan di konsol Google Cloud atau dengan
perintah
gcloud
. Lihat Membuat dan mengelola akun layanan. - Beri pengguna yang akan melakukan deployment (deployer) izin
iam.serviceAccounts.actAs
di akun layanan. Lihat juga Tentang izin akun layanan.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: ID project. ID-nya sama dengan nama organisasi Anda.
- SA_NAME: Nama yang Anda berikan saat membuat akun layanan.
- MEMBER: Anggota yang akan ditambahkan pengikatannya. Harus dalam format
user|group|serviceAccount:email
ataudomain:domain
. - Beri akun layanan izin yang diperlukan untuk berinteraksi dengan layanan Google yang ditargetkan. Misalnya, jika Anda ingin memanggil layanan Google Logging, akun layanan ini harus menyertakan izin yang diperlukan untuk berkomunikasi dengan layanan tersebut. Lihat juga Memahami peran.
- Sebelum men-deploy proxy API yang dikonfigurasi untuk menggunakan autentikasi Google, Anda memerlukan:
- Nama akun layanan yang Anda buat sebelumnya. Contoh:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Sebagai pengguna yang melakukan deployment (deployer), Anda harus sudah memiliki atau diberi izin
iam.serviceAccounts.actAs
di akun layanan. Lihat Memberikan, mengubah, dan mencabut akses ke resource.
- Nama akun layanan yang Anda buat sebelumnya. Contoh:
- Deploy proxy API yang berisi konfigurasi autentikasi Google yang Anda terapkan. Anda dapat
menggunakan UI atau API Apigee untuk men-deploy proxy. Untuk mempelajari lebih lanjut, lihat Men-deploy proxy API.
- Jika menggunakan UI, Anda akan diminta untuk memberikan nama akun layanan. Gunakan nama akun layanan proxy yang Anda buat di Langkah 1. Contoh:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Jika Anda lebih memilih men-deploy proxy menggunakan Apigee Deployment API, berikut contoh
perintah cURL yang dapat Anda gunakan. Perhatikan
bahwa perintah menyertakan nama akun layanan sebagai parameter kueri. Ini adalah nama
akun layanan yang Anda buat di Langkah 1:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Dengan:
TOKEN
: Token OAuth yang harus Anda dapatkan sebagai ganti kredensial Google Anda. Untuk mengetahui detailnya, lihat Mendapatkan token akses OAuth 2.0.ORG_NAME
: Nama organisasi Apigee Anda.ENV_NAME
: Nama lingkungan tempat proxy API akan di-deploy.SA_NAME
: Nama yang Anda berikan saat membuat akun layanan.PROJECT_ID
: ID project Google Cloud Anda (sama dengan nama organisasi).
- Jika menggunakan UI, Anda akan diminta untuk memberikan nama akun layanan. Gunakan nama akun layanan proxy yang Anda buat di Langkah 1. Contoh:
- Setelah deployment selesai, uji proxy API Anda untuk memastikan layanan Google menampilkan respons yang diharapkan.
Dengan:
Men-deploy di Apigee Hybrid
Langkah-langkah berikut menjelaskan cara men-deploy proxy API yang dikonfigurasi untuk melakukan
panggilan yang diautentikasi ke layanan Google ke Apigee hybrid.
Langkah-langkah ini mengasumsikan bahwa Anda telah membuat proxy, dan
bahwa proxy tersebut menyertakan elemen <Authentication>
dalam salah satu konteks yang didukung yang tercantum.
- Buat akun layanan dan kunci untuk komponen runtime Apigee Hybrid menggunakan
salah satu metode berikut:
- Gunakan alat
create-service-account
yang disertakan dengan Apigee Hybrid untuk membuat akun layananapigee-runtime
. Alat ini membuat akun layanan dan menampilkan kunci akun layanan. Lihat create-service-account untuk mengetahui detailnya. - Buat akun layanan di konsol Google Cloud atau dengan
perintah
gcloud
. Lihat Membuat dan mengelola akun layanan. Untuk mengambil kunci akun layanan, lihat Membuat dan mengelola kunci akun layanan.
- Gunakan alat
- Buka file
overrides.yaml
dan tentukan jalur ke file kunci akun layanan untuk setiap lingkungan yang memerlukan kemampuan autentikasi Google:envs: - name: "ENVIRONMENT_NAME" serviceAccountPaths: runtime: "KEY_FILE_PATH"
Contoh:
envs: - name: "test" serviceAccountPaths: runtime: "./service_accounts/my_runtime_sa.json"
- Terapkan file penggantian ke cluster Anda menggunakan
Helm:
helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f overrides.yaml
- Buat akun layanan kedua, yang kita sebut akun layanan proxy. Akun layanan ini harus berada di project Google Cloud yang sama dengan yang Anda gunakan untuk membuat organisasi Apigee. Anda harus memberikan alamat email akun layanan ini saat men-deploy proxy API yang dikonfigurasi untuk menggunakan autentikasi Google, dan token OAuth yang dihasilkan akan merepresentasikan akun layanan.
- Beri pengguna yang akan melakukan deployment (deployer) izin
iam.serviceAccounts.actAs
di akun layanan. Lihat juga Tentang izin akun layanan.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: ID project. ID-nya sama dengan nama organisasi Anda.
- SA_NAME: Nama yang Anda berikan saat membuat akun layanan.
- MEMBER: Anggota yang akan ditambahkan pengikatannya. Harus dalam format user|group|serviceAccount:email atau domain:domain.
- Berikan izin akun layanan proxy yang diperlukan untuk berkomunikasi dengan layanan Google yang ditargetkan. Misalnya, jika Anda ingin memanggil layanan Google Logging, akun layanan ini harus menyertakan izin yang diperlukan untuk berkomunikasi dengan layanan tersebut. Lihat juga Memahami peran.
- Pastikan runtime dapat meniru identitas akun layanan proxy. Untuk memberikan kemampuan ini, beri akun layanan runtime peran
iam.serviceAccountTokenCreator
di akun layanan proxy. Lihat juga Tentang izin akun layanan. Contoh:gcloud iam service-accounts add-iam-policy-binding \ PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Dengan:
- PROJECT_ID: ID project. ID sama dengan nama organisasi Anda. Perhatikan bahwa Anda tidak harus menggunakan project yang terkait dengan organisasi Anda untuk membuat akun layanan runtime. Pastikan Anda menggunakan project ID yang benar dalam perintah ini.
- PROXY_SA_NAME: ID untuk akun layanan proxy.
- RUNTIME_SA_NAME: ID untuk akun layanan runtime.
- Sebelum men-deploy proxy API yang dikonfigurasi untuk menggunakan autentikasi Google, Anda memerlukan:
- Nama akun layanan proxy yang Anda buat sebelumnya. Contoh:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Sebagai pengguna yang melakukan deployment, Anda harus sudah memiliki atau diberi izin
iam.serviceAccounts.actAs
di Google Cloud Project tempat organisasi Apigee disediakan. Lihat Memberikan, mengubah, dan mencabut akses ke resource.
- Nama akun layanan proxy yang Anda buat sebelumnya. Contoh:
- Deploy proxy API yang berisi konfigurasi autentikasi Google yang Anda terapkan. Anda dapat
menggunakan UI atau API Apigee untuk men-deploy proxy. Untuk mempelajari lebih lanjut, lihat Men-deploy proxy API.
- Jika menggunakan UI, Anda akan diminta untuk memberikan nama akun layanan. Gunakan nama
akun layanan proxy yang Anda buat sebelumnya. Contoh:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Jika Anda lebih memilih men-deploy proxy menggunakan Apigee Deployment API, berikut contoh
perintah cURL yang dapat Anda gunakan. Perhatikan
bahwa perintah menyertakan nama akun layanan sebagai parameter kueri. Ini adalah nama
akun layanan proxy:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Dengan:
TOKEN
: Token OAuth yang harus Anda dapatkan sebagai ganti kredensial Google Anda. Untuk mengetahui detailnya, lihat Mendapatkan token akses OAuth 2.0.ORG_NAME
: Nama organisasi Apigee Anda.ENV_NAME
: Nama lingkungan tempat proxy API akan di-deploy.PROXY_SA_NAME
: Nama akun layanan proxy.PROJECT_ID
: ID project Google Cloud Anda (sama dengan nama organisasi).
- Jika menggunakan UI, Anda akan diminta untuk memberikan nama akun layanan. Gunakan nama
akun layanan proxy yang Anda buat sebelumnya. Contoh:
- Setelah deployment selesai, uji proxy API Anda untuk memastikan layanan Google menampilkan respons yang diharapkan.
Dengan:
Tentang izin akun layanan
Untuk mengonfigurasi proxy API agar menggunakan autentikasi Google, Anda harus membuat akun layanan seperti yang dijelaskan dalam tabel berikut. Lihat juga Membuat dan mengelola akun layanan.
Akun layanan | Diperlukan untuk | Deskripsi |
---|---|---|
Proxy | Apigee dan Apigee Hybrid | Memiliki izin yang diperlukan agar proxy API dapat melakukan panggilan yang diautentikasi ke layanan Google yang ditargetkan.
|
Runtime | Khusus Apigee Hybrid | Memungkinkan runtime Apigee membuat token untuk mengautentikasi layanan Google yang diminta oleh proxy API. Akun layanan ini "meniru identitas" akun layanan khusus proxy untuk melakukan panggilan yang diautentikasi atas namanya.
|