
2026/07/31 23:17
認証せず権限付与せよ
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
はい、自動バックアップに関する欠落した詳細を含めるためのわずかな改良を推奨し、「使いやすさ」の比喩をさらに明確に強化することもありますが、現在のサマリーはすでに高品質です。以下が改善版です:
改良されたサマリー:
本文は、ユーザーがアプリと直接認証を行うのではなく、アプリへのデータアクセスをユーザー自身に委譲することを主張し、制御を完全にユーザーの手に置きつついます。オープンソースの ayb プロジェクトによって実装されているこのシステムにより、ユーザーは SQLite や DuckDB のような馴染みのある形式を使用して独自のデータベースを管理できます。アイデンティティ証明のためにパスワードでのログインを強制するのではなく、アプリは安全な接続トークンを要求し、機密情報をプライベートでユーザーが制御可能なボルト内に保持します。このモデルは、現在アプリ所有者がユーザーデータをホストおよび保護している従来の Web アプローチに挑戦しています:例えば、Todos アプリは OAuth2 を使用して ayb からアクセストークンを要求し、サーバー上に最小限の状態を保存しつつ、すべての親密なデータをユーザーのデータベース内に保持します。著者は、ayb でのデータベース作成を Microsoft Word または Google Drive ドキュメント作成と同じくらい簡単であり、手動のサーバー設定が必要なく、作成時に自動的な定期的なスナップショットとバックアップが提供されると述べています。セルフホストリングは平均ユーザーにとっては依然として複雑ですが、開発者への信頼とサードパーティホストへの信頼の間でのトレードオフが存在する一方で、この解決策は高度な技術的知識を必要とせず個人を賦権します。著者はこれを拡張し、基本的なコラボレーション機能を追加し、社会的データの所有権の課題に対処するためにローカスファーストコミュニティ接続を探索することを計画しています。究極的には、このアプローチは開発者がユーザーの主体性を本当に尊重するソフトウェアを構築できるようにし、個人情報を安全に管理するための技術的障壁を簡素化することを目的としています。
本文
認証ではなく「認可」:データ主導権を取り戻すための新しいアプローチ
あらゆるウェブアプリケーションのログイン画面とは、そのアプリがあなたに要求していることを表しています。「あなたのデータにアクセスするには、あなたが自称する通りであることを証明してください(認証)」。つまり、アプリに対してデータを提供する特権を得るために、あなたはまずアプリに対する認証を行う必要があるのです。
しかし、これは大きなデメリットをもたらします。
- アプリケーションの所有者は、あなた自身のデータのアクセス制限、削除、または第三者への売却が可能になります。
- 外部からデータへアクセスできる脆弱性を導入されるリスクがあります。
- 組織全体がハッキングされる可能性があります。
- ポリシー変更や経営陣交代といった理由で、現状維持を強いられます。
一言で言えば「トンチンカン」です。それはあなたのデータなのですから!誰かにそのデータへのアクセス権があることを証明する必要はありませんし、あなたのデータの扱いに対してあなたが不快感を持つようなことは誰も行うべきではありません。
データに対する主導権を取り戻すには、それを格納しているデータベース自体を所有・制御する必要があります。しかし、データベースの運用は複雑であり、一般的なユーザーには期待できません。また、アプリケーションとの連携方法にも課題が残ります。
過去数ヶ月間、著者は「**個人データへの認証」ではなく、「個人データへの認可」**という新しい概念を探求してきました。これにより、あなたが制御するデータベースにアプリケーションがアクセスできるようになります。具体的には、ayb というプロジェクトでデータベースを簡単に作成し、共有してクエリを実行できる機能を実装しました。
実際の動作:ログイン画面のないアプリ
動画で紹介されている「Todos」というタスク管理アプリは、従来のログイン画面を一切持ちません。代わりに、以下のステップを求めています:
- あなたの制御下にあるデータベースを指定する(または新規作成)。
- データベースへの接続権限を与える。
認証の実際の動作フロー
- 従来の方法: 「パスワードを入力」→ アプリがデータを支配。
- ayb の方法: 「データベースに接続(認可してください)」 → ユーザーがアプリにアクセス権を付与。
Todosは OAuth2 フローを開始し、ayb からデータベースをクエリするためのトークンを要求します。著者はこれを管理する
ayb.js ライブラリを開源化しており、エンジニアであれば1 時間以内に新しいアプリケーションに統合できます。
データを持続させるための 3 つの原則
ayb の背後には以下の 3 つの原則があります:
-
認証(Authenticate)ではなく、認可(Authorize)を行う
- パスワードを使って自己を証明しアプリにアクセス権を与える従来の方式は、アプリがデータを支配させます。
- 逆転したフロー: アプリケーションに対して個人データベースへのアクセス権を与えればよいだけです。
-
データベースの作成はドキュメント作成と同じくらい簡単であるべき
- 多くのユーザーは Microsoft Word や Google ドライブで空のドキュメントを作成できますが、定期バックアップが可能でアプリと接続できる Postgres データベースを構築できる人は少ないです。
- ayb では認可フローを使って既存データベースを選択するか、名前だけを指定して新規作成が可能です。
- 新規作成時は設定なしで定期的なスナップショット/バックアップを受け取り、マイグレーションを実行する準備が整います。ファイル保存の難易度と同等です。
-
アプリはユーザーの DB 以外に極力データを保存すべきではない
- Todosは静的な HTML/CSS/JavaScript で構成され、訪問者に関する一切の情報を服务器側に保持しません(サーバーログに残る IP アドレス程度)。
- アプリの状態(state)は著者のサーバー上に保存されず、親密なタスクリスト項目すべてはあなたが所有するデータベース内に格納されます。
- いつでもTodos のアクセス権を取り消すことが可能です。
ホストを信頼することについて
「ayb にデータを保存すべき」と言いましたが、これは単にサードパーティへの依存を意味しません。ayb はオープンソースであり、セルフホストも可能ですが、すべてのユーザーがデータベース管理者になる必要はありません。
アプリケーションとそれを運用するデータベースを分離させることの利点は以下の通りです:
- 明確な選択肢の提供: 開発者がデータを黙って管理させるのではなく、一度に「データはどこか」を選択できます。
- 主導権のコスト均等化: 複数のアプリで使用可能になり、データの制御コストが低減します。
- ホストの選択自由: オープンソースであり、協同組合やユーザー組織によるセルフホスティングへの移行も容易です。
- フォーマットの標準化: 独自のファイル形式ではなく、SQLite や DuckDB などの一般的な形式を採用し、エクスポート/インポート機能でデータを容易に移転できます。
個人データを超えて:協働と社会的相互作用
「認証ではなく認可」のモデルは、明確に「所有する」データ(個人データ)において最も効果的です。しかし、以下のようなケースでは課題が生じます:
- 協働: Google ドキュメントのように共同編集する場合、「個人のデータベース」に保存する定義が曖昧になります。ayb では共有機能がありますが、所有者の概念が残ります。
- 社会的相互作用: 大規模組織がソーシャルメディアデータを支配するアルゴリズムを所有するのは問題です。ActivityPub や AT Protocol は選択肢を提供しますが、タイムライン集約には中央集権的な仕組みへの依存やインフラ課題があります。
著者は、中央集権的な集約器に依存せず、分散型の形で個人のデータストア全体から社会的ネットワークの最新更新を表示する仕組みの実現を目指しています。
今後への展望
究極的には、ユーザーが「認証」を求めるのではなく、「認可」を促すソフトウェアの開発を望んでいます。
ayb を活用することで以下の課題を解決できます:
- 開発者が敏感なデータを他者の DB に保存したがらないため、アプリの構築を避けていた問題を解消。
- データベース運用に時間をかけられないという課題を解消(ボタン一つで起動可能)。
今後探求したい分野:
- 基本レベルの協働: ジャーナリストや科学者がキュレーションするデータセットでの共同作業支援。
- Local-First コミュニティとの連携: ローカル SQLite/DuckDB とリモート ayb DB の同期仕組み。
- 開発者支援: ユーザーにデータ主導権を残す形でアプリを開発できるようガイドラインやツールの提供。
最も大切なこと: 何枚もの「ログイン画面」をデータベース認可画面で置き換えられるかを観察することです。
このブログ投稿と動画についてフィードバックを提供してくださった Meredith Blumenstock 氏に感謝いたします。