使用 OCI API 网关为 REST 端点配置基于资源的访问
通过基于资源的访问控制,您可以根据用户的属性和特性来管理对资源的访问。这与基于角色的访问控制不同,后者根据角色授予对资源的访问权限。通过基于资源的访问控制,可以为各个使用者细粒度分配对 REST API 集合(部署)的权限。
以下是为 REST API 端点实施基于资源的访问控制的一些优势:
- 对 Oracle SaaS 和 Oracle Cloud Infrastructure (OCI) 托管 API 端点实施细粒度控制。
- 避免向最终用户和应用程序公开后端 API 身份证明。
- 对通过各种 OCI 服务(例如 Oracle Cloud Infrastructure Kubernetes Engine 和 OCI Functions )公开的 API 实施基于资源的访问。
在为 REST 端点实施基于资源的访问控制时, OCI API Gateway 支持其他 API 管理功能:
- 使用使用计划帮助企业 API 获利。
- 通过速率限制和配额控制 API 使用。
- 利用仪表盘监视基于订户的 API 使用情况。
体系结构
此架构概述了 OCI 上托管的 REST 端点基于资源的访问控制。来自人力资本管理 (HCM) 以及供应链和制造 (SCM) 的用户和应用程序请求只能访问各自的资源。REST 端点通过 Oracle SaaS 应用和 Oracle 服务(例如 OCI Functions 、Oracle Integration Cloud Service 和 OCI Kubernetes Engine )托管和公开。
HCM 和 SCM 部署在 OCI API Gateway 中创建。REST 端点在各自的部署下配置为后端服务。OCI Identity and Access Management 机密应用程序用于 HCM 和 SCM 域。客户端机密应用程序的范围和受众详细信息应与相应的 OCI API Gateway 部署 JWT 验证配置匹配。HCM 和 SCM 使用者应有权访问其机密应用程序访问令牌 URL、客户端 ID、客户端密钥以及令牌生成范围。与使用者共享 OCI API 网关 HCM 和 SCM 部署端点。
在公共子网中预配 OCI API 网关以拦截所有互联网流量。OCI Functions 和 Oracle Integration Cloud Service 是原生 OCI 服务,可公开配置为后端 OCI API Gateway 部署的 REST API。OCI API 网关通过服务网关与这些 REST API 通信。OCI Kubernetes 引擎容器服务可以托管在专用子网中,也可以托管通过 OCI Kubernetes 引擎集群公开的 REST 端点。可以通过安全列表和路由规则启用 OCI API 网关与 OCI Kubernetes 引擎集群之间的通信。
下图说明了此引用体系结构。
下图说明了数据流:
HCM 和 SCM 用户的数据流如下所示:
- (a,b) 根据范围和受众配置客户端机密应用程序和资源应用程序。
- (a,b) 使用 REST 端点、范围和受众配置 OCI API 网关部署。
- (a,b) 用户应用程序使用客户端机密应用程序生成 JWT 令牌。令牌包含编码的范围和受众。
- (a,b) 用户使用其令牌触发 OCI API Gateway 端点部署。
- (a,b) OCI API 网关根据部署中配置的范围和受众验证令牌。
- (a,b) 如果验证成功,则根据路由配置授予相应的 API 访问权限。
- (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 Engine 或 OKE )是一项完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine 在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。OKE 使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。
- API 网关
借助 Oracle API Gateway,您可以发布具有专用端点的 API,这些专用端点可从网络内访问,并且您可以根据需要向公共互联网公开。这些端点支持 API 验证、请求和响应转换、CORS、验证和授权以及请求限制。
- 函数
Oracle Cloud Infrastructure Functions 是一个完全托管的多租户、高度可扩展的按需函数即服务 (FaaS) 平台。它由 Fn Project 开源引擎提供支持。使用函数可以部署代码,也可以直接调用代码或触发代码以响应事件。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 网关实例,以更好地控制用户访问和隔离。
- 安全
将后端身份证明存储在 OCI Vault 中以提高安全性。如果客户端密钥被泄露,请重新生成客户端密钥。
注意事项
实现此引用体系结构时,请考虑以下事项:
- 性能
OCI API Gateway 提供速率限制和配额功能,可帮助您充分提高性能并减少延迟。以下是一些好处:
- 通过避免后端被过多的请求所淹没,保持资源的高可用性和公平使用。
- 防止拒绝服务攻击。
- 限制资源消耗的成本。
- 限制客户用户对 API 的使用,以将 API 货币化。
- 安全
建立治理流程以管理客户端身份证明和使用者。
- 可用性
在区域子网(非特定于可用性域的子网)中创建 API 网关,以确保高可用性。
- 成本
OCI API 网关是一个经济高效的选项,具有公平的定价模式。