Google、オープンソースの高速で安全な式言語「Common Expression Language」を発表:RPCのルーティングやセキュリティポリシーの定義など、多様な用途に対応
Googleは、パフォーマンスが重視されるアプリケーションにおいて、高速かつポータブルで安全に実行できる汎用の式言語「Common Expression Language」を発表した。
Googleは2024年6月18日(米国時間)、パフォーマンスが重視されるアプリケーションにおいて、高速かつポータブルで安全に実行できる汎用(はんよう)の式言語「Common Expression Language」(CEL)を発表した。
CELは、式の評価に共通のセマンティクスを実装するオープンソースの非チューリング完全言語であり、異なるアプリケーションの相互運用を容易にする。
CELは単独で使用することも、大規模なプロダクトに組み込むこともできる。リモートプロシージャコール(RPC)のルーティングからセキュリティポリシーの定義まで、さまざまなアプリケーションに適している。拡張可能でプラットフォームに依存せず、1回のコンパイル/評価のワークフロー向けに最適化されている。
CELの記述例
Googleによると、CELは、式が頻繁に評価されるが、変更の頻度が低いアプリケーションで最も効率的に使用されるという。例えば、セキュリティポリシーに照らしてHTTPリクエストを評価することは、CELの優れたユースケースだ。CELセキュリティポリシー式では、式を検証するための1回限りの構成コストが発生し、その後はごくわずかなコストで非常に頻繁に評価される。
CELでは、単一行の関数またはラムダ式に似た式が評価される。CELはブール値(True/False)の決定によく使用されるが、JSONやプロトコルバッファーメッセージなどのより複雑なオブジェクトを作成することもできる。
CELはGoogleの社内外で広く使用されており、「Kubernetes」では、コストが高くつく本番環境の構成ミスを防ぐために使用されており、「Google Cloud IAM(Identity and Access Management)」では、CELを使ってきめ細かな認可を可能にしている。
CELの4つのメリット
GoogleはCELの特徴として、以下の4つを挙げている。
- 高速:CELは、アプリケーションのパフォーマンス低下につながる動作を防止するため、ナノ秒単位またはマイクロ秒単位で評価される
- ポータブル:さまざまなシステムにわたって共通の構文を使用し、開発者フレンドリーな軽量化が図れる
- 拡張可能:サブセット化と拡張をサポートし、組み込みが容易で、構成やポリシーの要件に合わせて調整できる
- 安全:非チューリング完全であり、ホストアプリケーションから提供されるデータにのみアクセスする
CELを選ぶ理由
多くのサービスやアプリケーションは、ロールベースのアクセス制御(RBAC)のような宣言型の構成を評価する。ほとんどの場合、宣言型の構成で十分だが、より表現力が必要な場合があり、そこでCELが役立つ。例えば、属性ベースのアクセス制御(ABAC)でCEL式を使用することで、RBACを拡張し、より強力なアクセス制御が可能になる。
CELの基本コンセプト
CELでは、式はユーザーが記述し、サービスによって定義される環境に対してコンパイルされる。コンパイルステップでは、プロトコルバッファー形式で抽象構文木(AST)が生成される。コンパイルされた式は、可能な限り高速に評価を維持できるように、後で使用するために保存される。コンパイルされた1つの式をさまざまな入力で評価できる。
式は「解析」「チェック」「評価」の3つのフェーズで処理される。CELの最も一般的な使用パターンは、設定時に式を解析し、ASTを保存した後、実行時にASTの取得と評価を繰り返すというものだ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Google、Kubernetes1.29に対応した「Google Kubernetes Engine」の新機能を解説
Googleは「Kubernetes 1.29」に対応した「Google Kubernetes Engine」(GKE)の新機能を解説した。 - AWS、ポリシー言語「Cedar」のSDKをオープンソースで公開
Amazon Web Servicesは、「Amazon Verified Permissions」と「AWS Verified Access」の顧客に使用されるポリシー言語「Cedar」のSDKをオープンソースとしてリリースした。 - JavaScript記述なしでモダンUIを作成できる「htmx」、最新版「htmx 2.0」で何が変わったか
JavaScriptコードを記述せずに、HTMLからモダンブラウザの機能に直接アクセスできるJavaScriptライブラリ「htmx」の最新版「htmx 2.0」が公開された。