Aracılığıyla paylaş


RLS ile rapor ekleme

UYGULANANLAR: Uygulama verilerin sahibidir Veriler Kullanıcıya aittir

Bu makale, RLS kullanan Power BI içeriğinin veri uygulamasına sahip standart bir Power BI uygulamasına nasıl eklendiği açıklanmaktadır.

Önkoşullar

RLS'yi ayarlama hakkında ayrıntılı bir açıklama için bkz. Power BI ile satır düzeyi güvenlik (RLS).

RLS rollerinizi tanımlarken, kullandığınız DAX ifadesinin RLS modelinin statik mi yoksa dinamik mi olduğunu belirlediğini unutmayın.

Statik ve dinamik güvenlik ne zaman kullanılır?

Statik güvenlik , her rolü tanımlamak için DAX filtresinde sabit bir değer kullanır. Çok sayıda kullanıcı veya kuruluş söz konusu olduğunda bunu uygulamak kolaydır ancak bakımını yapmak zordur.

Statik güvenlik, her departmanın farklı verilere erişmesi gereken bir veya birkaç büyük müşteriye hizmet veren bir ISV için en iyi sonucu verir.

Dinamik güvenlik , rolleri tanımlamak için bir DAX işlevi (username() veya userprincipalname()) kullanır. Dinamik güvenlik daha fazla esneklik sağlar ve verilerinizi daha az rol ve daha az bakım kullanarak yönetmenize olanak tanır.

Statik güvenlik

Statik rollerle, ekleme belirteci oluşturduğunuzda rolü Power BI'a geçirirsiniz ve kullanıcı bu role göre verileri görür. Statik güvenlik rolleri oluşturmak için DAX filtresine sabit bir değer girin.

Örneğin, Doğu ABD rolünü şu şekilde tanımlayabilirsiniz:[Region] = "East"

Statik R L S rolünün nasıl tanımlanacağı gösteren ekran görüntüsü.

Uygulamanızın kullanıcısı olduğunu düşünelim john@contoso.com . John'a Doğu ABD rolündeki verilere erişim vermek istiyorsunuz. için bir rapor eklemek için john@contoso.comDoğu ABD rolünü kullanarak bir ekleme belirteci oluşturun. Elde edilen veriler [Region] = "East" için filtrelenir.

Not etmek

Ekleme belirtecini oluştururken bir kullanıcı adı sağlamanız gerekir, ancak kullanıcı adı herhangi bir dize olabilir. Statik rollerin kullanıcı adına bağımlı olmayan sabit bir değeri vardır, bu nedenle ISV kullanıcının rolünü belirleyip ekleme belirtecine geçirdikten sonra, hangi kullanıcı adının geçirildiğine bakılmaksızın veriler söz konusu role göre filtrelenmiş olur.

Dinamik güvenlik

Dinamik güvenlik, rolü tanımlamak için DAX işlevini (username() veya userprincipalname()) kullanır.

Kullanıcının veri sahibi olduğu senaryosunda, RLS modeli verileri belirli bir kullanıcının rollerine göre otomatik olarak filtreler. Verilerin sahibi uygulama olduğunda Power BI, ISV müşterilerinin kullanıcı adlarını bilmez, bu nedenle işlevi kullanarak username() verileri dinamik olarak filtreleyebilirsiniz.

Username() işlevini kullanarak Power BI Desktop'ta bir rol oluşturun. Örneğin, CountryDynamic adlı bir rol oluşturabilir ve bunu tanımlayabilirsiniz[CountryRegionCode] = username()

Dinamik R L S rolünün nasıl oluşturulacağını gösteren ekran görüntüsü.

Kullanıcınıza Fransa'nın jane@contoso.comverilerine erişim vermek istediğinizi varsayalım. jane@contoso.com için bir ekleme belirteci oluşturduğunuzda, CountryDynamic rolünde kullanıcı adı olarak France dizesini geçirirsiniz. Verileriniz [CountryRegionCode] = Fransa'ya göre filtrelenmiştir.

{
    "accessLevel": "View",
    "identities": [
        {
            "username": "France",
            "roles": [ "CountryDynamic"],
            "datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
        }
    ]
}

Bu senaryoda dinamik güvenlik kullanırken, tüm bölgeler için yalnızca bir role ihtiyacınız vardır. Geçerli kimlik olarak bölge adı kullanılır.

Gömme belirteci oluştur

Raporu uygulamanıza eklemeye hazır olduğunuzda bir ekleme belirteci oluşturmanız gerekir. Ekleme Belirteci API'sini kullanarak belirteç oluşturmak için aşağıdaki bilgileri API'ye geçirin.

  • username (gerekli) – Roller dinamikse, filtre olarak kullanıcı adı dizesi kullanılır. Statik roller için kullanıcı adı RLS'yi etkilemez ve herhangi bir dize olabilir. Yalnızca tek bir kullanıcı adı listelenebilir.
  • roles (gerekli) – Satır Düzeyi Güvenlik kuralları uygulanırken kullanılan roller. Birden fazla rol geçirilirse, bunlar dize dizisi olarak geçirilmelidir.
  • dataset (gerekli) – Eklediğiniz öğe için geçerli olan veri kümesi.

Artık raporu uygulamanıza ekleyebilirsiniz. Rapor, uygulanan RLS'ye göre verileri filtreler.

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
    {
        PowerBIClient pbiClient = this.GetPowerBIClient();

       // Defines the user identity and roles.
        var rlsIdentity = new EffectiveIdentity(
            username: "France",
            roles: new List<string>{ "CountryDynamic" },
            datasets: datasetIds.Select(id => id.ToString()).ToList());
        );
       
        // Create a request for getting an embed token for the rls identity defined above
        var tokenRequest = new GenerateTokenRequestV2(
            reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
            datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
            targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
            identities: new List<EffectiveIdentity> { rlsIdentity }
        );

        // Generate an embed token
        var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

        return embedToken;
    }

Dikkat edilecekler ve sınırlamalar

  • Kurulumunuza bağlı olarak, ekleme belirteci oluşturmadan önce birkaç adım gerçekleştirmeniz gerekebilir. Farklı senaryolar hakkında bilgi için bkz . Güvenlik özelliklerini kullanan bir rapor ekleme.
  • Ekleme belirtecini oluşturan kullanıcının her iki çalışma alanında da (veri kümesi çalışma alanı ve rapor çalışma alanı) üye veya yönetici olması gerekir.
  • Ekleme belirtecini oluştururken bir kullanıcı adı ve rol sağlamanız gerekir. Bunu yapmazsanız, belirtecin hizmet sorumlusu veya ana kullanıcı tarafından oluşturularak oluşturulmama durumuna bağlı olarak aşağıdaki olaylardan biri gerçekleşir:
    • Service principal için belirteç oluşturma başarısız oluyor.
    • Ana kullanıcı için belirteç oluşturma başarılı olur ancak veriler filtrelenmez (tüm veriler döndürülür).

Diğer Sorularınız mı var? Power BI Topluluğu deneyin.