Fabric 앱에서의 익명 데이터 접근

익명 데이터 접근은 Fabric 앱이 로그인하지 않은 사용자에게 선택된 데이터 작업을 노출할 수 있게 해줍니다. 이 접근은 Fabric 테넌트 레벨과 각 데이터 모델에서 제어됩니다. 익명 접근은 인증 대신 승인 옵션이 아닙니다. 같은 앱이 일부 엔티티에 대한 공개 접근을 제공하는 반면, 다른 엔티티나 운영에는 사용자가 로그인해야 할 수도 있습니다.

Important

앱 URL에 접근할 수 있는 누구나 역할에 anonymous 할당된 작업을 사용할 수 있습니다. 이 역할을 통해 개인적, 기밀, 재무 또는 내부 비즈니스 데이터를 노출하지 마세요.

사용 사례

로그인 의무 없이 제한된 기능을 제공해야 할 때 익명 데이터 접근을 고려해 보세요.

시나리오 접근성 예시 권장 범위
공공 참고 자료 제품 카탈로그, 일정표 또는 공개 데이터셋 보기 read
피드백 컬렉션 의견 제출이나 설문 응답 create

앱이 사용자를 식별하거나 소유권을 강제하거나 신원 주장에 근거해 접근 권한을 제공해야 할 때 익명 접근은 적절하지 않습니다. 그런 상황에서는 인증된 역할을 사용하세요.

익명 접근이 어떻게 작동하는지에 대해

익명 데이터 접근은 독립적인 통제 장치를 사용합니다:

  1. 임차인 환경: Fabric 테넌트 관리자는 조직 또는 선택된 보안 그룹에 익명 데이터 접근 권한을 부여합니다.
  2. 데이터 모델 역할: 엔터티는 이 역할을 사용 anonymous 해 인증되지 않은 사용자가 수행할 수 있는 작업을 정의합니다.

임차인 설정은 조직 전체의 경계입니다. 앱 설정은 익명 요청이 앱의 데이터 서비스에 도달할 수 있도록 허용합니다. 엔터티 역할은 해당 요청이 접근할 수 있는 데이터와 작업을 결정합니다. 이 중 한두 가지 컨트롤만 활성화한다고 해서 익명 접근이 보장되는 것은 아닙니다.

테넌트 설정을 활성화하세요

Fabric 테넌트 관리자는 앱 개발자가 익명 데이터 접근을 활성화해야 합니다. 이 설정은 기본적으로 사용하지 않도록 설정됩니다.

  1. 패브릭 관리 포털에 로그인합니다.

  2. 테넌트 설정을 선택합니다.

  3. Fabric 앱(미리보기)에서 익명 데이터 접근 권한을 찾으세요.

    Fabric 관리자 포털의 익명 데이터 접근 설정 스크린샷입니다.

  4. 토글을 사용으로 설정합니다.

  5. 이 설정을 조직 전체나 특정 보안 그룹에 적용하세요.

  6. 적용을 선택합니다.

변경 사항은 효과가 나타나기까지 몇 분이 걸릴 수 있습니다. 설정을 보안 그룹으로 제한할 때는 앱 개발자나 소유자가 허용된 그룹에 포함되어 있는지 확인하세요.

데이터 모델에서 익명 접근을 정의하세요

엔터티에 데코레이터를 @role 사용하고 역할 이름으로 지정 anonymous 하세요. 두 번째 인수는 허용되는 데이터 연산을 정의합니다: create, read, update, 또는 delete.

Parameters

매개 변수 유형 설명
roleName string 역할 이름(예: authenticated 사용자 지정 애플리케이션 역할)
actions string \| string[] 단일 작업 또는 배열: create, read, update또는 delete* 모두
options object check, includeexclude 속성을 가진 선택적 객체

다음 예시는 인증되지 않은 사용자가 공공 광고를 읽을 수 있게 합니다:

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 이 역할은 로그인된 신원이 없기 때문에 신원 주장을 사용하지 않습니다. 시나리오를 지원하는 가장 좁은 연산 집합을 정의하세요.

사용자가 데이터를 제출할 수 있도록 허용합니다

피드백 양식의 경우, createread또는 접근 권한을 부여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;
}

이 앱에 접근할 수 있는 누구나 공유된 모든 할 일을 생성, 조회, 업데이트할 수 있습니다. Todo가 포함되어 있지 않기 때문에 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 옵션. 자세한 내용은 데이터 권한 정의를 참조하세요.
  • 앱 UI에만 의존하지 마세요. 호출자가 프론트엔드를 사용하지 않고도 요청을 보낼 수 있기 때문에 데이터 모델에 권한을 정의해야 합니다.
  • 신뢰할 수 없는 입력을 대비하세요. 제출된 데이터를 검증하고 스팸, 자동화, 예상치 못한 트래픽에 대비한 공개 쓰기 작업을 설계합니다.
  • 검사 거부 수술. 역할에서 빠진 작업이 세션이 없는 사용자에게는 거부되는지 확인하세요.

익명 접근 금지

앱에서 공개 접근 권한을 제거하려면:

  1. 각 데이터 모델에서 역할을 anonymous 제거하세요.
  2. .을 실행 npx rayfin up하여 앱을 재배포하세요.

테넌트 관리자는 또한 테넌트 내 모든 앱의 익명 데이터 접근을 차단하고 선택한 보안 그룹에 대한 접근을 제한하는 테넌트 설정을 비활성화할 수도 있습니다.