익명 데이터 접근은 Fabric 앱이 로그인하지 않은 사용자에게 선택된 데이터 작업을 노출할 수 있게 해줍니다. 이 접근은 Fabric 테넌트 레벨과 각 데이터 모델에서 제어됩니다. 익명 접근은 인증 대신 승인 옵션이 아닙니다. 같은 앱이 일부 엔티티에 대한 공개 접근을 제공하는 반면, 다른 엔티티나 운영에는 사용자가 로그인해야 할 수도 있습니다.
Important
앱 URL에 접근할 수 있는 누구나 역할에 anonymous 할당된 작업을 사용할 수 있습니다. 이 역할을 통해 개인적, 기밀, 재무 또는 내부 비즈니스 데이터를 노출하지 마세요.
사용 사례
로그인 의무 없이 제한된 기능을 제공해야 할 때 익명 데이터 접근을 고려해 보세요.
| 시나리오 | 접근성 예시 | 권장 범위 |
|---|---|---|
| 공공 참고 자료 | 제품 카탈로그, 일정표 또는 공개 데이터셋 보기 | read |
| 피드백 컬렉션 | 의견 제출이나 설문 응답 | create |
앱이 사용자를 식별하거나 소유권을 강제하거나 신원 주장에 근거해 접근 권한을 제공해야 할 때 익명 접근은 적절하지 않습니다. 그런 상황에서는 인증된 역할을 사용하세요.
익명 접근이 어떻게 작동하는지에 대해
익명 데이터 접근은 독립적인 통제 장치를 사용합니다:
- 임차인 환경: Fabric 테넌트 관리자는 조직 또는 선택된 보안 그룹에 익명 데이터 접근 권한을 부여합니다.
-
데이터 모델 역할: 엔터티는 이 역할을 사용
anonymous해 인증되지 않은 사용자가 수행할 수 있는 작업을 정의합니다.
임차인 설정은 조직 전체의 경계입니다. 앱 설정은 익명 요청이 앱의 데이터 서비스에 도달할 수 있도록 허용합니다. 엔터티 역할은 해당 요청이 접근할 수 있는 데이터와 작업을 결정합니다. 이 중 한두 가지 컨트롤만 활성화한다고 해서 익명 접근이 보장되는 것은 아닙니다.
테넌트 설정을 활성화하세요
Fabric 테넌트 관리자는 앱 개발자가 익명 데이터 접근을 활성화해야 합니다. 이 설정은 기본적으로 사용하지 않도록 설정됩니다.
패브릭 관리 포털에 로그인합니다.
테넌트 설정을 선택합니다.
Fabric 앱(미리보기)에서 익명 데이터 접근 권한을 찾으세요.
토글을 사용으로 설정합니다.
이 설정을 조직 전체나 특정 보안 그룹에 적용하세요.
적용을 선택합니다.
변경 사항은 효과가 나타나기까지 몇 분이 걸릴 수 있습니다. 설정을 보안 그룹으로 제한할 때는 앱 개발자나 소유자가 허용된 그룹에 포함되어 있는지 확인하세요.
데이터 모델에서 익명 접근을 정의하세요
엔터티에 데코레이터를 @role 사용하고 역할 이름으로 지정 anonymous 하세요. 두 번째 인수는 허용되는 데이터 연산을 정의합니다: create, read, update, 또는 delete.
Parameters
| 매개 변수 | 유형 | 설명 |
|---|---|---|
roleName |
string |
역할 이름(예: authenticated 사용자 지정 애플리케이션 역할) |
actions |
string \| string[] |
단일 작업 또는 배열: create, read, update또는 delete* 모두 |
options |
object |
check, include 및 exclude 속성을 가진 선택적 객체 |
다음 예시는 인증되지 않은 사용자가 공공 광고를 읽을 수 있게 합니다:
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에만 의존하지 마세요. 호출자가 프론트엔드를 사용하지 않고도 요청을 보낼 수 있기 때문에 데이터 모델에 권한을 정의해야 합니다.
- 신뢰할 수 없는 입력을 대비하세요. 제출된 데이터를 검증하고 스팸, 자동화, 예상치 못한 트래픽에 대비한 공개 쓰기 작업을 설계합니다.
- 검사 거부 수술. 역할에서 빠진 작업이 세션이 없는 사용자에게는 거부되는지 확인하세요.
익명 접근 금지
앱에서 공개 접근 권한을 제거하려면:
- 각 데이터 모델에서 역할을
anonymous제거하세요. - .을 실행
npx rayfin up하여 앱을 재배포하세요.
테넌트 관리자는 또한 테넌트 내 모든 앱의 익명 데이터 접근을 차단하고 선택한 보안 그룹에 대한 접근을 제한하는 테넌트 설정을 비활성화할 수도 있습니다.