翻訳者 |李睿 校正 |梁策と孫淑娟 マルチクラウド戦略を採用し、クラウドネイティブ インフラストラクチャの使用を増やす企業が増えるにつれて、マルチクラウド環境で大規模な API を提供することは、API プロバイダーに大きなプレッシャーをかけることになります。同時に、企業がどのようなクラウド プラットフォームを採用するかに関係なく、API は各企業の異なるセキュリティ要件とベスト プラクティスに従う必要があるため、多くの API プロバイダーの API 承認要件は非常に複雑になっています。 ある企業で、さまざまな事業部門の複数のチームが Azure クラウド プラットフォームで API を構築および展開しているとします。これらの API を構築する場合、さまざまなチームがさまざまなテクノロジ (Azure Functions、Node.js など) を使用します。企業は、自社の AWS アカウントや外部の SaaS アプリケーションなど、同じネットワーク上で API を使用するアプリケーションをホストする場合もあります。 次に、API プロバイダーがこれらの API をデプロイおよび実行する際に直面する課題を見てみましょう。 展開時間前述のように、マルチクラウド環境で API を構築およびデプロイする場合、複数のチームが異なるテクノロジーを使用します。したがって、API がベスト プラクティスに従っていることを確認するために API を検証する方法が必要です。一部の企業では、ベストプラクティスが生み出されることを期待して、個々のチームに責任を負わせることを選択しますが、このアプローチは混乱を招くことがよくあります。さまざまなチームが従う標準とベスト プラクティスが統一されていないか、配信を高速化するためにこのプロセスが無視されています。もう 1 つのアプローチは、すべての API をレビューし、ベスト プラクティスに従っていることを確認するための Center of Excellence (COE) を設置することです。しかし、このアプローチはスケーラブルではありません。少数の API を配信する場合はうまくいくかもしれませんが、数千の API を扱う場合は、レビューに長い時間がかかるため妨げになります。 多くの企業は、このプロセスを自動化し、継続的インテグレーション/継続的デリバリー (CI/CD) プロセスの一環として API を自動的に検証したいと考えています。すべての API が API キー認証と承認を使用して保護されていると仮定すると、開発者が API を展開する前に、API 上に適切なセキュリティ ポリシーを確実に適用する方法が必要になります。 実行時間マルチクラウド環境での認証の適用はより複雑になり、API プロバイダーにとって深刻な課題となる可能性があります。一般的なユースケースのシナリオは、API プロバイダーが、API を呼び出すことが許可されているアプリケーション、ユーザー、および IP 範囲を制御する場合です。 認証データを保存する一般的な方法の 1 つは、アイデンティティ プロバイダー (IDP) によって認証データを保存し、JWT トークンを使用してそれをバックエンド API に渡すことです。このアプローチは、マルチクラウド環境の分散性と、使用される可能性のあるさまざまな認証テクノロジのため、通常、マルチクラウド環境には適していません。たとえば、AWS ユーザーは、Azure ユーザーや SaaS ユーザーとは異なる IDP を使用する場合があります。 ユーザーの認証データを複数の IDP に複製し、それらを同期させるのは複雑で非効率的です。 API プロバイダーが各 IDP に保存するデータにも制限がある場合があります。たとえば、この記事の典型的なユースケースのシナリオでは、AWS IDP 管理者は、Azure API の認証データを保存する必要がある理由を疑問に思うでしょう。 解決策: 宣言型 API 承認この問題を解決するには、API Ops、Kong Gateway、OPA を使用した宣言型構成を使用できます。これらがどのように連携するかを詳しく説明する前に、まずは基本を理解しましょう。 (1)APIオペレーション API Ops は、DevOps と GitOps の原則を API とマイクロサービスのライフサイクルに導入し、これらのステージを可能な限り自動化します。宣言型構成を採用することで、その多くは自動化できます。組織で Kubernetes または DevOps を使用している場合は、宣言型構成の概念にすでに精通している可能性があります。宣言型構成を使用すると、API Ops は API ライフサイクルの大部分を自動化できます。 (2)オープンポリシーエージェント(OPA) Open Policy Agent (OPA) は、ユーザーがポリシーをコードとして定義できるようにするオープン ソース ポリシー エンジンです。 OPA は Rego 言語を使用してこれらのポリシーを定義します。 OPA を使用すると、ポリシーをコードとして作成し、組織内のさまざまなアプリケーションに適用して、次のような質問に答える OPA ポリシーを作成できます。
OPA の宣言的な性質により、API Ops に適しています。これらのポリシーを作成し、コード リポジトリに保存して、API ライフサイクルのさまざまな段階で使用します。 (3)コングゲートウェイとオープンポリシーエージェント OPA を Kong Gateway と統合することが可能です。 API コンシューマー、Kong Gateway、OPA サーバー、およびバックエンド API 間の相互作用を見てみましょう。 ①APIコンシューマーがKong Gatewayにリクエストを送信します。 ②Kong GatewayはOPAプラグインを使用してOPAサーバー内のポリシーを呼び出し、応答を受信します。 ③KongGatewayはOPAサーバーからの応答に基づいて、リクエストをバックエンドAPIに転送するか、エラーを返すかを決定します。 OPA ポリシー アーキテクチャの重要な部分は、データをポリシー定義から切り離すことです。この場合、ポリシーは、次の 2 つの方法で意思決定に必要な情報にアクセスできます。
OPA ポリシーに外部データを挿入する方法は他にもあります。 (4)継続的インテグレーション/継続的デリバリー(CI/CD)ツールとオープンポリシーエージェント OPA の優れた点の 1 つは、JSON を生成および使用するテクノロジであれば、ほとんどのテクノロジと統合できることです。現在、ほとんどの CI/CD ツールには、JSON をサポートするためのすぐに使用できるライブラリまたはサードパーティのプラグインが備わっています。デプロイ中に、OPA を使用して次のことを検証できます。
継続的デプロイメントで宣言的承認を実行するには: API 開発者は Insomnia を使用して API を設計し、Kong プラグインを定義し、API 仕様をコードベースにチェックインします。 ②継続的デプロイメントの一環として、CI/CD ツールは OPA ポリシーを呼び出します。 OPA ポリシーは、API 仕様、Kong プラグイン、テスト ケース、開発者に対して承認を検証します。 ③結果が成功した場合、CI/CDツールはプロセスを継続し、そうでない場合は停止します。 (5)API Ops、Kong Gateway、OPAはどのように連携するのか このソリューションを実装するには、次の手順に従います。 ①APIをKong Gatewayにデプロイする前に、CI/CDツールはOPAを呼び出して、必須プラグインがAPI定義に含まれているかどうかを確認します。ポリシー チェックに合格すると、宣言型構成を使用して API がデプロイされます。 ②コンシューマーアプリケーションは、IDPまたはその他の方法を使用してJWTトークンを作成します。このトークンには、ユーザーの一意の ID があります。ここでは、ユーザー ID が異なるクラウド間で一意であると想定されます。 ③コンシューマーアプリケーションはKong Gatewayにリクエストを送信します。 ④Kong GatewayはOPAサーバーにリクエストを送信します。 OPA サーバーはポリシーを実行し、結果を返します。 ⑤Kong Gatewayが成功すると、リクエストはバックエンドAPIに送信され、そうでない場合はエラーが返されます。 実行と詳細については以下で説明します。 GitHub Actions を使用して API のデプロイメントを自動化します。使用する CI/CD ツールに基づいてこれらのスクリプトを調整できます。 GitHub ActionsとOPAの設定方法ソリューションの最初の部分は、開発者が API に正しいポリシーを組み込んでいることを確認することです。つまり、キー認証と OPA プラグインが API 仕様に存在する必要があります。 API 開発者は、「x-kong-plugin-」プレフィックスを使用して、必要なプラグインを API に追加できます。顧客 API の OpenAPI 仕様 (OAS) は次のとおりです。 オープンAPI : "3.0.0" OPA ポリシーを作成し、API 仕様でこれらのプラグインを探すだけです。 パッケージapiCDAuthz 上記のように、この戦略は OAS 仕様 (例: 入力) でこれら 2 つのプラグインを検索し、有効になっているかどうかを確認します。両方のポリシーが存在し、有効になっている場合は true を返します。それ以外の場合は false を返します。 このポリシーは、OPA のポリシー作成 API を呼び出すことによって作成できます。 curl - XPUT http : //<opa-server:port>/v1/policies/apiCDAuthz --data-binary @./opa/apiCDAuthz.rego 次のステップは、OAS 仕様を OPA ポリシーに送信し、結果を確認することです。この例では、OAS 仕様は YAML で記述されていますが、OPA は JSON のみを処理できます。したがって、最初のステップは、次の GitHub Action ワークフローに示すように、顧客仕様をエクスポートして JSON に変換することです。 # 顧客yaml をエクスポートする その後、OPA ポリシーを呼び出して JSON データを検証できます。 # デプロイメントの承認を確認する 結果が false の場合 (つまり、API 仕様が構成のベスト プラクティスを満たしていない場合)、デプロイメント プロセスは自動的に失敗し、システムから開発者に通知されます。 この例は、デプロイメント プロセスで OPA が果たす役割を簡単に示しています。これは次のように拡張できます。
Kong GatewayとOPAの設定方法前述のように、API プロバイダーは API を以下に公開したいと考えています。
同時に、API プロバイダーは、API を呼び出すアプリケーション、ユーザー、ネットワークを制御したいと考えています。たとえば、API プロバイダーは、会社の AWS アカウントでホストされている CRM アプリケーションを使用して GET Customers を呼び出すことのみをユーザーに許可する場合があります。 API 開発者は、実行時にこの API の OPA プラグインを構成する必要があります。そうしないと、デプロイメント中に失敗します。 OPA プラグインの構成は次のとおりです。 x - kong - プラグイン- opa : OPA プラグインは、リクエスト、ユーザー、サービス、およびルート情報を OPA サーバーの userAuthz ポリシーに送信します。現在のリクエストに加えてサービス、コンシューマー、ルーティング情報を追加すると、よりきめ細かいレベルのアクセスを提供できます。たとえば、ポリシーによってユーザーを特定のルートのみに制限できます。 次に、userAuthz ポリシーを見てみましょう。 パッケージuserAuthz この戦略: (1)リクエストからJWTトークンを読み取り、検証してデコードします。 (2)クライアントIPアドレスがAPIを呼び出す権限を持っていることを確認します。 (3)消費者アプリケーションが承認済みアプリケーションのリストに含まれていることを確認する。 (4)ユーザーが許可されたユーザーリストに含まれており、HTTPメソッドを実行できることを確認します。 上記のように、このポリシーはデータ変数を使用しており、OPA API を介してこのポリシーに挿入されます。 curl - XPUT http : //<opa-server:port>/v1/data/userAuthz --data-binary @./opa/userAuthz.json データが変更された場合は、JSON ファイルを更新して OPA API を再度呼び出すだけです。 { このポリシーとデータの組み合わせを使用すると、API プロバイダーは、次のプロパティを持つリクエストのみが GET クライアント API を呼び出すことを許可します。
OPA ポリシーのもう 1 つの利点は、Kong Gateway に有用な情報を返すことができることです。この場合、返される値は各 API のユーザー アクセス レベル (ここでは Gold) です。この情報を使用して、Kong Gateway は、レベルに基づいてレートを制限するなど、アクセス レベルに関連する操作を設定できます。 結論はOPA と宣言型ポリシーの使用は、特に API Ops 分野で一般的になりつつあります。なぜなら、
マルチクラウド環境で API を構築および管理することは、特にセキュリティと認証に関しては簡単な作業ではありません。ポリシー・アズ・コードと API Ops を組み合わせることは、自動化されたスケーラブルなソリューションを構築するための優れた方法です。 原題: マルチクラウド API 認証の課題、著者: Nima Moghadam |
<<: Longhorn の高度な使用法: バックアップ、リカバリ、ReadWriteMany
>>: 2022 年に企業はクラウドでどのような課題に直面するでしょうか?
競合他社のウェブサイトの変更によりランキングが変わった場合はどうすればいいですか?インターネット上に...
私自身は、長年の豊富な経験を持つ SEO 担当者ではありません。しかし、大連曼通ネットワークは、初心...
Netwin.com は Weihua Crane Equipment の Web サイトが 10 ...
tothost (~) は現在、ベトナム VPS を 20% 割引で提供しており、月額 2.4 ドル...
raksmart は、かなり前から存在しているビジネスです。彼らは米国に会社を登録しており、実際には...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス紅封筒壁の顧客獲得は、一...
[51CTO.com クイック翻訳] IBM は本日、企業内で複数のクラウドを管理するという最終目標...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますランニング...
画像提供:新華社9月2日から9月7日まで、中華人民共和国商務省と北京市人民政府が共催する2021年中...
ウェブサイトのスペースは、私たちの「IT 移民労働者」の夢の始まりです。ウェブサイトを構築する人は誰...
digitalvirt はどうですか? DigitalVirt Japan VPSはいかがでしょうか...
背景Alibaba Cloud Serverless Kubernetes (ASK) は、Alib...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス今年は企業、特に中小企業...
多くの上司は、スライス サーバー、ダウンロード サーバー、CDN サーバー、仮想マシン、超高性能タス...
2018年1月、新型コロナウイルス感染症が流行しました。この特別な時期に、全国の人々が協力して感染症...