翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
OPA を使用した PDP の実装
オープンポリシーエージェント (OPA) は、オープンソースの汎用ポリシーエンジンです。OPA には多くのユースケースがありますが、PDP 実装に関連するユースケースは、アプリケーションから認証ロジックを切り離す機能です。これはポリシーデカップリング と呼ばれます。OPA は、いくつかの理由で PDP の実装に役立ちます。ポリシーとルールのドラフトには、Rego という高レベルの宣言言語を使用します。これらのポリシーとルールはアプリケーションとは別に存在し、アプリケーション固有のロジックなしで認可の決定をレンダリングできます。また、OPA は RESTful API を公開して、承認の決定を簡単かつ簡単に取得できるようにします。承認の決定を行うために、アプリケーションは JSON 入力を使用して OPA をクエリし、OPA は指定されたポリシーに対して入力を評価して JSON でアクセス決定を返します。OPA は、承認の決定に関連する可能性のある外部データをインポートすることもできます。
![OPA を使用した PDP の実装](images/opa.png)
OPA には、カスタムポリシーエンジンよりもいくつかの利点があります。
-
Rego による OPA とそのポリシー評価は、承認の決定に必要なポリシーとデータの挿入のみを必要とする、柔軟で構築済みのポリシーエンジンを提供します。このポリシー評価ロジックは、カスタムポリシーエンジンソリューションで再作成する必要があります。
-
OPA は、宣言言語でポリシーを記述することで、認証ロジックを簡素化します。これらのポリシーとルールは、アプリケーション開発スキルなしで、アプリケーションコードとは独立して変更および管理できます。
-
OPA は RESTful API を公開し、ポリシー適用ポイント (PEPs。
-
OPA には、JSON ウェブトークン (JWTs。
-
OPA は認識されている認可標準です。つまり、特定の問題を解決するために支援や研究が必要な場合は、ドキュメントや例が豊富です。
-
OPA などの承認標準を採用することで、Rego で記述されたポリシーを、チームのアプリケーションで使用されるプログラミング言語に関係なく、チーム間で共有できます。
OPA が自動的に提供しないことは 2 つあります。
-
OPA には、ポリシーを更新および管理するための堅牢なコントロールプレーンはありません。OPA には、管理 API を公開してポリシーの更新、モニタリング、ログ集約を実装するための基本的なパターンがいくつか用意されていますが、この API との統合は OPA ユーザーが処理する必要があります。ベストプラクティスとして、継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを使用して、ポリシーのバージョンを管理、変更、追跡し、OPA でポリシーを管理する必要があります。
-
デフォルトでは、OPA は外部ソースからデータを取得できません。承認決定の外部データソースは、ユーザー属性を保持するデータベースである可能性があります。外部データを OPA に提供する方法には柔軟性があります。事前にローカルにキャッシュすることも、承認の決定がリクエストされたときに API から動的に取得することもできますが、この情報を取得することは OPA がユーザーに代わって実行できることではありません。