OCI APIゲートウェイを使用したRESTエンドポイントのリソースベース・アクセスの構成
リソースベースのアクセス制御を使用すると、ユーザーの属性および特性に基づいてリソースへのアクセスを管理できます。これは、ロールに基づいてリソースへのアクセス権が付与されるロール・ベースのアクセス制御とは異なります。リソースベースのアクセス制御により、REST APIコレクション(デプロイメント)に対する権限を個々のコンシューマに対してきめ細かく割り当てることができます。
REST APIエンドポイントにリソースベースのアクセス制御を実装する利点の一部を次に示します:
- Oracle SaaSおよびOracle Cloud Infrastructure (OCI)でホストされるAPIエンドポイントのファイングレイン制御を実装します。
- バックエンドAPI資格証明をエンド・ユーザーおよびアプリケーションに公開しないでください。
- Oracle Cloud Infrastructure Kubernetes EngineやOCI FunctionsなどのさまざまなOCIサービスを通じて公開されるAPIにリソースベースのアクセスを適用します。
OCI API Gatewayは、RESTエンドポイントのリソースベースのアクセス制御を実装する際に、追加のAPI管理機能を有効にします:
- 使用計画を使用してエンタープライズAPIの収益化を支援します。
- レート制限と割当て制限により、APIの使用を制御します。
- ダッシュボードを活用して、加入者ベースの統合APIの使用状況を監視します。
アーキテクチャ
このアーキテクチャでは、OCIでホストされているRESTエンドポイントのリソースベースのアクセス制御の概要を示します。人材管理(HCM)とサプライチェーンおよび製造(SCM)のユーザーおよびアプリケーション・リクエストは、それぞれのリソースにのみアクセスできます。RESTエンドポイントは、Oracle SaaSアプリケーションおよびOCI Functions、Oracle Integration Cloud Service、OCI Kubernetes EngineなどのOracleサービスを介してホストおよび公開されます。
HCMおよびSCMデプロイメントは、OCI API Gatewayで作成されます。RESTエンドポイントは、それぞれのデプロイメントの下にバックエンド・サービスとして構成されます。OCI Identity and Access Managementの機密アプリケーションは、HCMおよびSCMドメインに使用されます。クライアント機密アプリケーションのスコープおよびオーディエンス詳細は、それぞれのOCI API GatewayデプロイメントのJWT検証構成と一致する必要があります。HCMおよびSCMコンシューマは、機密アプリケーション・アクセス・トークンURL、クライアントID、クライアント・シークレットおよびトークン生成の範囲にアクセスできる必要があります。OCI API GatewayのHCMおよびSCMデプロイメント・エンドポイントをコンシューマと共有します。
OCI API Gatewayをパブリック・サブネットにプロビジョニングして、すべてのインターネット・トラフィックをインターセプトします。OCI FunctionsおよびOracle Integration Cloud Serviceは、バックエンドのOCI API Gatewayデプロイメントとして構成されたREST APIを公開するネイティブOCIサービスです。OCI API Gatewayは、サービス・ゲートウェイを介してこれらのREST APIと通信します。OCI Kubernetes Engineコンテナ・サービスは、プライベート・サブネットおよびOCI Kubernetes Engineクラスタを介して公開されるRESTエンドポイントでホストできます。OCI API GatewayとOCI Kubernetes Engineクラスタ間の通信は、セキュリティ・リストおよびルーティング・ルールを介して有効にできます。
次の図は、このリファレンス・アーキテクチャを示しています。
リソース・ベース-access-rest-api-arch.zip
次の図は、データ・フローを示しています。
HCMおよびSCMユーザーのデータ・フローは、次のようになります。
- (a、b)クライアントの機密アプリケーションとリソース・アプリケーションをスコープとオーディエンスで構成します。
- (a、b) RESTエンドポイント、スコープおよびオーディエンスを使用してOCI API Gatewayデプロイメントを構成します。
- (a、b)ユーザー・アプリケーションは、クライアント機密アプリケーションを使用してJWTトークンを生成します。トークンには、エンコードされたスコープとオーディエンスが含まれます。
- (a、b)ユーザーは、トークンを使用してOCI APIゲートウェイ・エンドポイント・デプロイメントをトリガーします。
- (a、b) OCI API Gatewayは、デプロイメントの構成済スコープおよびオーディエンスに対してトークンを検証します。
- (a、b)検証が成功した場合、ルーティング構成ごとにそれぞれのAPIアクセスが付与されます。
- (a、b)検証が失敗した場合、401個の未承認エラーが返されます。
このアーキテクチャには、次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、長距離の場合は(複数の国または大陸にまたがって)分離できます。
- 可用性ドメイン
可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、ある可用性ドメインでの障害は、リージョン内の他の可用性ドメインには影響しません。
- フォルト・ドメイン
フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアは独立しています。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションは、物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。
- 仮想クラウド・ネットワーク(VCN)およびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNを使用するとネットワーク環境を制御できます。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。
- OCI Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、KubernetesエンジンがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。OKEは、Kubernetesを使用して、ホストのクラスタにわたるコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。
- APIゲートウェイ
Oracle API Gatewayでは、ネットワーク内からアクセスでき、必要に応じてパブリック・インターネットに公開できるプライベート・エンドポイントとともにAPIを公開できます。エンドポイントは、API検証、リクエストとレスポンスの変換、CORS、認証と認可およびリクエスト制限をサポートします。
- 関数
Oracle Cloud Infrastructure Functionsは、完全に管理された、マルチテナントのスケーラビリティが高いオンデマンドのFunctions-as-a-Service (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 Gatewayインスタンスを分離して、ユーザー・アクセスと分離をより適切に制御します。
- セキュリティ
セキュリティを強化するために、バックエンド資格証明をOCI Vaultに格納します。クライアント・シークレットが危険にさらされた場合、クライアント・シークレットを再生成します。
考慮事項
このリファレンス・アーキテクチャを実装する場合は、次の点を考慮してください。
- パフォーマンス
OCI API Gatewayには、パフォーマンスを最大化し、レイテンシを削減できるレート制限および割当て機能があります。これには、次のような利点があります。
- 過剰なリクエストからバックエンドを保護することで、高可用性およびリソースの公平な使用を維持します。
- サービス拒否攻撃を防止します。
- リソース使用量のコストの制約。
- APIを収益化するために、顧客のユーザーによるAPIの使用を制限します。
- セキュリティ
クライアント資格証明とコンシューマを管理するためのガバナンス・プロセスを確立します。
- 可用性
リージョン・サブネット(可用性ドメイン固有のサブネットではない)にAPIゲートウェイを作成して、高可用性を確保します。
- コスト
OCI API Gatewayは、公正な価格設定モデルを備えたコスト効率の高いオプションです。