Open Policy Agent (OPA)
認可の判定をアプリケーションコードから切り離し、Rego というクエリ言語で評価する汎用ポリシーエンジン。
- カテゴリ: Identity & Policy
- CNCF 成熟度: Graduated
- 言語: Go
- ライセンス: Apache-2.0
- リポジトリ: open-policy-agent/opa
- ドキュメント基準コミット:
f75131f(v1.17.1 と v1.18.0-dev の間, 2026-06-18)
何をするものか
OPA はポリシーエンジンである。Rego で書いたポリシーと、input と呼ぶ JSON ドキュメントを渡すと、判定を返す。allow/deny、違反のリスト、フィルタされたフィールド集合など、ポリシーが計算したものが何であれ返す。エンジン自体は Kubernetes や HTTP、特定ドメインの知識を一切持たない。構造化データに対して Rego を評価し、構造化データを返すだけである。
配布形態は単一の Go バイナリ opa。同じバイナリが、ポリシーの評価・テスト用 CLI (opa eval、opa test)、ポリシー決定点 (PDP) として動く常駐 REST サーバ (opa run --server)、そして rego API で他プログラムに直接埋め込む Go パッケージ群として動く。ポリシーとそれが必要とする外部データは bundle にまとめられ、OPA が HTTP または OCI で pull する。
OPA はシステムの判定境界に位置する。アプリやプロキシが「このリクエストは許可されるか」と問い、OPA がポリシーから答える。これにより認可ロジックが 1 か所に集まり、バージョン管理・テスト・サービス間共有が可能になる。アプリコードに散らばらない。
いつ使うか
- 多数のサービスで一貫した認可判定が必要で、ポリシーを各サービスのコードと分離して一度だけ書きたい場合。
- API 認可・Kubernetes admission・CI/CD ゲート・IaC など、異種のレイヤを横断して 1 つの言語と 1 つのエンジンでポリシーを強制したい場合。
- ハードコードした条件分岐ではなく、バージョン管理・テスト可能な成果物として判定を外部化したい場合。
- スコープが Kubernetes admission だけなら、Rego の学習コストを避けられる Kubernetes ネイティブなエンジン (Kyverno など) の方が向く。
- アプリ層の認可だけが目的で、関係ベースアクセス制御のような専用モデルを好む場合は向かない。
このディープダイブの構成
- 歴史: Styra での起源、CNCF graduation、OPA 1.0、2025 年の Apple 移籍。
- アーキテクチャ: パッケージ構成とポリシークエリの流れ。
- 採用事例・エコシステム: 出典付き採用組織、GitHub シグナル、代替候補。
- 内部実装: ソースから読んだ評価パスと中核データ構造。
- はじめに: インストールと最初の動くポリシー判定。
出典
- open-policy-agent/opa on GitHub (2026-06-23)
- OPA ADOPTERS.md (2026-06-23)
- OPA GOVERNANCE.md (2026-06-23)
- OPA MAINTAINERS.md (2026-06-23)
- OPA v1.0.0 release notes (2026-06-23)
- Open Policy Agent - CNCF project page (2026-06-23)
- CNCF announces OPA graduation (2026-06-23)
- InfoQ: Open Policy Agent Graduates at CNCF (2026-06-23)
- Styra: Open Policy Agent 101, a Beginner's Guide (2026-06-23)
- openpolicyagent.org docs (2026-06-23)
- OPA 1.0 is Coming (2026-06-23)
- Note from Teemu, Tim and Torin to the OPA community (2026-06-23)
- Cloud Native Now: Apple Buys Styra Brains, OPA Remains Open (2026-06-23)
- Open Source For You: Apple Acquires OPA Developers (2026-06-23)
- Nirmata: Kubernetes Policy Comparison, Kyverno vs OPA Gatekeeper (2026-06-23)
- policyascode.dev: OPA Gatekeeper vs Kyverno (2026-06-23)