【おーぴーえー(おーぷんぽりしーえーじぇんと)】
OPA(Open Policy Agent) とは?
💡 番人をどこにでも連れていける「ルール裁定マシン」
📌 このページのポイント
- Regoという宣言型言語でポリシーを記述する
- KubernetesのAdmission Webhookやマイクロサービスに組み込める
- アプリとポリシーを分離することで、ルール変更にコードの修正が不要
- CNCFの卒業プロジェクトとして広く採用されている
OPAって何をしてくれるの?
アプリやシステムから「このリクエストを許可していい?」と問い合わせを受けて、ポリシーに照らしてYES/NOを返す判定エンジンだよ。ポリシーの判断をアプリのコードから切り離せるのが特徴だね
Regoって言語は難しそうだけど、どんな感じで書くの?
宣言型の言語で「allow = true if 条件」みたいな形で書くよ。条件が満たされたときだけ許可する、という論理を積み上げていく感じだね。慣れると直感的に読めるようになるんだ
Kubernetesでよく聞くけど、どう使われているの?
KubernetesのAdmission Webhookと組み合わせて、Podのデプロイ時に「イメージにlatestタグは禁止」「リソースリクエストは必須」といったポリシーをチェックするのが定番の使い方だよ
マイクロサービスにも使えるって言ってたけど?
ポリシーを変えたいときはOPAだけ更新すればいいんだね!
まとめ:ざっくりこれだけ覚えればOK!
「OPA」って出てきたら「ポリシーを自動判断するエンジン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Open Policy Agent」 = オープンなポリシー代理人
💬 "Agent"はここでは「代理人・仲介者」という意味で、ポリシーの判断を代わりにやってくれるエンジンというイメージだよ