使用 OCI API 閘道設定 REST 端點的資源型存取

以資源為基礎的存取控制可讓您根據使用者的屬性和特性,管理對資源的存取。這不同於以角色為基礎的存取控制,其中的資源存取權是根據角色所授予。透過資源型存取控制,您可以針對個別用戶精細指定 REST API 集合 (部署) 的權限。

以下是針對 REST API 端點實行以資源為基礎的存取控制的一些優點:

  • 對 Oracle SaaS 和 Oracle Cloud Infrastructure (OCI) 代管的 API 端點實施微點控制。
  • 請避免對一般使用者和應用程式顯示後端 API 證明資料。
  • 對透過各種 OCI 服務 (例如 Oracle Cloud Infrastructure Kubernetes EngineOCI Functions) 公開的 API 強制執行以資源為基礎的存取。

OCI API Gateway 在為 REST 端點導入以資源為基礎的存取控制時,啟用額外的 API 管理功能:

  • 使用用量計畫協助將企業 API 貨幣化。
  • 使用速率限制和配額控制 API 使用狀況。
  • 運用儀表板監控合併的訂戶型 API 使用狀況。

架構

此架構概述 OCI 上代管之 REST 端點的資源型存取控制。來自人力資本管理 (HCM) 和供應鏈和製造 (SCM) 的使用者和應用程式要求只能存取其各自的資源。REST 端點透過 Oracle SaaS 應用程式和 Oracle 服務 (例如 OCI FunctionsOracle Integration Cloud ServiceOCI Kubernetes Engine) 代管和公開。

HCM 和 SCM 部署是在 OCI API 閘道中建立。REST 端點是在個別部署底下設定為後端服務。OCI Identity and Access Management 機密應用程式用於 HCM 和 SCM 網域。用戶端機密應用程式的範圍和受眾詳細資料應與個別的 OCI API 閘道部署 JWT 驗證組態相符。HCM 和 SCM 用戶應該可以存取其機密應用程式存取記號 URL、從屬端 ID、從屬端密碼以及權杖產生範圍。與用戶共用 OCI API Gateway HCM 和 SCM 部署端點。

在公用子網路中佈建 OCI API 閘道以攔截所有網際網路流量。OCI FunctionsOracle Integration Cloud Service 是原生 OCI 服務,可顯示設定為後端 OCI API Gateway 部署的 REST API。OCI API Gateway 透過服務閘道與這些 REST API 通訊。OCI Kubernetes 引擎容器服務可以在專用子網路中代管,而透過 OCI Kubernetes 引擎叢集公開的 REST 端點。OCI API GatewayOCI Kubernetes Engine 叢集之間的通訊可透過安全清單和路由規則進行啟用。

下圖說明此參考架構。



以資源為基礎的 -access-rest-api-arch.zip

下列圖表說明資料流程:



HCM 和 SCM 使用者的資料流程如下:

  1. (a,b) 以範圍和目標對象設定用戶端機密應用程式和資源應用程式。
  2. (a,b) 使用 REST 端點、範圍和目標對象來設定 OCI API 閘道部署。
  3. (a,b) 使用者應用程式會使用用戶端機密應用程式產生 JWT 憑證。權杖包含編碼的範圍和對象。
  4. (a,b) 使用者使用其權杖觸發 OCI API 閘道端點部署。
  5. (a,b) OCI API Gateway 會根據部署中設定的範圍和目標對象驗證權杖。
  6. (a,b) 如果驗證成功,則會根據路由組態授予個別的 API 存取權。
  7. (a,b) 如果驗證失敗,則會傳回 401 個未授權的錯誤。

架構具有下列元件:

  • 地區

    Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個稱為可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。

  • 可用性網域

    可用性網域是區域內的獨立獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構 (例如電源或冷卻系統) 或內部可用性網域網路。因此,一個可用性網域的故障不應影響該區域中的其他可用性網域。

  • 容錯域

    容錯網域是可用性網域內的一組硬體和基礎架構。每個可用性網域都有三個具有獨立電源和硬體的容錯域。當您將資源分散到多個容錯域時,您的應用程式可以容忍容錯域內的實體伺服器故障、系統維護和電源故障。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

  • OCI Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes 引擎確定 ) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

  • API 閘道

    Oracle API Gateway 可讓您發布內含可從您網路存取之專用端點的 API,並視需要向公用網際網路公開。端點支援 API 驗證、要求和回應轉換、CORS、驗證和授權以及要求限制。

  • 功能

    Oracle Cloud Infrastructure Functions 是一個完全託管的多租戶、高度可擴充、隨選、Functions-as-a-Service (FaaS) 平台。由 Fn Project 開放原始碼引擎提供技術支援。Functions 可讓您部署程式碼,並直接呼叫程式碼或觸發程式碼以回應事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。

  • 整合

    Oracle Integration 是一項完全託管的服務,可讓您整合應用程式、自動化流程、深入瞭解業務流程,以及建立視覺化應用程式。

  • 身分識別與存取管理 (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) 是 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的存取控制層。IAM API 和使用者介面可讓您管理識別網域和識別網域內的資源。每個 OCI IAM 識別網域都代表獨立的識別與存取管理解決方案,或代表不同的使用者群體。

建議

使用下列建議作為起點。您的需求可能與此處描述的架構不同。
  • 生產環境和非生產環境

    為生產環境和非生產環境建立多個識別網域和個別的 OCI API Gateway 執行處理,以更好地控制使用者存取和隔離。

  • 安全

    將後端證明資料儲存在 OCI Vault 中以增強安全性。如果從屬端密碼遭到洩漏,請重新產生從屬端密碼。

注意事項

實行此參照架構時請考量下列事項:

  • 效能

    OCI API Gateway 提供速率限制和配額功能,可讓您發揮最大效能並降低延遲。以下是一些優點:

    • 保護您的後端不會被太多要求超載,以維持高可用性及公平的資源使用。
    • 防止拒絕服務攻擊。
    • 限制資源使用成本。
    • 限制客戶使用者使用的 API 將 API 貨幣化。
  • 安全

    建立治理流程以管理從屬端證明資料和用戶。

  • 使用狀態

    在區域子網路 (非可用性網域特定子網路) 中建立 API 閘道,以確保高可用性。

  • 成本

    OCI API Gateway 是具有公平定價模式的合乎成本效益選項。

確認

  • 作者Subburam Mathuraiveeran
  • 提供者Wei Han, Robert Wunderlich