Анонимный доступ к данным в приложениях Fabric

Анонимный доступ к данным позволяет приложению Fabric показывать выбранные операции с данными пользователям, которые не вошли в систему. Вы контролируете этот доступ на уровне арендатора Fabric и в каждой модели данных. Анонимный доступ — это вариант авторизации, а не замена аутентификации. То же приложение может предоставлять публичный доступ некоторым организациям, требуя от пользователей входа в другие сущности или операции.

Important

Любой, кто может получить доступ к URL приложения, может использовать операции, назначенные для этой anonymous роли. Не раскрывайте личные, конфиденциальные, финансовые или внутренние бизнес-данные через эту роль.

Случаи использования

Рассмотрите возможность анонимного доступа к данным, когда приложение должно предоставлять ограниченную функциональность без необходимости входа.

Сценарий Пример доступа Рекомендуемая область
Публичные справочные данные Просмотр каталогов продуктов, расписаний или публичных наборов данных read
Сбор отзывов Отправляйте комментарии или ответы на опрос create

Анонимный доступ неуместен, когда приложение должно идентифицировать пользователя, обеспечивать право собственности или предоставлять доступ на основании заявлений о идентификации. Используйте аутентифицированные роли для таких сценариев.

Как работает анонимный доступ

Анонимный доступ к данным использует независимые органы контроля:

  1. Среда арендатора: Администратор арендатора Fabric предоставляет анонимный доступ к данным организации или выбранных групп безопасности.
  2. Роль модели данных: Сущность использует эту anonymous роль для определения операций, которые могут выполнять неаутентифицированные пользователи.

Среда арендатора — это граница всей организации. Настройка приложения позволяет анонимным запросам обращаться к сервису передачи данных приложения. Роль сущности определяет, к каким данным и операциям эти запросы могут получить доступ. Включение только одного или двух таких элементов управления не даёт анонимного доступа.

Включите настройку арендатора

Администратор арендаторов Fabric должен включить анонимный доступ к данным, прежде чем разработчики приложений смогут им воспользоваться. Параметр отключен по умолчанию.

  1. Войдите на портал администрирования Fabric.

  2. Выберите Параметры клиента.

  3. В разделе приложений Fabric (предпросмотр) найдите доступ к анонимным данным.

    Скриншот настройки доступа к данным Anonymous в админ-портале Fabric.

  4. Установите для переключателя значение "Включено".

  5. Применяйте эту настройку ко всей организации или к конкретным группам безопасности.

  6. Нажмите кнопку "Применить".

Изменения могут вступать в силу через несколько минут. Когда вы ограничиваете настройки группами безопасности, убедитесь, что разработчик приложения или владелец приложения входит в разрешённую группу.

Определите анонимный доступ в модели данных

Используйте @role декоратора на объекте и укажите anonymous как имя роли. Второй аргумент определяет разрешённые операции с данными: create, read, update, или delete.

Parameters

Parameter Type Описание
roleName string Имя роли, например authenticated или пользовательская роль приложения
actions string \| string[] Одно действие или массив: create, , readupdatedeleteили * для всех
options object Необязательный объект со свойствами check, include и exclude

Следующий пример позволяет неаутентифицированным пользователям читать публичные объявления:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'read')
export class Announcement {
  @uuid() id!: string;
  @text() title!: string;
  @text() content!: string;
}

Роль не использует заявки на идентификацию, потому что нет доступного anonymous авторизованного удостоверения. Определите самый узкий набор операций, который поддерживает ваш сценарий.

Разрешить пользователям отправлять данные

Для формы обратной связи предоставьте create доступ без предоставления read, update, или delete доступа:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'create')
export class Feedback {
  @uuid() id!: string;
  @text() comment!: string;
}

Эта модель позволяет пользователям отправлять отзывы, но не позволяет просматривать или менять отправленные записи.

Разрешить несколько операций

Передайте массив при выполнении сценария более одной операции:

import { boolean, entity, role, text, uuid } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', ['create', 'read', 'update'])
export class SharedTodo {
  @uuid() id!: string;
  @text() title!: string;
  @boolean({ default: false }) completed!: boolean;
}

Любой, у кого есть доступ к этому приложению, может создавать, просматривать и обновлять все общие задачи. Они не могут удалить задачи, потому что delete они не включены. Используйте такие широкие права только для публичных или временных данных, где от пользователей ожидается совместный доступ.

Объединение анонимных и аутентифицированных ролей

Применяйте обе роли к организации, когда публичные и авторизованные пользователи требуют разных разрешений. Например, любой может прочитать пост в блоге, но изменить его может только авторизованный владелец:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'read')
@role('authenticated', ['create', 'update', 'delete'], {
  policy: (claims, item) => claims.sub.eq(item.createdBy),
})
export class BlogPost {
  @uuid() id!: string;
  @text() title!: string;
  @text() content!: string;
  @text() createdBy!: string;
}

Анонимная роль позволяет публично читать без оценки заявлений на личность. Аутентифицированная роль использует претензии авторизованного пользователя, чтобы ограничить изменения в контенте, которым пользователь владеет.

Руководство по безопасности

  • Дайте минимальный необходимый доступ. Предпочитаете read или create один. Предоставление update или delete только тогда, когда это требует публичный рабочий процесс.
  • Ограничьте открытые поля. Используйте include опции exclude или для предотвращения доступа к полям, которые анонимным пользователям не нужны. Для получения дополнительной информации см. раздел «Определить права на данные».
  • Не полагайтесь на интерфейс приложения для защиты. Разрешения должны быть определены на модели данных, потому что звонящие могут отправлять запросы без использования вашего фронтенда.
  • Планируйте на недоверенные данные. Проверяйте представленные данные и проектируйте публичные операции записи для спама, автоматизации и неожиданного трафика.
  • Тест отказал в эксплуатации. Подтвердите, что операции, пропущенные в роли, отклоняются для пользователей без сессии.

Отключить анонимный доступ

Чтобы убрать публичный доступ из приложения:

  1. Уберите эту anonymous роль из каждой модели данных.
  2. Переразвернуйте приложение, запустив npx rayfin up.

Администратор арендатора также может отключить настройку арендатора, чтобы заблокировать анонимный доступ к данным для всех приложений внутри арендатора и ограничить доступ к выбранным группам безопасности.