⭐️Open Policy Agent(OPA)

オープンソースの汎用ポリシーエンジン。アプリのロジックからポリシー判定を切り離す

ツールなの?

ツール。 opa という 1 つのバイナリで、CLI / HTTP サーバー / Go ライブラリとして使える。

  • アプリが JSON を渡して「これ OK?」と聞く → OPA が Rego(専用言語)で書いたルールで判定して返す
  • 判定は OPA、実際に止めるのはアプリ側

どう使う?

  • サーバー: アプリが POST localhost:8181/v1/data/... で問い合わせ → {"result": false} なら 403
    • 毎リクエスト聞くので、同じ Pod(サイドカー)やホストに置く
  • CLI: CI で terraform show -json をチェック(Conftest)。サーバー不要
  • 1 か所の簡単なチェックならアプリの if で十分。複数サービスでルールを揃えたいときに効く

CNCF との関係は?

  • CNCF = Kubernetes などを管理する、クラウドネイティブ系 OSS の運営団体
  • OPA は CNCF の Graduated プロジェクト(成熟度の最上位、2021-01 に到達)