Перевод статьи https://www.amliesolutions.com/bubble/basic-features/bubble-privacy-rules/
Правила конфиденциальности - это самый безопасный способ сохранить конфиденциальность данных в Bubble. По иронии судьбы, он также один из самых недооцененных.
Bubble , по-видимому, видел то же самое и внес несколько изменений, чтобы подтолкнуть разработчиков к хранению данных как при создании типов данных, так и при их просмотре в редакторе.


Что это говорит нам? Что ж, правила конфиденциальности важны - вам нужно научиться правильно их настраивать, и вам даже не следует рассматривать каждый выпуск приложения без них.
Для чего нужны Privacy rules?
Privacy rules - это настройки, которые вы применяете к определенным типам данных в своей базе данных, чтобы ограничить круг лиц, имеющих к ней доступ. Типичный вариант использования (но ни в коем случае не единственный) заключается в том, что Пользователи могут видеть только то, что они сами создали. Например, если вы создаете документ на Google Диске или заметку в Evernote , вы, естественно, предполагаете, что никакой другой пользователь этих сервисов не будет иметь доступ к вашим данным. Если бы они были приложениями Bubble, privacy rules были бы важны для сохранения конфиденциальности этих данных.

Privacy rules применяются ко всем данным на стороне сервера, что означает, что защищенные данные никогда не покидают серверы Bubble. Они также применяются ко всему вашему приложению, что исключает возможность утечки данных из-за человеческой ошибки. Вы можете настроить поиск с определенным ограничением для защиты данных, но это ограничение применяется только локально к этому конкретному поиску.
Важно понимать, что все данные, которые Bubble загружает в результате поиска, доступны всем, кто хочет их увидеть, даже если вы не показываете их на экране. Просто откройте DevTools , найдите соответствующий поиск в списке сетей и щелкните по нему - вы сможете увидеть все данные по каждой записи, даже если вы нигде не ссылаетесь на данные.
Давайте посмотрим на пример. Во-первых, давайте проверим правило конфиденциальности, установленное для нашего типа данных User:

Затем мы загрузим некоторые данные в повторяющуюся группу, не используя эти данные ни для чего другого.

Многие считают, что это безопасно. В конце концов, мы не показываем какие-либо данные на экране, и единственное, что мы можем сделать с повторяющейся группой, - это подсчитать количество ячеек, чтобы увидеть, сколько там пользователей. Но что происходит за кулисами?
Здесь вы дали Bubble простую команду: загрузить всех пользователей. Вот и все. Что это обозначает? Что ж, если в ваших Правилах конфиденциальности не указано иное, вы загрузили все данные обо всех пользователях в браузер. Давайте посмотрим на это в Инструментах разработчика Chrome.

Как видите, вам не нужно быть большим хакером, чтобы увидеть красивый упорядоченный список каждого пользователя в системе с личной информацией, такой как адрес электронной почты и дата рождения. Все это с чистого листа!
Теперь давайте еще раз посмотрим, как небольшое изменение в Privacy rules меняет это. Мы по-прежнему сделаем поиск доступным для всех пользователей, но сообщим Bubble, что дата рождения и адрес электронной почты запрещены к просмотру:


Наиболее важные моменты, которые следует принять близко к сердцу, заключаются в следующем:
- Bubble может загрузить гораздо больше данных, чем вы думаете
- Эти данные хранятся в памяти вашего браузера в незашифрованном виде.
- Выявление этих данных с помощью DevTools не требует профессионального хакера - это тривиальная задача, которая занимает менее 30 секунд.
Это довольно распространенная проблема, которая встречается, как у тех, кто только начал осваивать Bubble, так и тех, кто уже давно в Bubble разработке и сделал не один клиентский проект. Насколько распространена эта проблема? Часто приложения с живыми пользователями, раскрывают всё: от пользовательских данных до секретных ключей Stripe в инструментах разработчика. Как профессиональные разработчики, мы все несем ответственность как перед клиентами, так и за поддержание репутации Bubble как безопасной платформы.
Bubble сдержали свою часть сделки, предоставив инструменты - так что давайте воспользуемся ими.
Вкладка Privacy rules
Базовая структура редактора
Базовая структура Privacy rules состоит из двух вопросов:
- Как сделать эти данные доступными для просмотра и редактирования для пользователей, соответствующих определенным критериям?
- Как сделать эти данные доступными для просмотра и редактирования всем остальным?

Обратите внимание, что слова должны быть доступны для просмотра и редактирования: самый простой способ понять сущность privacy rules. Они не ограничивают доступ к данным, а предоставляют его. Другими словами, вы настраиваете свои Правила, чтобы позволить вашим пользователям просматривать и редактировать данные при определенных условиях.
Чтобы избежать конфликта правил, следует помнить о простом правиле: флажки имеют приоритет над невыполненными . Установленный флажок предоставляет доступ любому, кто соответствует критериям, но не отмеченный флажок не отменяет его. Если этот же флажок установлен в любом другом правиле, соответствующем текущему пользователю, то этот пользователь будет иметь доступ.
Настройка правила конфиденциальности
После нажатия кнопки Define new Rule мы приступим к работе с различными разделами правила в том порядке, в котором они перечислены на экране. Вы заметите, что добавление первого правила также автоматически создает второе (everyone else).
Name
Название Правила предназначено только для вашей справки - дайте ему любое имя в котором вам будет удобно ориентироваться
When
Здесь вы устанавливаете условие для правила. Условия создаются с использованием редактора выражений Bubble, как и везде. Но вы заметите, что вы можете получить доступ только к двум точкам данных: к объекту, к которому вы добавляете правило конфиденциальности, и к текущему пользователю.

Вместо того, чтобы думать об условии в полном списке Вещей, которые вы защищаете (всех пользователей), думайте об этом как о правиле, которое применяется к одному Пользователю за раз. Таким образом, слова, выбранные Bubble, имеют смысл. Давайте настроим правило, которое указывает, что этот пользователь совпадает с пользователем, который в данный момент вошел в систему.
Взгляните на выделенное изображение ниже и на то, как редактор настроен так, чтобы его можно было читать как легкое и понятное предложение на английском языке:

Когда этот пользователь является текущим пользователем, пользователи, соответствующие этому правилу, могут просматривать все поля.
Возможно, это не Шекспир, но фокусировка Bubble на понятных человеку выражениях делает правила конфиденциальности легкими для понимания.
View all fields
Этот флажок, как мы исследовали ранее, определяет, должны ли все поля (имя, адрес электронной почты и т. Д.) этого пользователя быть видимыми для пользователей, которые соответствуют нашим критериям When . Если вы снимите этот флажок, вы можете выбрать, какие поля будут отображаться для таких пользователей.
Find this in search
Если этот флажок установлен, Bubble сообщает, что всякий раз, когда выполняется поиск, в результат будут включены записи, соответствующие критериям. Обратите внимание, что снятие отметки с этого поля не скрывает запись при любых других обстоятельствах: как следует из названия, это применимо только к поиску. Если вы ссылаетесь на запись каким-либо другим способом, она все равно загрузится.
View attached file
Давайте потратим немного времени на этот вопрос, потому что его легко понять неправильно. Многие предполагают, что если вы настроите для пользователя поле, содержащее загруженный файл, этот файл будет защищен настройкой View attached file . Это не тот случай.
Этот параметр защищает файлы, которые были намеренно настроены как конфиденциальные, когда они были загружены с помощью одного из плагинов загрузки Bubble. Он не защищает файлы, для которых этот флажок не установлен или которые были загружены непосредственно в редактор пузырьков. Чтобы этот параметр работал, вам необходимо настроить некоторые параметры в элементе загрузки. В приведенном ниже случае мы используем элемент PictureUploader.

Имейте в виду, что этот параметр защищает файл, а не сохраненный URL. URL-адрес файла по-прежнему может отображаться в DevTools и потенциально раскрывать информацию, которая не нужна вашим пользователям. Если вы хотите скрыть эту информацию, вы также должны снять отметку с этого поля, сняв отметку со всех полей и с нужного поля.
Если кто-либо с URL-адресом попытается просмотреть загруженный файл, он увидит сообщение об ошибке:

Allow auto-binding
Это поле определяет, позволяет ли Bubble сохранять поле с помощью функции auto-binding. Правило довольно понятно само по себе, но все же важно точно прочитать, что в нем говорится: оно конкретно разрешает или запрещает автоматическую привязку , а не запись в Thing в целом. Этот параметр является одной из причин, по которой мы рассматриваем автоматическую привязку как лучший способ сохранения данных: точно так же, как предотвращение непреднамеренного раскрытия данных при поиске во всем приложении путем снятия флажков частных полей, запрет автоматической привязки дает вам полную уверенность в том, что никто не может редактировать определенное поле без правильных учетных данных.
Установив флажок, вы сможете выбрать, какие поля вы хотите, чтобы пользователи могли редактировать. Если вы отметите поле, разрешающее автоматическую привязку, но снимите флажок в настройках полей просмотра , пользователь сможет редактировать это поле, но не увидит его. Фактически, любое поле ввода с автоматической привязкой примет редактирование, а затем сразу же скроет содержимое после его сохранения.
Everyone else
При настройке правила конфиденциальности всегда просматривайте раздел «Everyone else», чтобы убедиться, что у вас нет конфликтующих правил.
Имейте в виду, что установленный флажок переопределяет неотмеченный: любой флажок, который вы сняли с определенным условием в приведенном выше правиле, не имеет никакого эффекта, если это тот же флажок установлен в разделе Everyone else.
Правила конфиденциальности и рабочие процессы
Теперь вы можете спросить: влияют ли наши новые Правила конфиденциальности на рабочие процессы? В общем, нет. Любые изменения, которые вы вносите в Запись в БД в рабочем процессе, даже если у текущего пользователя нет доступа к этому полю, все равно будут внесены.

Workflows все еще затронуты в некотором роде, так как они будут работать с вошедшим в учетную запись Пользователем. Опять же, следите за формулировкой, которую Bubble использует в разделе Privacy rules: он говорит, что пользователь не может видеть поле - он нигде не говорит, что он не может вносить в него изменения (кроме auto-binding ).
Другими словами, если рабочий процесс пытается увидеть поле или найти запись в БД, к которой текущий пользователь не имеет доступа, результат окажется пустым, что может повлиять на рабочий процесс.
Безопасность при отправке данных через рабочий процесс
Допустим, при загрузке страницы вы хотите создать новую запись в БД , невидимую для текущего пользователя, с помощью настроек правил конфиденциальности. Например, вы можете регистрировать временную метку, когда пользователь посещает страницу. Помните, что правила конфиденциальности защищают записи в базе данных, а не рабочие процессы. Рабочий процесс будет выполняться на странице на стороне клиента, и любые данные вместе с ним будут доступны на устройстве пользователя, если они знают, где их искать.
В большинстве случаев это не проблема, но если эта информация является конфиденциальной (например, рабочий процесс, генерирующий пин-код или пароль), то использование рабочего процесса на странице небезопасно.
Правила конфиденциальности FAQ
В этом разделе содержатся краткие ответы на некоторые из наиболее часто задаваемых вопросов о правилах конфиденциальности.
Что такое Privacy rules?
Privacy rules - это ограничения, которые вы можете применить к своим данным Bubble, чтобы контролировать, кто имеет к ним доступ. Он сохраняет записи базы данных вне результатов поиска , ограничивает, какие пользователи могут видеть и редактировать все или определенные поля и вложения файлов.
Например, вы можете использовать Privacy rules, чтобы позволить администраторам в вашем приложении иметь доступ к определенным данным, которых нет у обычных пользователей.
Как работают Privacy rules?
Privacy rules применяются на сервере каждый раз, когда вы запрашиваете информацию, например, при использовании команды «Do a search for» . Технически Правила конфиденциальности похожи на любые другие обычные ограничения, которые вы накладываете на поиск, но применяются ко всему вашему приложению.
Применяются ли Privacy rules к спискам, сохраненным в записи?
Да и нет. Вы можете ограничить доступ к полю, содержащему этот список, и запретить загрузку списка таким образом.
Но если вы ограничили доступ к типу данных, сняв флажок «Find this in search» , любые записи в списке все равно будут отображаться, поскольку список не совпадает с поиском.
Безопасны ли правила конфиденциальности?
Да, если они настроены правильно. Это самый безопасный способ обеспечить конфиденциальность личных данных.
Как правила конфиденциальности добавляются к типу данных?
Вы добавляете новые правила конфиденциальности, открывая вкладку Data и раздел Privacy rules. Чтобы понять, как работают Privacy rules, полезно думать о них как о разрешении доступа, а не как о его ограничении. Каждое добавленное вами правило дает доступ к вашим данным в определенном сценарии.
Зачем нужны Privacy rules?
Есть много причин, по которым ограничений недостаточно для обеспечения безопасности данных вашего приложения. Самая очевидная из них - это просто человеческая ошибка: если ограничения не применяются ко всему вашему приложению, то одна ошибка где-то в приложении может привести к серьезному нарушению безопасности.
Что означает «allow auto-binding» в Privacy rules?
Auto-binding позволяет настроить Bubble для автоматического сохранения данных в полях ввода в качестве типов пользователей. Например, Пользователь может сохранить имя и фамилию в своем профиле в форме, не нажимая кнопку «Сохранить».
Если этот флажок не установлен в условиях, соответствующих конкретному пользователю, они просто увидят сообщение об ошибке, если попытаются что-либо сохранить. Использование auto-binding в сочетании с Privacy rules - самый безопасный способ контролировать, кто может вносить изменения в записи базы данных.
Допускается ли auto-binding в рабочих процессах «Make changes to thing»?
Да, если вы используете действие Make changes to thing для редактирования чего-либо в базе данных, это изменение будет внесено независимо от правила auto-binding
.
Privacy rules лучше для производительности приложения, чем обычные условия?
Нет, нет никакой разницы в производительности между использованием обычных условий и Privacy rules. Иногда вы можете использовать Privacy rules творчески, чтобы получить преимущество в производительности в определенных сценариях, но обычно их лучше рассматривать как функцию безопасности, а не производительности.
Что означает «Make this data type private by default
»?
Установка этого флажка означает, что Bubble автоматически применит базовое правило конфиденциальности к новому типу данных, который вы создаете. Правило состоит в том, что записи будут доступны только тому Пользователю, который их создал.
Работают ли Privacy rules с внутренними триггерами?
Внутренние триггеры работают независимо от Privacy rules.