Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Akses data anonim memungkinkan aplikasi Fabric mengekspos operasi data yang dipilih kepada pengguna yang belum log in. Anda mengendalikan akses ini di tingkat tenant Fabric dan di setiap model data. Akses anonim adalah opsi otorisasi, bukan pengganti autentikasi. Aplikasi yang sama dapat memberikan akses publik ke beberapa entitas sekaligus mengharuskan pengguna masuk untuk mengakses entitas atau operasi lain.
Important
Siapa pun yang dapat mengakses URL aplikasi dapat menggunakan operasi yang ditugaskan pada peran anonymous. Jangan mengungkapkan data pribadi, rahasia, keuangan, atau internal bisnis melalui peran ini.
Skenario penggunaan
Pertimbangkan akses data anonim ketika sebuah aplikasi harus menyediakan fungsi terbatas tanpa keharusan untuk masuk.
| Scenario | Contoh akses | Cakupan yang direkomendasikan |
|---|---|---|
| Data referensi publik | Lihat katalog produk, jadwal, atau dataset publik | read |
| Pengumpulan umpan balik | Kirim komentar atau tanggapan survei | create |
Akses anonim tidak tepat ketika sebuah aplikasi harus mengidentifikasi pengguna, menegakkan kepemilikan, atau memberikan akses berdasarkan klaim identitas. Gunakan peran terautentikasi untuk skenario tersebut.
Cara kerja akses anonim
Akses data anonim menggunakan kontrol independen:
- Pengaturan tenant: Administrator tenant Fabric memberikan akses data anonim untuk organisasi atau kelompok keamanan terpilih.
-
Peran model data: Sebuah entitas menggunakan peran
anonymousuntuk mendefinisikan operasi yang dapat dilakukan oleh pengguna yang tidak terautentikasi.
Pengaturan tenant adalah batas di seluruh organisasi. Pengaturan aplikasi memungkinkan permintaan anonim mengakses layanan data aplikasi. Peran entitas menentukan data dan operasi mana yang dapat diakses permintaan tersebut. Mengaktifkan hanya satu atau dua kontrol ini tidak memberikan akses anonim.
Aktifkan pengaturan tenant
Administrator tenant Fabric harus mengaktifkan akses data anonim sebelum pengembang aplikasi dapat menggunakannya. Pengaturan dinonaktifkan secara default.
Masuk ke portal admin Fabric.
Pilih pengaturan penyewa.
Di bawah aplikasi Fabric (pratinjau), temukan Akses data anonim.
Atur tombol ke Diaktifkan.
Terapkan pengaturan ini ke seluruh organisasi atau ke grup keamanan tertentu.
Pilih Terapkan.
Perubahan mungkin membutuhkan beberapa menit untuk mulai terasa. Saat Anda membatasi pengaturan hanya ke grup keamanan, pastikan bahwa pengembang aplikasi atau pemilik aplikasi termasuk dalam grup yang diizinkan.
Definisikan akses anonim dalam model data
Gunakan @role dekorator pada sebuah entitas dan tentukan anonymous sebagai nama peran. Argumen kedua mendefinisikan operasi data yang diizinkan: create, read, update, atau delete.
Parameters
| Parameter | Tipe | Deskripsi |
|---|---|---|
roleName |
string |
Nama peran, seperti authenticated atau peran aplikasi kustom |
actions |
string \| string[] |
Tindakan tunggal atau larik: create, read, update, delete, atau * untuk semua |
options |
object |
Objek opsional dengan properti check, include, dan exclude |
Contoh berikut memungkinkan pengguna yang tidak terautentikasi untuk membaca pengumuman publik:
Tambahkan entitas-entitas ini ke layanan data yang dikonfigurasi di rayfin/rayfin.yml. Di Universal App default, aktifkan Data dan gunakan packages/data/src/, dengan kontrak yang cocok di packages/shared/src/. Template flat bisa digunakan sebagai gantinya rayfin/data/. Lihat Menentukan model data.
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'read')
export class Announcement {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@text({ max: 4000 }) content!: string;
}
Peran ini anonymous tidak menggunakan klaim identitas karena tidak ada identitas yang masuk yang tersedia. Tentukan set operasi tersempit yang mendukung skenario Anda.
Izinkan pengguna mengirimkan data
Untuk formulir umpan balik, berikan create akses tanpa memberikan read, update, atau delete akses:
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'create')
export class Feedback {
@uuid() id!: string;
@text({ max: 2000 }) comment!: string;
}
Model ini memungkinkan pengguna mengirimkan umpan balik, tetapi tidak memungkinkan mereka melihat atau mengubah entri yang dikirimkan.
Izinkan beberapa operasi
Pass array ketika sebuah skenario memerlukan lebih dari satu operasi:
import { boolean, entity, role, text, uuid } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', ['create', 'read', 'update'])
export class SharedTodo {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@boolean({ default: false }) completed!: boolean;
}
Siapa pun yang memiliki akses ke aplikasi ini dapat membuat, melihat, dan memperbarui setiap tugas yang dibagikan. Mereka tidak bisa menghapus todo karena delete tidak termasuk. Gunakan izin luas seperti ini hanya untuk data publik atau sementara di mana pengguna diharapkan berbagi akses.
Gabungkan peran anonim dan terautentikasi
Terapkan kedua peran pada entitas ketika pengguna publik dan pengguna yang masuk memerlukan izin yang berbeda. Misalnya, siapa pun dapat membaca postingan blog, tetapi hanya pemilik yang masuk yang dapat mengubahnya:
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({ max: 200 }) title!: string;
@text({ max: 4000 }) content!: string;
@text({ max: 255 }) createdBy!: string;
}
Peran anonim memungkinkan pembacaan publik tanpa mengevaluasi klaim identitas. Peran terautentikasi menggunakan klaim pengguna yang masuk untuk membatasi perubahan pada konten yang dimiliki pengguna.
Panduan keamanan
- Berikan akses minimum yang diperlukan. Gunakan
readataucreatesaja. Berikanupdateataudeletehanya jika alur kerja publik membutuhkannya. - Batasi kolom yang terekspos. Gunakan opsi
includeatauexcludeuntuk mencegah akses ke kolom yang tidak dibutuhkan pengguna anonim. Untuk informasi lebih lanjut, lihat Definisikan izin data. - Jangan bergantung pada antarmuka aplikasi untuk perlindungan. Izin harus didefinisikan pada model data karena pemanggil dapat mengirim permintaan tanpa menggunakan frontend Anda.
- Antisipasi input tidak tepercaya. Validasi data yang dikirimkan dan buat rancangan untuk operasi tulis publik terhadap spam, otomatisasi, dan lalu lintas tak terduga.
- Tes operasi yang ditolak. Konfirmasi bahwa operasi yang tidak disertakan dalam peran ditolak untuk pengguna tanpa sesi.
Nonaktifkan akses anonim
Untuk menghapus akses publik dari aplikasi:
- Hapus peran
anonymousdari setiap model data. - Sebarkan ulang aplikasi dengan menjalankan
npx rayfin up.
Administrator tenant juga dapat menonaktifkan pengaturan tenant untuk memblokir akses data anonim untuk semua aplikasi dalam tenant dan membatasi akses ke grup keamanan yang dipilih.