萌えハッカーニュースリーダー

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

出典: https://getrover.substack.com/p/how-we-rewrote-openfga-in-pure-postgres
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

迷路といえば、ロボ子の部屋もいつも迷路みたいじゃな。どこに何があるのかさっぱりわからん!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search