4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OPAL (Open-Policy Administration Layer) について

Last updated at Posted at 2022-09-29

この記事では Open Policy Agent (OPA) の説明は割愛しています。

概要

image.png
OPAL (Open-Policy Administration Layer) は、データストアに保存された Data と Policy の変更を検知して、それらをリアルタイムで OPA に同期する OSS 1 で、OPA に設定する Data/Policy の管理の難しさを解決するために開発されました。GitHub リポジトリは https://github.com/permitio/opal で、公式サイトは https://www.opal.ac です。

アーキテクチャ

image.png

OPAL は OPAL Server と OPAL Client から構成されています。なお、上図の青線は Data がやりとりされる流れを、紫線は Policy がやりとりされる流れを示しています。

OPAL Server

OPAL Server は OPAL Client 向けに、設定を取得するための REST API と Data/Policy の更新を受け取る Pub/Sub チャネルを作成するための WebSocket エンドポイントを提供します 2 。OPAL Server は Git リポジトリ (他に S3 や SVN もサポート) を追跡して、Data/Policy の変更を検知したら Pub/Sub チャネルを介して OPAL Client に差分をプッシュする役割を担っています。

OPAL Server をスケールアウトさせたい場合は、Redis、Kafka PostgreSQL Listen/Notify など、バックボーン Pub/Sub をバックエンドに用意して、各 OPAL Server でデータを同期させる必要があります 3 。このようにすることで、ある OPAL Server に接続している OPAL Client は、他の OPAL Server で発生した更新の通知も受け取ることが可能になります。

OPAL Client

OPA に同居する形でデプロイされて、OPAL Server や他のデータストアで管理されている最新の Data/Policy を OPA に反映する役割を担っています。OPAL 導入時には、サービスのアプリケーションに OPA と OPAL Client が Sidecar として配置されるイメージです。

OPAL Server 以外に設定可能なデータソースとして、HTTP API、PostgreSQL、Salesforce、Stripe などがサポートされています。この外部のデータソースから Data を取得する部分は拡張可能な仕様になっています。

さいごに

この記事では、OPAL の概要やアーキテクチャを簡単にまとめました。OPAL を導入することで OPA の Data/Policy を管理しやすくなるので、OPA 運用で課題を抱えている方は、導入を検討してみても良いでしょう。

備考

OPAL は Python 3 で実装されていて Python パッケージとして公開されています。

Python パッケージの他にも Docker イメージや Helm チャートも公開されています。

  1. Permit.io 社 (旧 Authorizon 社) から2021年4月に OSS として公開されました, https://twitter.com/opal_ac/status/1382347228250058760

  2. API フレームワークとして FastAPIFastAPI Websocket Pub/Sub が採用されています

  3. OPAL Server のデータ同期は Broadcaster で実装されています

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?