您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
如何取得 API 金鑰
以下範例說明如何取得 API 金鑰,用於驗證透過 Apigee Adapter for Envoy 代理的目標服務 API 呼叫。
1. 登入 Apigee
- 在瀏覽器中開啟 Apigee UI。
- 進入 UI 後,請選取您用來設定 Apigee Adapter for Envoy 的相同機構。
2. 可建立開發人員
您可以選取現有開發人員進行測試,也可以按照下列步驟建立新開發人員:
- 在側邊導覽選單中,依序選取「發布」>「開發人員」。
- 按一下「+ 開發人員」。
- 填寫對話方塊,建立新的開發人員。您可以選擇任何開發人員名稱/電子郵件地址。
3. 可建立 API 產品
請按照下方提供的產品建立範例操作。另請參閱「關於 API 產品設定」。
- 在側邊導覽選單中,依序選取「發布」>「API 產品」。
- 按一下「+ API 產品」。
- 按照下列步驟填寫「產品詳細資料」頁面。
- 在「Apigee remote service targets」(Apigee 遠端服務目標) 專區中,按一下「Add an Apigee remote service target」(新增 Apigee 遠端服務目標)。
- 在 Apigee 遠端服務目標對話方塊中,新增下列值:
屬性 值 說明 目標名稱 輸入目標服務的名稱。例如: httpbin.org由 Envoy Proxy 擔任前端的目標端點。 路徑 輸入要比對的服務資源路徑。例如: /headers。要在目標端點上比對的要求路徑。對這個路徑的 API Proxy 呼叫會與這個 API 產品相符。 - 按一下 [儲存]。
| 欄位 | 值 |
|---|---|
| 名稱 | httpbin-product
|
| 顯示名稱 | httpbin product
|
| 環境 | your_environment
請將此值設為您佈建 Apigee Adapter for Envoy 時使用的環境。 |
| 存取權 | Private
|
| Quota | 每 1 分鐘 5 個要求
另請參閱「Quota」。 |
4. 可建立開發人員應用程式
- 在側邊導覽選單中,依序選取「發布」>「應用程式」。
- 按一下「+ 應用程式」。
- 按照下列指示填寫「開發人員應用程式」頁面。請勿儲存,直到系統指示為止。
- 接著,將 API 產品新增至應用程式:
- 在「憑證」部分,按一下「+ 新增產品」,然後選取剛設定的產品:httpbin-product。
- 點選「建立」。
- 在「憑證」下方,按一下「金鑰」旁邊的「顯示」。
- 複製消費者金鑰的值。這個值是您用來對
httpbin服務發出 API 呼叫的 API 金鑰。
關於 API 產品
API 產品是 Apigee Remote Service 的主要控制點。 建立 API 產品並繫結至目標服務時,您會建立一項政策,這項政策會套用至您設定 Apigee Adapter for Envoy 處理的所有要求。
API 產品定義
在 Apigee 中定義 API 產品時,您可以設定多個參數,用於評估要求:
- 目標
- 要求路徑
- 配額
- OAuth 範圍
遠端服務目標
如果要求同時符合目標繫結 (例如
httpbin.org) 和要求路徑 (例如/httpbin),系統就會將 API 產品定義套用至要求。潛在目標清單會儲存為 API 產品的屬性。根據預設,Apigee Remote Service 會根據目標清單檢查 Envoy 的特殊
:authority (host)標頭,但您可以設定使用其他標頭。API 資源路徑
系統會根據下列規則比對您輸入的路徑:
- 單一斜線 (
/) 本身會比對任何路徑。 *在任何位置都有效,且會比對區隔 (斜線之間) 內的內容。**可放在結尾,比對行尾的所有內容。
配額
配額是指應用程式在一段時間內 (例如每小時、每天、每週或每月) 可向 API 提交的要求訊息數。如果應用程式達到配額上限,後續的 API 呼叫就會遭到拒絕。
配額用途配額可讓您在指定時間內,限制用戶端可對服務提出的要求數。配額通常用於強制執行與開發人員和合作夥伴的商業合約或服務水準協議,而非用於營運流量管理。舉例來說,配額可用於限制免費服務的流量,同時允許付費客戶享有完整存取權。
配額是在 API 產品中定義配額參數是在 API 產品中設定。舉例來說,建立 API 產品時,您可以選擇設定允許的配額限制、時間單位和間隔。
由於 API 金鑰會對應回 API 產品,因此每次驗證 API 金鑰時,系統都會遞減適當的配額計數器 (如果相關聯的產品中定義了配額)。
與 Apigee 執行階段不同,在產品定義中輸入配額後,Apigee 遠端服務會自動強制執行配額。如果要求獲得授權,系統會將要求計入允許的配額。
配額維護位置配額由遠端服務程序在本機維護及檢查,並與 Apigee 執行階段非同步維護。這表示配額不精確,如果有多個維護配額的遠端服務,配額可能會超出。如果與 Apigee 執行階段的連線中斷,在重新連線至 Apigee 執行階段前,本機配額會繼續做為獨立配額。
OAuth 範圍
如果您使用 JWT 權杖,可以將權杖限制為允許的 OAuth 範圍子集。 系統會根據 API 產品的範圍,檢查您發行的 JWT 符記範圍。
關於開發人員應用程式
設定 API 產品後,您將建立與開發人員相關聯的應用程式。應用程式可讓用戶端透過 API 金鑰或 JWT 權杖存取相關聯的 API 產品。
使用 JWT 型驗證
您可以使用 JWT 權杖發出經過驗證的 API Proxy 呼叫,不必使用 API 金鑰。本節說明如何使用
apigee-remote-service-cli token指令建立、檢查及輪替 JWT 權杖。總覽
Envoy 會使用 JWT 驗證篩選器處理 JWT 驗證和驗證程序。
通過驗證後,Envoy
ext-authz篩選器會將要求標頭和 JWT 傳送至apigee-remote-service-envoy。系統會根據 Apigee API 產品比對 JWT 的api_product_list和scope聲明,授權要求目標。建立 Apigee JWT 權杖
您可以使用 CLI 建立 Apigee JWT 權杖:
$CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
或是使用標準 OAuth 權杖端點。Curl 範例:
curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"使用 JWT 權杖
取得權杖後,只要在 Authorization 標頭中將權杖傳遞至 Envoy 即可。範例:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
JWT 權杖失敗
Envoy 拒絕
如果 Envoy 拒絕權杖,您可能會看到類似以下的訊息:
Jwks remote fetch is failed
如果是,請確認 Envoy 設定的
remote_jwks區段包含有效 URI,且 Envoy 可以連線,並確認您在安裝 Apigee Proxy 時已正確設定憑證。您應該可以透過 GET 呼叫直接呼叫 URI,並收到有效的 JSON 回應。範例:
curl https://myorg-eval-test.apigee.net/remote-service/certs
來自 Envoy 的其他訊息可能如下:
- 「Audiences in Jwt are not allowed」(Jwt 中的目標對象不得使用)
- 「Jwt issuer is not configured」(未設定 JWT 簽發者)
這些是 Envoy 設定中的需求,您可能需要修改。
檢查權杖
您可以使用 CLI 檢查權杖。範例
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
或
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
偵錯
請參閱「有效的 API 金鑰失敗」。記錄
您可以調整 $REMOTE_SERVICE_HOME/apigee-remote-service-envoy 服務的記錄層級。 所有記錄都會傳送至 stdout 和 stderr。
元素 必填 說明 -l, --log-level 有效層級:debug、info、warn、error。 調整記錄層級。預設值:info -j, --json-log 以 JSON 記錄形式發出記錄輸出內容。 Envoy 提供記錄功能。詳情請參閱下列 Envoy 說明文件連結:
使用網路 Proxy
您可以在 apigee-remote-service-envoy 二進位檔的環境中,使用 HTTP_PROXY 和 HTTPS_PROXY 環境變數插入 HTTP Proxy。使用這些變數時,您也可以使用 NO_PROXY 環境變數,排除透過 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
請注意,Apigee 遠端服務 Envoy 必須能連上 Proxy。
關於指標和數據分析
Prometheus 指標端點位於
:5001/metrics。您可以設定這個通訊埠號碼。請參閱「設定檔」。Envoy 分析
如要瞭解如何取得 Envoy 代理伺服器分析資料,請參閱下列連結:
Istio 數據分析
如要瞭解如何取得 Envoy 代理伺服器分析資料,請參閱下列連結:
Apigee 數據分析
Apigee Remote Service for Envoy 會將要求統計資料傳送至 Apigee,以進行數據分析處理。 Apigee 會在相關聯的 API 產品名稱下回報這些要求。
如要瞭解 Apigee Analytics,請參閱「Analytics 服務總覽」。
支援多租戶環境
您現在可以啟用介面卡,在 Apigee 機構中為多個環境提供服務。這項功能可讓您使用與一個 Apigee 組織相關聯的 Apigee Adapter for Envoy,為多個環境提供服務。在這項異動之前,一個介面卡一律會繫結至一個 Apigee 環境。
如要設定多個環境支援,請在
config.yaml檔案中,將tenant:env_name的值變更為*。例如:- 在編輯器中開啟
config.yaml檔案。 - 將
tenant.env_name的值變更為*。例如:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://myorg-myenv.apigee.net/remote-service org_name: apigee-docs-hybrid-a env_name: * allow_unverified_ssl_cert: true analytics: collection_interval: 10s auth: jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token - 儲存檔案。
- 套用檔案:
kubectl apply -f $CLI_HOME/config.yaml
設定多環境模式時,您也必須設定 Envoy,在
envoy-config.yaml檔案的virtual_hosts:routes區段中新增下列中繼資料,將適當的環境值傳送至轉接程式。例如:- 使用 CLI 生成
envoy-config.yaml檔案。例如:$CLI_HOME/apigee-remote-service-cli samples create \ -t envoy-1.16 -c ./config.yaml --out myconfigs
- 開啟產生的檔案 (名為
envoy-config.yaml)。 - 在檔案的
virtual_host或routes部分新增下列中繼資料:typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: test以下範例說明如何為
virtual_host設定多條已定義的路徑,每條路徑都會將流量傳送至特定環境:filter_chains: - filters: - name: envoy.filters.network.http_connection_manager typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: ingress_http route_config: virtual_hosts: - name: default domains: "*" routes: - match: { prefix: /test } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: test - match: { prefix: /prod } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: prod - 視需要重複最後一個步驟,新增其他環境。
- 儲存檔案並套用。
在介面卡和 Apigee 執行階段之間設定 mTLS
您可以在轉接程式
config.yaml檔案的tenant區段中提供用戶端 TLS 憑證,在轉接程式和 Apigee 執行階段之間使用 mTLS。這項異動適用於所有支援的 Apigee 平台。此外,這項功能也為 Apigee Edge Private Cloud 平台的分析功能啟用 mTLS。例如:tenant: tls: ca_file: path/ca.pem cert_file: path/cert.pem key_file: path/key.pem allow_unverified_ssl_cert: false
| 名稱 | httpbin-app
|
| 顯示名稱 | httpbin app
|
| 開發人員 | 選取先前建立的開發人員,或從清單中選擇任何開發人員。 |