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

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"はここでは「代理人・仲介者」という意味で、ポリシーの判断を代わりにやってくれるエンジンというイメージだよ
← 用語集にもどる