Acceso anónimo a datos en aplicaciones Fabric

El acceso anónimo a los datos permite que una aplicación Fabric exponga operaciones de datos seleccionadas a usuarios que no están conectados. Controlas este acceso a nivel de Fabric tenant y en cada modelo de datos. El acceso anónimo es una opción de autorización, no un sustituto de la autenticación. La misma aplicación puede proporcionar acceso público a algunas entidades mientras requiere que los usuarios inicien sesión en otras entidades u operaciones.

Importante

Cualquiera que pueda acceder a la URL de la app puede usar las operaciones asignadas al anonymous puesto. No expongas datos personales, confidenciales, financieros o internos de negocio a través de este puesto.

Casos de uso

Considera el acceso anónimo a los datos cuando una aplicación debe ofrecer funcionalidad limitada sin necesidad de iniciar sesión.

Escenario Acceso de ejemplo Ámbito recomendado
Datos de referencia públicos Consulta catálogos de productos, calendarios o conjuntos de datos públicos read
Colección de comentarios Envía comentarios o respuestas a encuestas create

El acceso anónimo no es apropiado cuando una aplicación debe identificar al usuario, hacer cumplir la propiedad o proporcionar acceso basándose en reclamaciones de identidad. Usa roles autenticados para esos escenarios.

Cómo funciona el acceso anónimo

El acceso anónimo a datos utiliza controles independientes:

  1. Configuración del inquilino: Un administrador de Fabric tenant concede acceso anónimo a datos para la organización o grupos de seguridad seleccionados.
  2. Rol en el modelo de datos: Una entidad utiliza el anonymous rol para definir las operaciones que los usuarios no autenticados pueden realizar.

El entorno de inquilinos es el límite a nivel organizacional. La configuración de la app permite que solicitudes anónimas lleguen al servicio de datos de la app. El rol de la entidad determina a qué datos y operaciones pueden acceder esas solicitudes. Activar solo uno o dos de estos controles no concede acceso anónimo.

Activar la configuración de inquilinos

Un administrador de Fabric tenant debe habilitar el acceso anónimo a los datos antes de que los desarrolladores de aplicaciones puedan utilizarlos. La configuración está deshabilitada de forma predeterminada.

  1. Inicie sesión en el portal de administración de Fabric.

  2. Seleccione Configuración de inquilino.

  3. En aplicaciones de Fabric (vista previa), busca Acceso a datos anónimos.

    Captura de pantalla de la configuración de acceso a datos Anónimo en el portal de administración de Fabric.

  4. Configure el interruptor en Habilitado.

  5. Aplica la configuración a toda la organización o a grupos de seguridad específicos.

  6. Seleccione Aplicar.

Los cambios pueden tardar unos minutos en hacer efecto. Cuando limites la configuración a grupos de seguridad, confirma que el desarrollador o el propietario de la app está incluido en un grupo permitido.

Define el acceso anónimo en un modelo de datos

Usa el @role decorador en una entidad y especifica anonymous como nombre del rol. El segundo argumento define las operaciones de datos permitidas: create, read, update, o delete.

Parameters

Parameter Tipo Descripción
roleName string El nombre del rol, como authenticated o un rol de aplicación personalizado
actions string \| string[] Acción única o matriz: create, read, update, deleteo * para todos
options object Objeto opcional con propiedades check, include y exclude

El siguiente ejemplo permite a usuarios no autenticados leer anuncios públicos:

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;
}

El anonymous rol no utiliza reclamaciones de identidad porque no hay ninguna identidad registrada disponible. Define el conjunto más limitado de operaciones que apoye tu escenario.

Permitir que los usuarios envíen datos

Para un formulario de retroalimentación, concede create acceso sin conceder read, update, o delete acceso:

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

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

Este modelo permite a los usuarios enviar sus comentarios, pero no les permite ver o modificar las entradas enviadas.

Permitir múltiples operaciones

Pasar un array cuando un escenario requiere más de una operación:

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;
}

Cualquiera que tenga acceso a esta app puede crear, ver y actualizar todas las tareas compartidas. No pueden borrar tareas porque delete no está incluido. Utiliza permisos amplios como estos solo para datos públicos o temporales donde se espera que los usuarios compartan acceso.

Combina roles anónimos y autenticados

Aplica ambos roles a una entidad cuando los usuarios públicos y los que han iniciado sesión requieren permisos diferentes. Por ejemplo, cualquiera puede leer una entrada de blog, pero solo su propietario con inicio sesión puede cambiarla:

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;
}

El rol anónimo permite lecturas públicas sin evaluar las reclamaciones de identidad. El rol autenticado utiliza las reclamaciones del usuario iniciado sesión para restringir cambios en el contenido que posee el usuario.

Guía de seguridad

  • Concede el acceso mínimo requerido. Prefiero read o create solo. Subvenciones update o delete solo cuando el flujo de trabajo público lo requiera.
  • Limita los campos expuestos. Usa include nuestras exclude opciones para impedir el acceso a campos que los usuarios anónimos no necesitan. Para más información, consulte Definir permisos de datos.
  • No dependas de la interfaz de la app para protegerte. Los permisos deben definirse en el modelo de datos porque los llamantes pueden enviar solicitudes sin usar tu frontend.
  • Planifica para recibir aportaciones no fiables. Validar los datos enviados y diseñar operaciones públicas de escritura para spam, automatización y tráfico inesperado.
  • Operación denegada por la prueba. Confirma que las operaciones omitidas del rol son rechazadas para usuarios sin sesión.

Desactivar el acceso anónimo

Para eliminar el acceso público de una aplicación:

  1. Elimina el anonymous rol de cada modelo de datos.
  2. Redespliega la app ejecutando npx rayfin up.

Un administrador de inquilino también puede desactivar la configuración de inquilino para bloquear el acceso anónimo a todos los datos dentro de un inquilino y limitar el acceso a grupos de seguridad seleccionados.