【おーぴーえー(おーぷんぽりしーえーじぇんと)】

OPA(Open Policy Agent) とは?

公開:
💡 番人をどこにでも連れていける「ルール裁定マシン」
📌 このページのポイント
OPA(Open Policy Agent)の仕組み Kubernetes APIゲートウェイ マイクロサービス 許可? OPA ポリシー評価 Rego言語 で判定 allow: true 許可 allow: false 拒否 policy.rego Gitで管理・独立更新
OPA:様々なシステムから問い合わせを受け、ポリシーに基づいてYES/NOを返す
ひよこ ひよこ
OPAって何をしてくれるの?
ペンギン先生 ペンギン先生
アプリやシステムから「このリクエストを許可していい?」と問い合わせを受けて、ポリシーに照らしてYES/NOを返す判定エンジンだよ。ポリシーの判断をアプリのコードから切り離せるのが特徴だね
ひよこ ひよこ
Regoって言語は難しそうだけど、どんな感じで書くの?
ペンギン先生 ペンギン先生
宣言型の言語で「allow = true if 条件」みたいな形で書くよ。条件が満たされたときだけ許可する、という論理を積み上げていく感じだね。慣れると直感的に読めるようになるんだ
ひよこ ひよこ
Kubernetesでよく聞くけど、どう使われているの?
ペンギン先生 ペンギン先生
KubernetesのAdmission Webhookと組み合わせて、Podデプロイ時に「イメージにlatestタグは禁止」「リソースリクエストは必須」といったポリシーをチェックするのが定番の使い方だよ
ひよこ ひよこ
マイクロサービスにも使えるって言ってたけど?
ペンギン先生 ペンギン先生
APIゲートウェイサービスメッシュに組み込んで、「このユーザーはこのAPIを呼んでいいか」といった認可判断をOPAに委ねることもできるよ。ポリシーを一箇所に集めて管理できるから、サービスが増えても一貫性が保てるんだ
ひよこ ひよこ
ポリシーを変えたいときはOPAだけ更新すればいいんだね!
ペンギン先生 ペンギン先生
そう!アプリのコードを一切触らずにルールを変更できるのが大きなメリットだよ。GitOpsでポリシーファイルを管理しておけば、変更の履歴追跡やロールバックも簡単にできるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「OPA」って出てきたら「ポリシーを自動判断するエンジン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Open Policy Agent」 = オープンなポリシー代理人
💬 "Agent"はここでは「代理人・仲介者」という意味で、ポリシーの判断を代わりにやってくれるエンジンというイメージだよ
← 用語集にもどる