Jaa


Raportin upottaminen rivitason suojauksen avulla

KOSKEE: Sovellus omistaa tiedot Käyttäjä omistaa tiedot

Tässä artikkelissa kerrotaan, miten voit upottaa rivitason suojausta käyttävän Power BI -sisällön vakiomuotoiseen Power BI -sovellus omistaa tiedot -sovellukseen.

Edellytykset

Tarkempia tietoja rivitason suojauksen määrittämisestä on artikkelissa Rivitason suojaus (RLS) Power BI:ssä.

Kun määrität RLS-rooleja, pidä mielessä, että käyttämäsi DAX-lauseke määrittää, onko RLS-malli staattinen vai dynaaminen.

Milloin staattista ja dynaamista suojausta kannattaa käyttää?

Staattinen suojaus käyttää kiinteää arvoa DAX-suodattimessa kunkin roolin määrittämiseen. Se on helppo ottaa käyttöön, mutta sen ylläpito on vaikeaa, kun mukana on paljon käyttäjiä tai organisaatioita.

Staattinen suojaus toimii parhaiten isv-ohjelmistotoimittajalle, joka palvelee yhtä tai muutamaa suurta asiakasta, jolloin kunkin osaston on käytettävä eri tietoja.

Dynaaminen suojaus käyttää roolien määrittämiseen DAX-funktiota (username() tai userprincipalname()). Dynaaminen suojaus on joustavampi tapa hallita tietoja vähemmän rooleja käyttämällä vähemmän ja vähemmän ylläpitoa.

Staattinen suojaus

Staattisilla rooleilla rooli välitetään Power BI:hin, kun luot upotustunnuksen, ja käyttäjä näkee kyseisen roolin mukaiset tiedot. Jos haluat luoda staattisia käyttöoikeusrooleja, anna kiinteä arvo DAX-suodattimeen.

Voit esimerkiksi määrittää Itä-Yhdysvaltain roolin muotoon [Region] = "East"

Näyttökuva, jossa näytetään, miten voit määrittää staattisen URL-roolin.

Oletetaan, että john@contoso.com olet sovelluksesi käyttäjä. Haluat antaa Johnille käyttöoikeuden Itä-Yhdysvaltain roolin tietoihin. Jos haluat upottaa raportin sovellukselle john@contoso.com, luo upotustunnus käyttämällä Itä-Yhdysvaltain roolia. Tuloksena saatavat tiedot suodatetaan ön mukaan [Region] = "East".

Muistiinpano

Kun luot upotustunnuksen, sinun on annettava käyttäjänimi, mutta käyttäjänimi voi olla mikä tahansa merkkijono. Staattisilla rooleilla on kiinteä arvo, joka ei ole riippuvainen käyttäjänimestä, joten kun ISV määrittää käyttäjän roolin ja välittää sen upotettuun tunnukseen, tiedot suodatetaan tämän roolin mukaan riippumatta siitä, mikä käyttäjänimi välitettiin.

Dynaaminen suojaus

Dynaaminen suojaus käyttää roolin määrittämiseen DAX-funktiota (username() tai userprincipalname()).

Käyttäjä omistaa tiedot -skenaariossa RLS-malli suodattaa tiedot automaattisesti tietyn käyttäjän roolien perusteella. App owns data -malleja käytettäessä Power BI ei tiedä ISV:n asiakkaiden käyttäjänimiä, joten voit käyttää username() funktiota tietojen dynaamiseen suodattamiseen.

Luo rooli Power BI Desktopissa username()-funktiolla. Voit esimerkiksi luoda roolin nimeltä CountryDynamic ja määrittää sen muotoon [CountryRegionCode] = username()

Näyttökuva, jossa näytetään, miten voit luoda dynaamisen URL-roolin.

Oletetaan, että haluat antaa käyttäjällesi jane@contoso.compääsyn Ranskan tietoihin. Kun luot upotustunnuksen sovellukselle jane@contoso.com, välität merkkijonon Ranska käyttäjänimeksi MaaDynamic-roolissa. Tiedot suodatetaan kaavan [CountryRegionCode] = Ranska mukaan.

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

Kun käytät tässä skenaariossa dynaamista suojausta, tarvitset vain yhden roolin kaikille alueille. Alueen nimeä käytetään voimassa olevana käyttäjätietona.

Upotustunnuksen luominen

Kun olet valmis upottamaan raportin sovellukseesi, sinun on luotava upotustunnus. Jos haluat luoda tunnuksen upotustunnuksen ohjelmointirajapinnan avulla, välitä seuraavat tiedot ohjelmointirajapinnalle.

  • käyttäjänimi (pakollinen) – Jos roolit ovat dynaamisia, käyttäjänimimerkkijonoa käytetään suodattimena. Staattisten roolien käyttäjänimi ei vaikuta rivitason suojauksen ja voi olla mikä tahansa merkkijono. Luettelossa voi olla vain yksi käyttäjänimi.
  • roolit (pakollinen) – Roolit, joita käytetään rivitason suojauksen sääntöjä käytettäessä. Jos välitetään useampi kuin yksi rooli, ne tulee välittää merkkijonomatriisina.
  • tietojoukko (pakollinen) – Tietojoukko, joka koskee upotettavaa kohdetta.

Voit nyt upottaa raportin sovellukseesi. Raportti suodattaa tiedot käytetyn rivitason suojauksen mukaan.

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

Huomioitavat asiat ja rajoitukset

  • Määrityksestä riippuen sinun on ehkä suoritettava useita vaiheita, ennen kuin voit luoda upotustunnuksen. Jos haluat lisätietoja erilaisista skenaarioista, katso Suojausominaisuuksia käyttävän raportin upottaminen.
  • Upotustunnuksen muodostavan käyttäjän on oltava jäsen tai järjestelmänvalvoja molemmissa työtiloissa (tietojoukon työtila ja raportin työtila).
  • Upotustunnusta luotaessa on annettava käyttäjänimi ja rooli. Jos näin ei toimita, tapahtuu jokin seuraavista tapahtumista sen mukaan, muodostaako palvelun päänimi vai pääkäyttäjä tunnuksen:
    • Jos kyseessä on palvelun päänimi, tunnuksen luominen epäonnistuu.
    • Pääkäyttäjän tunnuksen luominen onnistuu, mutta tietoja ei suodateta (kaikki tiedot palautetaan).

Onko sinulla kysyttävää? Kokeile Power BI -yhteisöä.