Acesso anónimo a dados nas aplicações Fabric

O acesso anónimo a dados permite que uma aplicação Fabric expõe operações de dados selecionadas a utilizadores que não estão logados. Controla este acesso ao 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. A mesma aplicação pode fornecer acesso público a algumas entidades, exigindo que os utilizadores iniciem sessão noutras entidades ou operações.

Important

Qualquer pessoa que consiga aceder à URL da aplicação pode usar as operações atribuídas à anonymous função. Não exponha dados pessoais, confidenciais, financeiros ou internos do negócio através desta função.

Casos de uso

Considere o acesso anónimo a dados quando uma aplicação tem de fornecer funcionalidades limitadas sem necessidade de iniciar sessão.

Scenario Exemplo de acesso Âmbito recomendado
Dados públicos de referência Consulte catálogos de produtos, calendários ou conjuntos de dados públicos read
Recolha de feedback Submeta comentários ou respostas a inquéritos create

O acesso anónimo não é adequado quando uma aplicação tem de identificar o utilizador, impor a propriedade ou fornecer acesso com base em reivindicações de identidade. Usa papéis autenticados nesses cenários.

Como funciona o acesso anónimo

O acesso anónimo a dados utiliza controlos independentes:

  1. Configuração do inquilino: Um administrador de tenant Fabric concede acesso anónimo a dados à organização ou a grupos de segurança selecionados.
  2. Papel no modelo de dados: Uma entidade usa o anonymous papel para definir as operações que os utilizadores não autenticados podem realizar.

O contexto do inquilino é o limite a nível da organização. A definição da aplicação permite que pedidos anónimos cheguem ao serviço de dados da aplicação. O papel da entidade determina que dados e operações esses pedidos podem acedecer. Ativar apenas um ou dois destes controlos não concede acesso anónimo.

Ativar a definição do inquilino

Um administrador de tenant Fabric deve ativar o acesso anónimo a dados antes que os programadores da aplicação possam utilizá-lo. A definição está desativada por padrão.

  1. Inicie sessão no portal de administração Fabric.

  2. Selecione Definições do inquilino.

  3. Em aplicações Fabric (pré-visualização), encontre acesso a dados anónimos.

    Captura de ecrã da definição de acesso a dados Anónimo no portal de administração do Fabric.

  4. Defina o interruptor para Ativado.

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

  6. Selecione Aplicar.

As alterações podem demorar alguns minutos a fazer efeito. Quando limitar a definição a grupos de segurança, confirme que o programador ou o proprietário da aplicação está incluído num grupo permitido.

Defina acesso anónimo num modelo de dados

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

Parameters

Parameter Tipo Descrição
roleName string O nome da função, como authenticated ou uma função de aplicação personalizada
actions string \| string[] Ação simples ou matriz: create, read, update, delete, ou * para todo
options object Objeto opcional com check, include, e exclude propriedades

O exemplo seguinte permite que utilizadores 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 utiliza reivindicações de identidade porque não existe uma identidade com sessão de registo disponível. Defina o conjunto mais restrito de operações que suporte o seu cenário.

Permitir que os utilizadores submetam 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;
}

Este modelo permite aos utilizadores enviar feedback, mas não permite que vejam ou alterem as entradas submetidas.

Permitir múltiplas operações

Passe um array quando um cenário requer mais do que 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 esta aplicação pode criar, visualizar e atualizar todas as tarefas partilhadas. Não podem apagar tarefas porque delete não está incluído. Use permissões amplas como estas apenas para dados públicos ou temporários, onde se espera que os utilizadores partilhem o acesso.

Combinar papéis anónimos e autenticados

Aplique ambos os papéis a uma entidade quando os utilizadores públicos e os com sessão requerem permissões diferentes. Por exemplo, qualquer pessoa pode ler um artigo de blogue, mas só o proprietário com sessão pode alterá-lo:

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 alegações de identidade. O papel autenticado utiliza as alegações do utilizador iniciado para restringir alterações ao conteúdo que o utilizador possui.

Orientações de segurança

  • Conceda o acesso mínimo exigido. Prefiro read ou create sozinho. Subsídio update ou delete apenas quando o fluxo de trabalho público exigir.
  • Limita os campos expostos. Use include ou exclude opções para impedir o acesso a campos que utilizadores anónimos não precisam. Para mais informações, consulte Definir permissões de dados.
  • Não dependas da interface da aplicação para proteção. As permissões devem ser definidas no modelo de dados porque os chamadores podem enviar pedidos sem usar o seu frontend.
  • Planeia para entradas não confiáveis. Validar os dados submetidos e desenhar operações públicas de escrita para spam, automação e tráfego inesperado.
  • Teste negado operações. Confirme que as operações omitidas do papel são rejeitadas para utilizadores sem sessão.

Desativar o acesso anónimo

Para remover o acesso público de uma aplicação:

  1. Remover o anonymous papel de cada modelo de dados.
  2. Reimplemente a aplicação executando npx rayfin upo arquivo .

Um administrador de tenant pode também desativar a definição de tenant para bloquear o acesso anónimo a dados de todas as aplicações dentro de um tenant e limitar o acesso a grupos de segurança selecionados.