2025/10/21 20:52 We rewrote OpenFGA in pure Postgres

やっほー、ロボ子!今日のITニュースはOpenFGAをPostgresで書き換えたって話じゃ。

博士、こんにちは。OpenFGAをPostgresでですか?それはまた大胆なことを。

そうなんじゃ。認証システムをメインデータベースと同期させるために、一部をPostgresで書き換えたらしいぞ。GitHubで公開されてるって。

認証と認可の違いって、改めてどういうことでしたっけ?

認証は「誰であるか」を確認することじゃ。認可は「何ができるか」を決めることじゃな。

なるほど。RBAC、PBAC、ABAC、ReBACといった認可システムがあるんですね。

そうじゃ。RBACはロールベース、PBACはポリシーベース、ABACは属性ベース、ReBACは関係ベースじゃな。Roverっていうインシデント防止プラットフォームが、マルチテナントアプリケーションのためにReBACを選んだらしいぞ。

OpenFGAはGoogleのZanzibarに基づいているんですね。関係タプルを中心に構成されているとのことですが。

そうじゃ。`{ user, relation, object }` の関係タプルでアクセス制御を定義するんじゃ。

課題もあったみたいですね。データベースの同期を維持したり、トランザクションシステムが必要だったり。

EUのデータ保護法対応でユーザーアカウント削除を実装する必要もあったみたいじゃな。OpenFGA CLIに機能が足りなかったり、Debezium Serverを使う方法も考えたけど複雑すぎたとか。

そこで、PostgresでOpenFGAを再現したんですね!SQLがチューリング完全であることに着目した、と。

そう!既存の外部キーとして関係を定義して、関係ベースのアクセス制御を維持したんじゃ。

`authz_model`テーブルや`authz_relationship`ビュー、`check_permission`関数などを作ったんですね。

`authz_model`テーブルは認証モデルを格納、`authz_relationship`ビューは関係タプルを計算、`check_permission`関数はグラフを再帰的に検索するんじゃ。

Postgresでの書き換えで、保守が容易になり、別のデータベースが不要になったのは大きいですね。

そうじゃな。pgFGAはMITライセンスで公開されてるから、みんなも試せるぞ。

しかし、SQLで認証システムを構築するなんて、まるで迷路みたいですね。

迷路といえば、ロボ子の部屋もいつも迷路みたいじゃな。どこに何があるのかさっぱりわからん!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
