OPA を使用した PDP の実装 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

OPA を使用した PDP の実装

オープンポリシーエージェント (OPA) は、オープンソースの汎用ポリシーエンジンです。OPA には多くのユースケースがありますが、PDP 実装に関連するユースケースは、アプリケーションから認証ロジックを切り離す機能です。これはポリシーデカップリング と呼ばれます。OPA は、いくつかの理由で PDP の実装に役立ちます。ポリシーとルールのドラフトには、Rego という高レベルの宣言言語を使用します。これらのポリシーとルールはアプリケーションとは別に存在し、アプリケーション固有のロジックなしで認可の決定をレンダリングできます。また、OPA は RESTful API を公開して、承認の決定を簡単かつ簡単に取得できるようにします。承認の決定を行うために、アプリケーションは JSON 入力を使用して OPA をクエリし、OPA は指定されたポリシーに対して入力を評価して JSON でアクセス決定を返します。OPA は、承認の決定に関連する可能性のある外部データをインポートすることもできます。

OPA を使用した PDP の実装

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 がユーザーに代わって実行できることではありません。