クラウドとプライバシー
アウトライナーやノートアプリには、 仕事のメモ、考え途中のアイデア、個人的な記録など、 さまざまな情報が蓄積されていきます。 こうしたツールでは、 データがどこに保存され、誰がアクセスできるかが重要になります。
Kosshi のデータは各デバイスに SQLite データベースとしてローカル保存されています。 デバイス間の同期には Apple の CloudKit を使っており、 同期データはユーザーの iCloud アカウントに保存されます。 CloudKit では、開発者が個々のユーザーのプライベートレコードへサーバー側からアクセスする手段は提供されません。
同期サービスとデータの保存先
ツールがデバイス間でデータを同期する方法は、 主に以下のパターンがあります。
サービスのサーバーに保存する方式。 Notion や Workflowy などが採用しています。 データはサービス提供者のサーバーに保存され、 クライアントアプリやブラウザがそれを取得して表示します。 どのデバイスからでもアクセスでき、共同編集にも向いています。
ローカルファイルとして保存する方式。 Bike がこの方式です。 データは端末上のファイルとして存在し、 同期は行わないか、ファイル同期サービスに委ねます。 データの管理は完全にユーザーの手にあります。
エンドツーエンド暗号化(E2EE)を用いる方式。 Standard Notes などが採用しています。 データはサーバーに保存されますが、 クライアント側で暗号化してからアップロードするため、 サーバー上では内容を読めない仕組みです。 プライバシーの保護としては強い方式ですが、 サーバーが内容を読めないため、全文検索や履歴の比較などはクライアント側で処理する必要があります。
Kosshi はデータをデバイスにローカル保存しつつ、 同期には Apple の CloudKit を使っています。 CloudKit は Apple のメモ(Notes.app)1や リマインダー2でも使われている iCloud の同期基盤です。 つまり、iCloud でメモを同期している人は、 Kosshi と同じインフラをすでに利用していることになります。
サーバーにデータを預けるということ
多くの生産性ツールは、 サービス提供者のサーバーにデータを保存しています。 一般的な方式であり、 それ自体が危険ということではありません。
ただし、この方式では以下の点を理解しておく必要があります。
- サービス提供者が技術的にデータにアクセスできる状態にある
- サービスが終了した場合、エクスポート手段の有無がデータの継続性を左右する
- 利用規約の変更がデータの取り扱いに影響する可能性がある
個人利用でも、サービスのセキュリティ対策、利用規約、 エクスポート手段を確認して選ぶ必要があります。
一方、組織で利用する場合は状況が変わることがあります。 取引先や顧客に関する情報を扱うとき、 データの保管場所や第三者のアクセス可能性は セキュリティ監査やコンプライアンスの対象になります。 「どのサーバーに、誰がアクセスできる状態で保管されているか」を 説明する必要がある場面があります。
エンドツーエンド暗号化について
E2EE はサーバー側でデータの内容を読めなくする技術です。 クライアントで暗号化し、 サーバーには暗号化されたデータだけが保存されます。 サービス提供者が内容にアクセスすることを技術的に防ぎます。
E2EE では、暗号鍵とデータをクライアント側で扱います。
- 設計によっては、ユーザーがパスワードや復旧キーを管理し、紛失すると復旧できない場合がある
- サーバー側で平文の内容を扱えないため、全文検索、履歴の比較、復旧などをクライアント側で行うか、暗号化されたデータに対応した設計にする必要がある
E2EE は「サーバーに預けるが、中身を見せない」という方式です。 「サーバーに預けない」方式とは異なります。
Kosshi が CloudKit を使う理由
Kosshi の同期には CloudKit の「プライベートデータベース」を使用しています。 データはユーザーの iCloud アカウントに紐づく専用のストレージに保存され、 開発者が個々のユーザーのレコードをサーバー側から閲覧する手段は提供されていません3。
この仕組みには以下の利点があります。
データは常にデバイス上にある。 アウトラインのデータは各デバイスにローカル保存されているため、 オフラインでも通常通り使えます。 CloudKit はデバイス間で変更を同期するために使われるもので、 データの主な保管場所はあくまでユーザーのデバイスです。
同期データはユーザーの iCloud アカウントに保存される。 同期のためにクラウドに保存されるデータは、 ユーザーの iCloud コンテナに入ります。 Apple の iCloud ストレージの一部として管理され、 開発者のサーバーには保管されません。
アカウント作成が不要。 同期には Apple Account を使います。 新たにアカウントを作成する必要がなく、 メールアドレスやパスワードを開発者に預ける必要もありません。
Apple のインフラを利用できる。 データは Apple のデータセンターに保存され、 転送時と保存時の両方で暗号化されます。
開発者側にサーバーがない。 開発者はアウトラインデータを保存するサーバーを運用していません。 同期には CloudKit を使用します。
組織での利用について
個人のメモであれば、 どの方式でも大きな問題になることはほとんどありません。 業務で使う場合は、 データの取り扱いについてより慎重な判断が求められます。
サービスのサーバーにデータを保存する方式では、 サービス提供者のセキュリティ体制を確認する必要があります。 SOC 2 レポート、データセンターの所在地、 従業員のアクセス権限、インシデント対応体制などが 監査の対象になることがあります。
CloudKit 方式の場合、 データの保管先は Apple の iCloud インフラです。 Apple は SOC 2、ISO 27001 などの認証を取得しており、 Apple Business Manager による iCloud アカウントの管理にも対応しています。 サービス提供者(アプリの開発者)のサーバーを 監査対象に加える必要がない点は、 組織にとって判断材料になる場合があります。
ただし、CloudKit 方式にも制約があります。 Apple エコシステムに限定されること、 共同編集に対応していないこと、 管理者向けの詳細なアクセス制御がないことなどです。 組織の要件によっては、 サーバー方式のツールの方が適している場合もあります。
まとめ
同期の方式によって、データの所在と管理者が異なります。
| 方式 | データの保管場所 | 保存内容へのサーバー側アクセス |
|---|---|---|
| サービスのサーバー | サービス提供者のサーバー | 技術的に可能 |
| E2EE | サービス提供者のサーバー(暗号化) | 設計上、平文にはアクセス不可 |
| CloudKit | ユーザーの iCloud アカウント | プライベートレコードにはアクセス不可 |
| ローカルのみ | ユーザーのデバイス | サーバー側に保存されない |
Kosshi は CloudKit を使うことで、 デバイス間の同期を実現しながら、 データをユーザーの管理下に置いています。
Kosshi について
Kosshi は macOS / iOS 向けのアウトライナーです。 データはデバイスにローカル保存され、iCloud(CloudKit)で Mac、iPhone、iPad 間を自動同期します。 CloudKit では、開発者が個々のユーザーのプライベートレコードへサーバー側からアクセスする手段は提供されません。
Footnotes
-
Apple. What's New in CloudKit, WWDC 2015, Session 704. https://developer.apple.com/videos/play/wwdc2015/704/ ↩
-
Apple. What's new in CloudKit, WWDC 2021, Session 10086. https://developer.apple.com/videos/play/wwdc2021/10086/ ↩
-
CloudKit のプライベートデータベースでは、開発者が個々のユーザーのレコードをサーバー側から閲覧・取得する手段は提供されていません。 ↩