CNCFは、Open Policy Agent(OPA)プロジェクトの卒業を発表した。OPAは、宣言型ポリシーを持ち、Kubernetesを含むさまざまなシステムと統合できるオープンソースのポリシー管理・施行エンジンである。
OPAは元々Styraで開発され、2018年3月にサンドボックスプロジェクトとしてCNCFに参加した。そして、2020年4月にインキュベーションプロジェクトとして承認された。現在のコントリビュータには、Google、Microsoft、VMware、Styraがいる。OPAは、標準のCNCF卒業プロセスを通過した。CIIベストプラクティスバッジの認定を受け、複数のセキュリティ監査を完了し、発見された脆弱性に対処し、ガバナンスプロセスを定義し、CNCF行動規範を採用した。また、インキュベーション期間中にSIG-Security評価を完了した。
OPAの目標は、ポリシーをコードから切り離し、ポリシーの実施を一元化し、policy-as-codeを実現することである。OPAは、Regoと呼ばれるDSLを使用してポリシーを記述する。OPAエンジンは、アプリケーションとともにライブラリ、サイドカー、デーモンとして実行できる。OPAポリシーは、バンドルサービスAPIをポーリングして「バンドル」(ポリシーとデータのコレクション)をダウンロードすることで動的に更新できる。
OPAは、Kubernetes、Envoy、CoreDNS、Kafka、Helmなどのさまざまなシステムと統合できる。また、OPAゲートキーパーを使ったOPAとKubernetesの間の素晴らしい統合もある。OPAゲートキーパーは、ポリシーライブラリを操作するためのKubernetesネイティブCRDを提供する。これは「制約」をサポートする。それは「与えられた一連の要件をシステムが満たす」ようにする一連の宣言である。
Cloud Native Computing FoundationのCTOであるChris Aniszczyk氏は、次のように述べている。
CNCFに参加して以来、OPAはGatekeeperプロジェクトを介してKubernetesとより緊密に統合するように拡張されました。しかし、Kubernetes以外のさまざまなユースケースもサポートしています。
Kubernetesエコシステムでは、OPAはカスタムアドミッションコントローラーとして登録できる。これを使うことで、サービスタイプ、ホワイトリストまたはブラックリストコンテナのレジストリの制限などの特定の設定を拒否し、入力宣言でドメイン検証を実行できる。
OPAは、Goldman-Sachs、Netflix、Pinterest、T-Mobileなどの多くの組織で本番環境で使用されている。150の組織にわたって2020年に実施された調査によると、最も一般的な使用例は、設定の権限付与とAPIの権限付与である。この調査では、56%がKubernetes Admission Controlの本番環境で使用し、47%がマイクロサービスのAPI権限付与のために本番環境でOPAを使用していることもわかった。CNCFは、Kyvernoと呼ばれる別のポリシーエンジンをホストしている。これは、カスタムDSLの代わりにJSON/YAMLを使用する。先に記述したSIGセキュリティ評価では、Regoには「簡単でない」学習曲線があることが示されているが、RegulaやPreflightなどのコンプライアンスチェックを実行するためにRegoを使用するツールがある。Regoコードを試すためのインタラクティブなプレイグラウンドがある。
OPAのソースコードはGitHubで入手できる。