การเข้าถึงข้อมูลแบบไม่ระบุตัวตนในแอป Fabric

การเข้าถึงข้อมูลแบบไม่ระบุตัวตนช่วยให้แอป Fabric เปิดเผยการดําเนินการข้อมูลที่เลือกไปยังผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ คุณควบคุมการเข้าถึงนี้ได้ที่ระดับ Fabric tenant และในแต่ละโมเดลข้อมูล การเข้าถึงแบบไม่ระบุตัวตนเป็นตัวเลือกการอนุญาต ไม่ใช่การทดแทนการยืนยันตัวตน แอปเดียวกันนี้สามารถให้การเข้าถึงสาธารณะแก่บางเอนทิตีได้ ในขณะที่ผู้ใช้ต้องลงชื่อเข้าใช้สําหรับเอนทิตีหรือการดําเนินการอื่น ๆ

Important

ใครก็ตามที่สามารถเข้าถึง URL ของแอปได้ สามารถใช้การดําเนินการที่กําหนดให้กับบทบาทนั้น anonymous ได้ อย่าเปิดเผยข้อมูลส่วนตัว ข้อมูลลับ ข้อมูลทางการเงิน หรือข้อมูลภายในธุรกิจผ่านบทบาทนี้

กรณีการใช้งาน

พิจารณาการเข้าถึงข้อมูลแบบไม่ระบุตัวตนเมื่อแอปต้องมีฟังก์ชันจํากัดโดยไม่ต้องลงชื่อเข้าใช้

สถานการณ์สมมติ ตัวอย่างการเข้าถึง ขอบเขตที่แนะนํา
ข้อมูลอ้างอิงสาธารณะ ดูแคตตาล็อกสินค้า ตารางเวลา หรือชุดข้อมูลสาธารณะ read
การเก็บรวบรวมข้อเสนอแนะ ส่งความคิดเห็นหรือคําตอบแบบสํารวจ create

การเข้าถึงแบบไม่ระบุตัวตนไม่เหมาะสมเมื่อแอปต้องระบุตัวตนผู้ใช้ บังคับใช้สิทธิ์ความเป็นเจ้าของ หรือให้สิทธิ์การเข้าถึงตามการอ้างสิทธิ์ตัวตน ใช้บทบาทที่ผ่านการตรวจสอบสิทธิ์สําหรับสถานการณ์เหล่านั้น

วิธีการเข้าถึงแบบไม่ระบุตัวตน

การเข้าถึงข้อมูลแบบไม่ระบุตัวตนใช้การควบคุมอิสระ:

  1. การตั้งค่าผู้เช่า: ผู้ดูแลระบบ Fabric tenant จะให้สิทธิ์การเข้าถึงข้อมูลแบบไม่ระบุตัวตนสําหรับองค์กรหรือกลุ่มความปลอดภัยที่เลือก
  2. บทบาทของแบบจําลองข้อมูล: เอนทิตีใช้บทบาทนี้ anonymous เพื่อกําหนดการดําเนินการที่ผู้ใช้ที่ยังไม่ได้รับการยืนยันตัวตนสามารถทําได้

การตั้งค่า tenant คือขอบเขตทั่วทั้งองค์กร การตั้งค่าแอปอนุญาตให้คําขอแบบไม่ระบุตัวตนเข้าถึงบริการข้อมูลของแอปได้ บทบาทของนิติบุคคลจะกําหนดว่าคําขอเหล่านั้นสามารถเข้าถึงข้อมูลและการดําเนินการใดบ้าง การเปิดใช้งานเพียงหนึ่งหรือสองตัวควบคุมเหล่านี้จะไม่ให้สิทธิ์การเข้าถึงแบบไม่ระบุตัวตน

เปิดใช้งานการตั้งค่าผู้เช่า

ผู้ดูแล Fabric tenant ต้องเปิดใช้งานการเข้าถึงข้อมูลแบบไม่ระบุตัวตนก่อนที่นักพัฒนาแอปจะสามารถใช้งานได้ การตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น

  1. ลงชื่อเข้าใช้พอร์ทัลผู้ดูแลระบบ Fabric

  2. เลือก การตั้งค่าผู้เช่า

  3. ภายใต้แอป Fabric (ตัวอย่าง) ให้ค้นหาการเข้าถึงข้อมูลแบบไม่ระบุตัวตน

    ภาพหน้าจอของการตั้งค่าการเข้าถึงข้อมูลแบบไม่ระบุตัวตนในพอร์ทัลผู้ดูแลระบบ Fabric

  4. ตั้งค่าการสลับเป็น เปิดใช้งานแล้ว

  5. ใช้การตั้งค่านี้กับทั้งองค์กรหรือกลุ่มความปลอดภัยเฉพาะ

  6. เลือก นำไปใช้

การเปลี่ยนแปลงอาจใช้เวลาสักครู่กว่าจะเริ่มมีผล เมื่อคุณจํากัดการตั้งค่าไว้ที่กลุ่มความปลอดภัย ให้ตรวจสอบว่านักพัฒนาแอปหรือเจ้าของแอปอยู่ในกลุ่มที่ได้รับอนุญาตหรือไม่

กําหนดการเข้าถึงแบบไม่ระบุตัวตนในโมเดลข้อมูล

ใช้ @role ตัวตกแต่งบนเอนทิตีและระบุ anonymous เป็นชื่อบทบาท อาร์กิวเมนต์ที่สองกําหนดการดําเนินการข้อมูลที่อนุญาต: create, read, update, หรือ delete.

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
roleName string ชื่อบทบาท เช่น authenticated หรือบทบาทแอปพลิเคชันแบบกําหนดเอง
actions string \| string[] การกระทําหรืออาร์เรย์เดี่ยว: create, , readupdate, 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 ไม่ใช้การอ้างสิทธิ์ตัวตนเพราะไม่มีตัวตนที่ลงชื่อเข้าใช้แล้ว กําหนดชุดการดําเนินการที่แคบที่สุดที่สนับสนุนสถานการณ์ของคุณ

อนุญาตให้ผู้ใช้ส่งข้อมูล

สําหรับแบบฟอร์มข้อเสนอแนะ ให้สิทธิ์ create เข้าถึงโดยไม่ต้องอนุญาต read, 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.

ผู้ดูแลระบบ Tenant ยังสามารถปิดการตั้งค่า Tenant เพื่อบล็อกการเข้าถึงข้อมูลแบบไม่ระบุตัวตนสําหรับแอปทั้งหมดภายใน Tenant และจํากัดการเข้าถึงเฉพาะกลุ่มความปลอดภัยที่เลือกไว้