Fabric uygulamalarında anonim veri erişimi

Anonim veri erişimi, bir Fabric uygulamasının seçilen veri işlemlerini giriş yapmamış kullanıcılara erişime sunmasına olanak tanır. Bu erişimi Fabric kiracı seviyesinde ve her veri modelinde kontrol ediyorsunuz. Anonim erişim, kimlik doğrulamanın yerine geçmez, bir yetkilendirme seçeneğidir. Aynı uygulama, bazı varlıklara halka açık erişim sağlarken, kullanıcıların diğer varlıklar veya operasyonlar için giriş yapmasını gerektirebilir.

Important

Uygulama URL'sine ulaşabilen herkes, anonymous rolüne atanan işlemleri kullanabilir. Bu rol aracılığıyla kişisel, gizli, finansal veya iç iş verilerini açığa çıkarmayın.

Kullanım örnekleri

Bir uygulamanın giriş şartı olmadan sınırlı işlevsellik sağlaması gerektiğinde anonim erişimi düşünün.

Scenario Örnek erişim Önerilen kapsam
Kamuya açık referans verileri Ürün kataloglarını, programları veya kamuya açık veri setlerini görüntüleyin read
Geri bildirim toplama Yorum veya anket yanıtları gönderin create

Bir uygulamanın kullanıcıyı tanımlaması, sahipliği doğrulaması veya kimlik taleplerine dayalı erişim sağlaması gerektiğinde anonim erişim uygun değildir. Bu senaryolar için kimliği doğrulanmış roller kullanın.

Anonim erişim nasıl çalışır

Anonim veri erişimi bağımsız kontroller kullanır:

  1. Kiracı ayarı: Bir Fabric kiracı yöneticisi, organizasyon veya seçilmiş güvenlik grupları için anonim veri erişimi tanır.
  2. Veri modeli rolü: Bir varlık, kimlik doğrulaması yapılmamış kullanıcıların gerçekleştirebileceği işlemleri tanımlamak için anonymous rolünü kullanır.

Tenant ayarı, kuruluş genelindeki sınırdır. Uygulama ayarı, anonim taleplerin uygulamanın veri servisine ulaşmasına olanak tanır. Varlık rolü, bu taleplerin hangi veri ve işlemlere erişebileceğini belirler. Bu kontrollerden sadece birini veya ikisini etkinleştirmek anonim erişim sağlamaz.

Tenant ayarını etkinleştir

Bir Fabric tenant yöneticisi, uygulama geliştiricilerinin kullanabilmesi için anonim veri erişimini etkinleştirmelidir. Ayar varsayılan olarak devre dışıdır.

  1. Fabric yönetim portalında oturum açın.

  2. Kiracı ayarlarını seç.

  3. Fabric apps (preview) bölümünde Anonim veri erişimini bulabilirsiniz.

    Fabric admin portalındaki Anonim veri erişim ayarının ekran görüntüsü.

  4. Geçiş düğmesini Etkin olarak ayarlayın.

  5. Ayarı tüm organizasyona veya belirli güvenlik gruplarına uygulayın.

  6. seçin, sonra daUygula'yı seçin.

Değişikliklerin etkili olması birkaç dakika sürebilir. Ayarı güvenlik gruplarıyla sınırladığınızda, uygulama geliştiricisinin veya uygulama sahibinin izin verilen bir gruba dahil olduğunu doğrulayın.

Bir veri modelinde anonim erişimi tanımlayın

@role dekoratörünü bir varlıkta kullanın ve rol adı olarak anonymous belirtin. İkinci argüman izin verilen veri işlemlerini tanımlar: create, read, update, veya delete.

Parameters

Parameter Türü Açıklama
roleName string Veya özel uygulama rolü gibi authenticated rol adı
actions string \| string[] Tek eylem veya dizi: create, read, update, delete, veya * tümü için
options object , checkve include özelliklerine sahip excludeisteğe bağlı nesne

Aşağıdaki örnek, kimlik doğrulaması yapılmamış kullanıcıların kamuya açık duyuruları okumasına olanak tanır:

Bu varlıkları rayfin/rayfin.yml içinde yapılandırılmış veri servisine ekleyin. Varsayılan Evrensel Uygulama'da, Veri'yi etkinleştirin ve packages/shared/src/ içindeki eşleşen sözleşmelerle packages/data/src/ kullanın. Bunun yerine düz bir şablon kullanılabilir rayfin/data/ . Bkz. Veri modellerini tanımlama.

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;
}

anonymous rolü, oturum açmış bir kimlik olmadığından kimlik doğrulamalarını kullanmaz. Senaryonuzu destekleyen en dar işlem setini tanımlayın.

Kullanıcıların veri göndermesine izin verin

Geri bildirim formu için, read, update veya delete erişimi vermeden create erişimi verin:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'create')
export class Feedback {
  @uuid() id!: string;
  @text({ max: 2000 }) comment!: string;
}

Bu model, kullanıcıların geri bildirim göndermesine izin veriyor, ancak gönderilmiş girdileri görüntüleme veya değiştirme imkânı vermiyor.

Birden fazla operasyona izin ver

Bir senaryo birden fazla işlem gerektiriyorsa bir dizi geçirin:

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;
}

Bu uygulamaya erişimi olan herkes paylaşılan her işi oluşturabilir, görüntüleyebilir ve güncelleyebilir. Todos'u silemiyorlar çünkü delete dahil edilmemiş. Bu tür geniş izinleri yalnızca kullanıcıların erişimi paylaşması beklenen halka açık veya geçici veriler için kullanın.

Anonim ve kimliği doğrulanmış rolleri birleştirin

Genel ve giriş yapmış kullanıcılar farklı izinler gerektirdiğinde her iki rolü de bir varlığa uygulayın. Örneğin, herkes bir blog yazısını okuyabilir, ancak yalnızca oturum açmış sahibi bunu değiştirebilir:

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;
}

Anonim rol, kimlik iddialarını değerlendirmeden halka açık okumalara izin verir. Doğrulanmış rol, giriş yapan kullanıcının claim’lerini kullanarak kullanıcının sahip olduğu içeriklerdeki değişiklikleri sınırlar.

Güvenlik kılavuzu

  • Gerekli olan minimum erişimi verin. Yalnızca read veya create tercih edin. update veya delete yalnızca genel iş akışı gerektirdiğinde verin.
  • Görünen alanları sınırlayın. Anonim kullanıcıların ihtiyaç duymadığı alanlara erişimi engellemek için include veya exclude seçeneklerini kullanın. Daha fazla bilgi için bkz. Veri izinlerini tanımla.
  • Koruma için uygulama arayüzüne güvenmeyin. İzinler, veri modelinde tanımlanmalıdır çünkü arayanlar ön yüzünüzü kullanmadan istek gönderebilir.
  • Güvenilmeyen girdiler için plan yapın. Gönderilen verileri doğrulamak ve spam, otomasyon ve beklenmedik trafiğe karşı herkese açık yazma işlemlerini korumak.
  • Reddedilen test işlemleri Rolde yer almayan işlemlerin, oturumu olmayan kullanıcılar için reddedildiğini doğrulayın.

Anonim erişimi devre dışı bırak

Bir uygulamadaki genel erişimi kaldırmak için:

  1. Her veri modelinden anonymous rolünü çıkarın.
  2. Uygulamayı npx rayfin up çalıştırarak yeniden dağıtın.

Bir kiracı yöneticisi, kiracı ayarını devre dışı bırakarak kiracı içindeki tüm uygulamalar için anonim veri erişimini engelleyebilir ve erişimi seçili güvenlik gruplarıyla sınırlayabilir.