プライバシールールを設定するまでは、ユーザーやあなた自身が作成したすべてのデータは、誰でも読むことができます。たとえアプリ内にデータを明示的に表示するページがなくても、プログラミングのスキルがあれば、誰でもアプリのすべてのデータを閲覧することができます。そこで重要なのがプライバシールールです。プライバシールールは、ある基準を満たした人にのみデータが表示されることを保証するものです。プライバシールールは、サーバー上で実施されるため、安全です。
Contents
個人情報保護規程の重要性
新しいアプリを作ると、すべてのデータが公開されます。これは、ブログのコメントなど、世界と共有したい場合に適しています。しかし、多くのアプリでは、ユーザーの名前やメールアドレスなど、世界中に公開したくない情報や、すでに知っている人だけに向けたコメントを投稿することになります。プライバシールールは、そのような情報を保護し、安全を確保するためにバブルが提供するツールです。もし、あるものに対してプライバシールールを明示的に作っていなければ、そのデータは安全ではありません。
プライバシールールの定義
どのようなデータ型(あなたが定義した型とユーザー型)でも、プライバシールールを持つことができます。プライバシールールは2つのものから構成されています。
・The condition.これは、あるルールが特定の状況に適用されるかどうかを定義するものです。
・The permissions.これらは、ある条件を満たした状況が、ユーザーが見ることを可能にするタイプのものです。
また、プライバシールールには名前があり、これは編集時にのみ使用されます。
条件を定義する
条件は動的な式で、「はい」または「いいえ」で評価される必要があります。Issue Checker は、yes/no で評価されない式を問題ありとして、修正すべきと判断します。以下の例では、「メッセージ」の送信者と受信者だけがその内容を見ることができるようにしています。
最初のルールは、メッセージの送信者と受信者にすべてのフィールドを表示し、添付ファイルがある場合はそれを表示し、検索結果にはルールに適合したメッセージが含まれるようにするものです。2番目のルールは標準的なもので、他のユーザからすべてのフィールドとファイルを隠し、検索でメッセージが見つからないようにします。検索に制約を加えて、一部の結果が表示されないようにすることもできますが、条件を使うことで、より安全で読みやすい検索が可能になります。
例えば、「Admin」、「Supervisor」、「Member」ユーザーや、「Free」、「Premium」購読者がいる場合などです。この場合、ユーザデータ型に “ロール” フィールドを追加して、各階層のユーザがアクセスする内容に基づいてプライバシールールを定義できるようにします。前者の例では、「Invoice」データタイプに、現在のユーザーのロールがadminである場合に、請求書を修正できるというプライバシールールを設定することができます。後者の例では、「コンテンツ」データ型があり、コンテンツのタイプがプレミアムのみで、現在のユーザーのロールがプレミアムである場合、そのデータ型のすべてのフィールドを見ることができるというプライバシー・ルールがあるかもしれません。
アクセス権の定義
これらは、あるルールが満たされたときに付与される権限です。複数のルールが適用される場合、いずれかのルールがオブジェクトへのアクセスを許可していれば、ユーザーはそのオブジェクトへのアクセスを持つことができます。
1.すべてのフィールドを表示する。このボックスのチェックを外すと、そのルールのユーザーが見ることのできるフィールドを選ぶことができるようになります。このボックスをオンにすると、すべてのフィールドが表示されます。すべてのフィールドのボックスをオフにすると、そのルールのユーザーはどのフィールドも見ることができなくなります。
2.添付ファイルを表示する。このボックスをオフにすると、ユーザーはこのタイプのものに添付されたアップロードされたファイルを見ることができなくなります。ファイルのアップロード時に、ファイルアップロード要素レベルでファイルを添付します。
3.検索で見つける このルールに含まれるユーザーが、この種類の検索結果を見ることができないようにするには、このボックスをオフにします。
4.自動バインディングを許可する。このルールのユーザーが自動バインディングによって修正することを許可する場合は、このボックスにチェックを入れます。現在のルールでユーザーが変更できるさまざまなフィールドを選ぶ必要があります。
プライバシールールの評価方法
複数のプライバシールールがある場合、あるユーザーが複数のプライバシールールを満たす可能性があります。では、その場合はどうなるのでしょうか?
プライバシールールは基本的に加法的なものです。もしユーザがあるタイプについて複数のプライバシールールを満たした場合、そのユーザは各パラメータにおいて、満たしたルールの中で最も高いレベルのパーミッションを持つことになります。
もしユーザーがカスタムプライバシールールを満たさない場合、当然ながら「Everyone else」ルールがデフォルトとなります。
ユーザーがそのページにいる間に、そのユーザーに影響を与えるプライバシールールが変更された場合、プライバシールールはページ上で自動的に更新されません。例えば、ユーザーがあるページを開いていて、そのページでボタンをクリックし、どのプライバシールールが適用されるかを変更し、そのシングを見ることができなくなった場合、この新しいプライバシールールの結果は、ページが更新されるまでページには反映されません。
プライバシールールのデバッグ
プライバシールールを使用すると、ワークフローで一部のデータが表示されないことがあるため、デバッグが困難になることがあります。デバッガーは、プライバシールールによって変更されたものに対して特別な言及をしています。
ワークフローのセキュリティ
ワークフローによるデータの変更には、プライバシールールは適用されません。特定のユーザーのみにデータを修正させたい場合は、ワークフローのイベントやアクションに条件を追加することができます。これらの条件はサーバー上でチェックされるので、自動バインディングによるデータ修正にプライバシールールを設定するのと同じように安全です。
ワークフローの説明は、プライバシールールに関係なく、クライアント側のページに送信されます。次のようなシナリオを考えてみましょう。
あるページで、プライベートThingを作成し、プライベートFieldに可視値(’123456’など)をセットするワークフローがある。ワークフローの記述をクライアント側ページに送るため、このデータは安全なものとして扱われず、静的なパスワードの生成のようにプライバシーが重要な場合には使用されるべきではありません。
このコードがクライアントに送信されることはないため、より安全性を高めるには、Backend ワークフローをスケジューリングすることを検討してください。
参考英語サイト
https://manual.bubble.io/help-guides/working-with-data/protecting-data