Accès anonyme aux données dans les applications Fabric

L'accès anonyme aux données permet à une application Fabric d'exposer certaines opérations de données à des utilisateurs non connectés. Vous contrôlez cet accès au niveau du locataire Fabric et dans chaque modèle de données. L’accès anonyme est une option d’autorisation, pas un remplacement de l’authentification. La même application peut fournir un accès public à certaines entités tout en exigeant que les utilisateurs se connectent à d’autres entités ou opérations.

Important

Toute personne pouvant accéder à l’URL de l’application peut utiliser les opérations attribuées au anonymous rôle. Ne divulguez pas de données personnelles, confidentielles, financières ou internes à travers ce poste.

Cas d’utilisation

Envisagez l’accès anonyme aux données lorsqu’une application doit fournir des fonctionnalités limitées sans obligation de connexion.

Scénario Exemples d’accès Étendue recommandée
Données de référence publiques Consultez les catalogues de produits, les plannings ou les ensembles de données publics read
Collecte de commentaires Soumettez des commentaires ou des réponses à un sondage create

L’accès anonyme n’est pas approprié lorsqu’une application doit identifier l’utilisateur, faire respecter la propriété ou fournir un accès sur la base de revendications d’identité. Utilisez des rôles authentifiés pour ces scénarios.

Comment fonctionne l’accès anonyme

L’accès anonyme aux données utilise des contrôles indépendants :

  1. Lieu de location : Un administrateur locataire Fabric accorde un accès anonyme aux données à l’organisation ou à certains groupes de sécurité.
  2. Rôle dans le modèle de données : Une entité utilise ce anonymous rôle pour définir les opérations que les utilisateurs non authentifiés peuvent effectuer.

Le cadre locataire constitue la frontière à l’échelle de l’organisation. Le paramètre de l’application permet aux requêtes anonymes d’atteindre le service de données de l’application. Le rôle d’entité détermine quelles données et opérations ces requêtes peuvent accéder. N’activer qu’un ou deux de ces contrôles n’accorde pas un accès anonyme.

Activez le paramètre du locataire

Un administrateur de locataire Fabric doit activer un accès anonyme aux données avant que les développeurs d’applications puissent l’utiliser. Le paramètre est désactivé par défaut.

  1. Connectez-vous au portail d’administration Fabric.

  2. Sélectionnez Paramètres du client.

  3. Dans les applications Fabric (aperçu), trouvez Accès anonyme aux données.

    Capture d’écran du paramètre d’accès aux données anonymes dans le portail d’administration Fabric.

  4. Définissez l'interrupteur sur Activé.

  5. Appliquez ce paramètre à l’ensemble de l’organisation ou à des groupes de sécurité spécifiques.

  6. Cliquez sur Appliquer.

Les changements peuvent prendre quelques minutes avant de faire effet. Lorsque vous limitez ce paramètre aux groupes de sécurité, vérifiez que le développeur ou le propriétaire de l’application est inclus dans un groupe autorisé.

Définir l’accès anonyme dans un modèle de données

Utilisez le @role décorateur sur une entité et spécifiez anonymous comme nom du rôle. Le second argument définit les opérations de données autorisées : create, read, update, ou delete.

Parameters

Paramètre Type Description
roleName string Le nom du rôle, tel que authenticated ou un rôle d’application personnalisé
actions string \| string[] Action ou tableau unique : create, , readupdate, deleteou * pour tous
options object Objet facultatif avec check, includeet exclude propriétés

L’exemple suivant permet aux utilisateurs non authentifiés de lire les annonces publiques :

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

Le anonymous rôle n’utilise pas les revendications d’identité car aucune identité connectée n’est disponible. Définissez l’ensemble d’opérations le plus restreint qui soutient votre scénario.

Permettre aux utilisateurs de soumettre des données

Pour un formulaire de retour, accordez create l’accès sans accorder read, update, ou delete l’accès :

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

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

Ce modèle permet aux utilisateurs de soumettre des retours, mais ne leur permet pas de consulter ou de modifier les entrées soumises.

Autoriser plusieurs opérations

Passer un tableau lorsqu’un scénario nécessite plus d’une opération :

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

Toute personne ayant accès à cette application peut créer, consulter et mettre à jour chaque tâche partagée. Ils ne peuvent pas supprimer les tâches car delete ce n’est pas inclus. Utilisez des permissions larges comme celles-ci uniquement pour les données publiques ou temporaires où les utilisateurs sont censés partager l’accès.

Combinez des rôles anonymes et authentifiés

Appliquer les deux rôles à une entité lorsque les utilisateurs publics et connectés nécessitent des permissions différentes. Par exemple, n’importe qui peut lire un article de blog, mais seul son propriétaire connecté peut le modifier :

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

Le rôle anonyme permet des lectures publiques sans évaluer les revendications d’identité. Le rôle authentifié utilise les revendications de l’utilisateur connecté pour restreindre les modifications apportées au contenu que l’utilisateur possède.

Conseils de sécurité

  • Accordez l’accès minimum requis. Plutôt read ou create seul. Subventionnez update ou delete seulement lorsque le flux de travail public l’exige.
  • Limitez les champs exposés. Utilisez include des exclude options pour empêcher l’accès à des champs dont les utilisateurs anonymes n’ont pas besoin. Pour plus d’informations, voir Définir les permissions de données.
  • Ne comptez pas sur l’interface de l’application pour la protection. Les permissions doivent être définies sur le modèle de données car les appelants peuvent envoyer des requêtes sans utiliser votre frontend.
  • Prévoyez les entrées non fiables. Valider les données soumises et concevoir des opérations d’écriture publiques pour le spam, l’automatisation et le trafic inattendu.
  • Test refusé des opérations. Confirmez que les opérations omises du rôle sont rejetées pour les utilisateurs sans session.

Désactiver l’accès anonyme

Pour supprimer l’accès public d’une application :

  1. Supprimez ce anonymous rôle de chaque modèle de données.
  2. Redéployez l’application en lançant npx rayfin up.

Un administrateur locataire peut également désactiver le paramètre locataire pour bloquer l’accès anonyme aux données de toutes les applications au sein d’un locataire et limiter l’accès à certains groupes de sécurité.