Open Policy Agent とは?

Open Policy Agent

Open Policy Agent

NRIのOpenStandiaが提供するOpen Policy Agent最新情報

Open Policy Agentの保守サポートサービスの内容はこちら Open Policy Agentの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Open Policy Agentバージョンアップ情報

すべてを見る

更新日:2021-07-26

Open Policy Agentの概要

Open Policy Agent(OPA)は、元々Styraで開発されたオープンソースの汎用的なポリシーエンジンです。ポリシーエンジンはポリシーに違反した情報を発見し、事前に定義されたアクションを実行する機構で、OPAはKubernetesなどの環境全体でポリシーの実施を一元化することが出来ます。

OPAは、Policy as Codeというポリシーをコードとして記述・管理するための宣言型言語(Rego)と、アプリケーションからの問い合わせに対して、ポリシーの評価を行うAPIを提供しています。

OPAをサイドカー、デーモン、ライブラリなどでアプリケーションに統合し、アプリケーション内のリクエスト制御をAPIを介してOPAに問い合わせ、その評価結果からリクエストを制御するアーキテクチャにすることで、アプリケーションからポリシー制御機能を切り離すことが可能となります。このように、OPAによりポリシー制御を分離することで、アプリケーションのコード変更、再デプロイを必要としないポリシー管理や、様々なアプリケーションにおけるポリシー制御を、統一された仕組みで実現することが出来ます。

OPAは、2018年3月にKubernetesなどの開発をホストするCloud Native Computing Foundation(CNCF)にサンドボックスプロジェクトとして参加し、2021年2月にプロジェクトを卒業しました。

TOPに戻る

Open Policy Agentの主な特徴

Policy Decouplingあるアプリケーションがポリシーの判断を必要とする場合、アプリケーションはJSONなどの構造化データをOPAに提供し、OPAはその入力データを評価します。評価結果は任意の構造化データとしてアプリケーションに返し、ポリシーに違反した場合は何らかの処理を実行することが出来ます。
Regoによる記述OPAは宣言型のクエリ言語であるRegoでポリシーを定義します。RegoはNestedなデータを参照するためのサポートを提供すること、クエリが正確で曖昧さを排除したものであること、命令型の言語と比べてシンプルに記述できること、クエリの最適化によるパフォーマンスの向上ができることが特徴です。
複数環境での利用が可能OPAは汎用的なポリシーエンジンであり、Kubernetesのみではなく、Docker、Linux、Terraformなどの様々な環境・プロダクトに対して適用することが可能です。またServerとして起動するほか、Go Libraryとしてアプリケーションコードに組み込んだり、対話形式(REPL) でポリシーテストを実行することも可能です。

TOPに戻る

Open Policy Agentの構成

OPAは前述の通り、アプリケーションがポリシーの検証を行う場合は、JSONなどのデータをクエリとしてOPAに渡し、OPAの持つPolicyを元にテスト結果を返します。 PolicyはRegoを使用して定義されたRuleから構成され、単一または複数のRuleを定義したRegoファイルをPolicy Moduleとして、Policy APIを介してOPAに追加できます。
また、OPAで利用するJSONなどの階層型データはDataと呼ばれ、アプリケーションなどの外部からData APIを介してOPAに読み込ませる静的データのBase Documentと、OPAがPolicy(Rule)を元に作成した評価結果であるデータのVirtual Documentの2種類から構成されています。(問い合わせ時の入力データもBase Documentに分類されますが、文脈によってはInput Document、Query Inputと表現されます)

OPA-Service

※画像:OPA公式ドキュメントより

TOPに戻る

Open Policy Agentのユースケース

OPAはゴールドマンサックス、Netflix、Pinterest、T-Mobileなどを代表とする150以上の企業や組織で利用されています。最も一般的な使用例としては、設定の権限付与とAPIの権限付与で、利用されている環境としてはKubernetes Admission Control環境が全体の半分以上を占めています。

TOPに戻る

Open Policy Agentのライセンス

OPAのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。

TOPに戻る

Open Policy Agentのサポート

現在、OpenStandiaではOpen Policy Agentのサポート提供は行っておりません。

TOPに戻る

参考情報

Open Policy Agent公式サイト
Open Policy Agent GitHub

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO