Acesso anônimo a dados em aplicativos Fabric

O acesso anônimo a dados permite que um aplicativo Fabric exponha operações selecionadas de dados para usuários que não estão logados. Você controla esse acesso no nível do tenant Fabric e em cada modelo de dados. O acesso anônimo é uma opção de autorização, não um substituto da autenticação. O mesmo aplicativo pode fornecer acesso público a algumas entidades, exigindo que os usuários façam login em outras entidades ou operações.

Importante

Qualquer pessoa que consiga acessar a URL do app pode usar as operações atribuídas à anonymous função. Não exponha dados pessoais, confidenciais, financeiros ou internos de negócios por meio dessa função.

Casos de uso

Considere o acesso anônimo a dados quando um aplicativo precisa fornecer funcionalidades limitadas sem exigência de login.

Scenario Acesso de exemplo Escopo recomendado
Dados de referência pública Veja catálogos de produtos, agendas ou conjuntos de dados públicos read
Coleção de comentários Envie comentários ou respostas a pesquisas create

O acesso anônimo não é apropriado quando um aplicativo precisa identificar o usuário, impor a propriedade ou fornecer acesso com base em reivindicações de identidade. Use papéis autenticados para esses cenários.

Como funciona o acesso anônimo

O acesso anônimo a dados utiliza controles independentes:

  1. Configuração do inquilino: Um administrador de locatários Fabric concede acesso anônimo a dados para a organização ou grupos de segurança selecionados.
  2. Papel do modelo de dados: Uma entidade usa o anonymous papel para definir as operações que usuários não autenticados podem realizar.

O contexto do inquilino é o limite em toda a organização. A configuração do app permite que solicitações anônimas cheguem ao serviço de dados do app. O papel da entidade determina quais dados e operações essas requisições podem acessar. Ativar apenas um ou dois desses controles não concede acesso anônimo.

Ativar a configuração do inquilino

Um administrador de tenant Fabric deve habilitar o acesso anônimo a dados antes que desenvolvedores de aplicativos possam usá-lo. A configuração é desabilitada por padrão.

  1. Entre no portal de administração do Fabric.

  2. Selecione Configurações de locatário.

  3. Em aplicativos Fabric (prévia), encontre Acesso a dados anônimos.

    Captura de tela da configuração de acesso a dados Anônimo no portal de administração do Fabric.

  4. Defina o alternador para Habilitado.

  5. Aplique a configuração a toda a organização ou a grupos de segurança específicos.

  6. Selecione Aplicar.

As mudanças podem levar alguns minutos para fazer efeito. Quando você limitar a configuração a grupos de segurança, confirme que o desenvolvedor ou dono do app está incluído em um grupo permitido.

Defina acesso anônimo em um modelo de dados

Use o @role decorador em uma entidade e especifique anonymous como nome do papel. O segundo argumento define as operações de dados permitidas: create, read, update, ou delete.

Parameters

Parâmetro Tipo Descrição
roleName string O nome da função, como authenticated ou uma função de aplicativo personalizada
actions string \| string[] Ação ou matriz única: create, , read, update, deleteou * para todos
options object Objeto opcional com check, includee exclude propriedades

O exemplo a seguir permite que usuários não autenticados leiam anúncios 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;
}

A anonymous função não usa reivindicações de identidade porque não há identidade logada disponível. Defina o conjunto mais restrito de operações que apoie seu cenário.

Permitir que os usuários enviem dados

Para um formulário de feedback, conceda create acesso sem conceder read, update, ou delete acesso:

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

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

Esse modelo permite que os usuários enviem feedback, mas não permite que vejam ou alterem as entradas enviadas.

Permitir múltiplas operações

Passe um array quando um cenário requer mais de uma operação:

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

Qualquer pessoa com acesso a este app pode criar, visualizar e atualizar todas as tarefas compartilhadas. Eles não podem apagar tarefas porque delete não está incluído. Use permissões amplas como essas apenas para dados públicos ou temporários, onde os usuários devem compartilhar acesso.

Combine papéis anônimos e autenticados

Aplicar ambos os papéis a uma entidade quando usuários públicos e logados exigirem permissões diferentes. Por exemplo, qualquer pessoa pode ler uma postagem no blog, mas apenas o dono logado pode alterá-la:

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

O papel anônimo permite leituras públicas sem avaliar as reivindicações de identidade. A função autenticada utiliza as alegações do usuário logado para restringir alterações no conteúdo que o usuário possui.

Diretrizes de segurança

  • Conceda o acesso mínimo exigido. Prefira read ou create esteja sozinho. Conceda subsídio update ou delete somente quando o fluxo de trabalho público exigir.
  • Limite os campos expostos. Use include ou exclude opções para impedir o acesso a campos que usuários anônimos não precisam. Para mais informações, veja Definir permissões de dados.
  • Não confie na interface do app para proteção. As permissões devem ser definidas no modelo de dados porque os chamadores podem enviar requisições sem usar seu frontend.
  • Planeje para opiniões não confiáveis. Validar os dados enviados e projetar operações públicas de escrita para spam, automação e tráfego inesperado.
  • Operação negada pelo teste. Confirme que as operações omitidas da função são rejeitadas para usuários sem sessão.

Desabilitar o acesso anônimo

Para remover o acesso público de um aplicativo:

  1. Remova o anonymous papel de cada modelo de dados.
  2. Reimplante o aplicativo rodando npx rayfin upo arquivo .

Um administrador de tenant também pode desativar a configuração de tenant para bloquear o acesso anônimo a dados de todos os apps dentro de um tenant e limitar o acesso a grupos de segurança selecionados.