Οδηγίες ασφαλείας σε επίπεδο γραμμών (RLS) στο Power BI DesktopRow-level security (RLS) guidance in Power BI Desktop

Αυτό το άρθρο αφορά δημιουργούς μοντέλων που εργάζονται με το Power BI Desktop.This article targets you as a data modeler working with Power BI Desktop. Περιγράφει καλές πρακτικές σχεδίασης για την επιβολή ασφάλειας σε επίπεδο γραμμών (RLS) στα μοντέλα δεδομένων σας.It describes good design practices for enforcing row-levels security (RLS) in your data models.

Είναι σημαντικό να κατανοήσετε ότι το RLS φιλτράρει τις γραμμές πίνακα.It's important to understand RLS filters table rows. Δεν μπορούν να ρυθμιστούν για να περιοριστεί η πρόσβαση σε αντικείμενα μοντέλου, συμπεριλαμβανομένων πινάκων, στηλών ή μετρήσεων.They can't be configured to restrict access to model objects, including tables, columns, or measures.

Σημείωση

Αυτό το άρθρο δεν περιγράφει το RLS ή τον τρόπο ρύθμισής του.This article doesn't describe RLS or how to set it up. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Περιορισμός πρόσβασης δεδομένων με ασφάλεια σε επίπεδο γραμμών (RLS) για το Power BI Desktop.For more information, see Restrict data access with row-level security (RLS) for Power BI Desktop.

Επίσης, δεν καλύπτει την επιβολή RLS σε δυναμικές συνδέσεις σε μοντέλα εξωτερικής φιλοξενίας με τις Υπηρεσίες Ανάλυσης του Azure ή τις Υπηρεσίες ανάλυσης του SQL Server.Also, it doesn't cover enforcing RLS in live connections to external-hosted models with Azure Analysis Services or SQL Server Analysis Services. Σε αυτές τις περιπτώσεις, το RLS επιβάλλεται με τις Υπηρεσίες ανάλυσης.In these cases, RLS is enforced by Analysis Services. Όταν το Power BI συνδέεται με καθολική σύνδεση (SSO), οι Υπηρεσίες Ανάλυσης θα επιβάλλουν το RLS (εκτός εάν ο λογαριασμός έχει δικαιώματα διαχειριστή).When Power BI connects using single-sign on (SSO), Analysis Services will enforce RLS (unless the account has admin privileges).

Δημιουργία ρόλωνCreate roles

Είναι δυνατή η δημιουργία πολλών ρόλων.It's possible to create multiple roles. Όταν λαμβάνετε υπόψη τις ανάγκες δικαιωμάτων για έναν μοναδικό χρήστη αναφοράς, προσπαθήστε να δημιουργήσετε έναν μοναδικό ρόλο που εκχωρεί όλα αυτά τα δικαιώματα, αντί για μια σχεδίαση όπου ένας χρήστης αναφοράς θα είναι μέλος πολλών ρόλων.When you're considering the permission needs for a single report user, strive to create a single role that grants all those permissions, instead of a design where a report user will be a member of multiple roles. Αυτό συμβαίνει γιατί ένας χρήστης αναφοράς μπορεί να αντιστοιχιστεί σε πολλούς ρόλους, είτε απευθείας με τον λογαριασμό χρήστη τους, είτε έμμεσα ως μέλος σε μια ομάδα ασφαλείας.It's because a report user could map to multiple roles, either directly by using their user account or indirectly by security group membership. Πολλές αντιστοιχίσεις ρόλων μπορεί να οδηγήσουν σε μη αναμενόμενα αποτελέσματα.Multiple role mappings can result in unexpected outcomes.

Όταν ένας χρήστης αναφοράς αντιστοιχίζεται σε πολλούς ρόλους, τα φίλτρα RLS γίνονται πρόσθετα.When a report user is assigned to multiple roles, RLS filters become additive. Αυτό σημαίνει ότι οι χρήστες αναφοράς μπορεί να βλέπουν γραμμές πίνακα που αντιπροσωπεύουν την ένωση αυτών των φίλτρων.It means report users can see table rows that represent the union of those filters. Επιπλέον, σε ορισμένα σενάρια δεν είναι δυνατό να εγγυηθείτε ότι ένας χρήστης αναφοράς δεν βλέπει γραμμές σε έναν πίνακα.What's more, in some scenarios it's not possible to guarantee that a report user doesn't see rows in a table. Επομένως, σε αντίθεση με την εφαρμογή δικαιωμάτων σε αντικείμενα βάσης δεδομένων SQL Server (και άλλα μοντέλα δικαιωμάτων), η αρχή "απόρριψη μία φορά σημαίνει απόρριψη πάντα" δεν ισχύει.So, unlike permissions applied to SQL Server database objects (and other permission models), the "once denied always denied" principle doesn't apply.

Εξετάστε ένα μοντέλο με δύο ρόλους: Ο πρώτος ρόλος, με την ονομασία Εργαζόμενοι, περιορίζει την πρόσβαση σε όλες τις γραμμές πίνακα Payroll χρησιμοποιώντας την παρακάτω παράσταση κανόνα:Consider a model with two roles: The first role, named Workers, restricts access to all Payroll table rows by using the following rule expression:

FALSE()

Σημείωση

Ένας κανόνας δεν θα επιστρέψει γραμμές πίνακα όταν η παράστασή του αξιολογείται ως false.A rule will return no table rows when its expression evaluates to false.

Ωστόσο, ένας δεύτερος ρόλος, με την ονομασία Διευθυντές, επιτρέπει πρόσβαση σε όλες τις γραμμές πίνακα Payroll χρησιμοποιώντας την παρακάτω παράσταση κανόνα:Yet, a second role, named Managers, allows access to all Payroll table rows by using the following rule expression:

TRUE()

Προσοχή: Εάν ένας χρήστης αναφοράς αντιστοιχίσει και τους δύο ρόλους, θα δει όλες τις γραμμές του πίνακα Μισθοδοσία.Take care: Should a report user map to both roles, they'll see all Payroll table rows.

Βελτιστοποίηση RLSOptimize RLS

Το RLS λειτουργεί αυτόματα εφαρμόζοντας φίλτρα σε κάθε ερώτημα DAX και αυτά τα φίλτρα μπορεί να επηρεάσουν αρνητικά τις επιδόσεις ερωτήματος.RLS works by automatically applying filters to every DAX query, and these filters may have a negative impact on query performance. Συνεπώς, το αποτελεσματικό RLS είναι αποτέλεσμα της καλής σχεδίασης μοντέλου.So, efficient RLS comes down to good model design. Είναι σημαντικό να ακολουθείτε τις οδηγίες σχεδίασης μοντέλου, όπως περιγράφεται στα παρακάτω άρθρα:It's important to follow model design guidance, as discussed in the following articles:

Γενικά, συχνά είναι πιο αποτελεσματικό να επιβάλλετε φίλτρα RLS σε πίνακες διαστάσεων και όχι σε πίνακες δεδομένων.In general, it's often more efficient to enforce RLS filters on dimension-type tables, and not fact-type tables. Επίσης, βασιστείτε σε καλά σχεδιασμένες σχέσεις για να εξασφαλίσετε ότι τα φίλτρα RLS μεταδίδονται σε άλλους πίνακες μοντέλων.And, rely on well-designed relationships to ensure RLS filters propagate to other model tables. Επομένως, αποφύγετε τη χρήση της συνάρτησης DAX LOOKUPVALUE όταν οι σχέσεις μοντέλου μπορεί να επιτύχουν το ίδιο αποτέλεσμα.So, avoid using the LOOKUPVALUE DAX function when model relationships could achieve the same result.

Όποτε επιβάλλονται φίλτρα RLS σε πίνακες DirectQuery και υπάρχουν σχέσεις με άλλους πίνακες DirectQuery, βεβαιωθείτε ότι έχετε βελτιστοποιήσει τη βάση δεδομένων προέλευσης.Whenever RLS filters are enforced on DirectQuery tables and there are relationships to other DirectQuery tables, be sure to optimize the source database. Μπορεί να αφορά τη σχεδίαση κατάλληλων ευρετηρίων ή τη χρήση μόνιμων υπολογιζόμενων στηλών.It can involve designing appropriate indexes or using persisted computed columns. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Οδηγίες μοντέλου DirectQuery στο Power BI Desktop.For more information, see DirectQuery model guidance in Power BI Desktop.

Μέτρηση επίδρασης RLSMeasure RLS impact

Είναι δυνατό να μετρήσετε την επίδραση στις επιδόσεις των φίλτρων RLS στο Power BI Desktop χρησιμοποιώντας την Ανάλυση απόδοσης.It's possible to measure the performance impact of RLS filters in Power BI Desktop by using Performance Analyzer. Πρώτα, προσδιορίστε τις διάρκειες ερωτημάτων απεικόνισης αναφοράς όταν δεν επιβάλλεται RLS.First, determine report visual query durations when RLS isn't enforced. Στη συνέχεια, χρησιμοποιήστε την εντολή Προβολή ως στην καρτέλα κορδέλας Μοντελοποίηση για να επιβάλλετε το RLS και να προσδιορίσετε και συγκρίνετε διάρκειες ερωτημάτων.Then, use the View As command on the Modeling ribbon tab to enforce RLS and determine and compare query durations.

Ρύθμιση παραμέτρων αντιστοιχίσεων ρόλωνConfigure role mappings

Μετά τη δημοσίευση στο Power BI, πρέπει να αντιστοιχίσετε μέλη σε ρόλους συνόλου δεδομένων.Once published to Power BI, you must map members to dataset roles. Μόνο οι κάτοχοι συνόλου δεδομένων ή διαχειριστές χώρου εργασίας μπορούν να προσθέτουν μέλη σε ρόλους.Only dataset owners or workspace admins can add members to roles. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Ασφάλεια σε επίπεδο γραμμών (RLS) με το Power BI (Διαχείριση ασφάλειας στο μοντέλο σας).For more information, see Row-level security (RLS) with Power BI (Manage security on your model).

Τα μέλη μπορεί να είναι λογαριασμοί χρηστών ή ομάδες ασφαλείας.Members can be user accounts or security groups. Όποτε είναι εφικτό, προτείνουμε να αντιστοιχίσετε ομάδες ασφαλείας σε ρόλους συνόλου δεδομένων.Whenever possible, we recommend you map security groups to dataset roles. Περιλαμβάνει τη διαχείριση των μελών ομάδας ασφαλείας στο Azure Active Directory.It involves managing security group memberships in Azure Active Directory. Πιθανώς, αναθέτει την εργασία στους διαχειριστές του δικτύου σας.Possibly, it delegates the task to your network administrators.

Επικύρωση ρόλωνValidate roles

Δοκιμάστε κάθε ρόλο για να εξασφαλίσετε ότι φιλτράρει σωστά το μοντέλο.Test each role to ensure it filters the model correctly. Πραγματοποιείται εύκολα χρησιμοποιώντας την εντολή Προβολή ως στην καρτέλα κορδέλας Μοντελοποίηση.It's easily done by using the View As command on the Modeling ribbon tab.

Όταν το μοντέλο διαθέτει δυναμικούς κανόνες χρησιμοποιώντας τη συνάρτηση DAX USERNAME, βεβαιωθείτε ότι έχετε δοκιμάσει για αναμενόμενες και μη αναμενόμενες τιμές.When the model has dynamic rules using the USERNAME DAX function, be sure to test for expected and unexpected values. Κατά την ενσωμάτωση περιεχομένου Power BI, ιδιαίτερα χρησιμοποιώντας το σενάριο Τα δεδομένα ανήκουν στην εφαρμογή, η λογική εφαρμογής μπορεί να διαβιβάσει οποιαδήποτε τιμή ως ένα αποτελεσματικό όνομα χρήστη ταυτότητας.When embedding Power BI content—specifically using the App owns data scenario—app logic can pass any value as an effective identity user name. Όποτε είναι εφικτό, εξασφαλίστε ότι τυχαίες ή κακόβουλες τιμές οδηγούν σε φίλτρα που δεν επιστρέφουν γραμμές.Whenever possible, ensure accidental or malicious values result in filters that return no rows.

Εξετάστε ένα παράδειγμα χρήσης του Power BI embedded, όπου η εφαρμογή μεταβιβάζει τον ρόλο εργασίας του χρήστη ως το αποτελεσματικό όνομα χρήστη: Είναι είτε "Διευθυντής", είτε "Εργαζόμενος".Consider an example using Power BI embedded, where the app passes the user's job role as the effective user name: It's either "Manager" or "Worker". Οι διευθυντές μπορούν να βλέπουν όλες τις γραμμές, οι εργαζόμενοι όμως μπορούν να βλέπουν μόνο γραμμές όπου η τιμή στήλης Τύπος είναι "Εσωτερική".Managers can see all rows, but workers can only see rows where the Type column value is "Internal".

Ορίζεται η παρακάτω παράσταση κανόνα:The following rule expression is defined:

IF(
    USERNAME() = "Worker",
    [Type] = "Internal",
    TRUE()
)

Το πρόβλημα με αυτήν την παράσταση κανόνα είναι ότι όλες οι τιμές, με την εξαίρεση "Εργαζόμενος", επιστρέφουν όλες τις γραμμές πίνακα.The problem with this rule expression is that all values, except "Worker", return all table rows. Επομένως, μια τυχαία τιμή, όπως "Εργαζόμενος", επιστρέφει τυχαία όλες τις γραμμές πίνακα.So, an accidental value, like "Wrker", unintentionally returns all table rows. Κατά συνέπεια, είναι πιο ασφαλές να συντάξετε μια παράσταση που δοκιμάζει για κάθε αναμενόμενη τιμή.Therefore, it's safer to write an expression that tests for each expected value. Στην παρακάτω βελτιωμένη παράσταση κανόνα, μια μη αναμενόμενη τιμή θα έχει ως αποτέλεσμα ο πίνακας να μην επιστρέψει καμία γραμμή.In the following improved rule expression, an unexpected value will result in the table returning no rows.

IF(
    USERNAME() = "Worker",
    [Type] = "Internal",
    IF(
        USERNAME() = "Manager",
        TRUE(),
        FALSE()
    )
)

Σχεδίαση μερικού RLSDesign partial RLS

Ορισμένες φορές, οι υπολογισμοί χρειάζονται τιμές που δεν περιορίζονται από τα φίλτρα RLS.Sometimes, calculations need values that aren't constrained by RLS filters. Για παράδειγμα, μια αναφορά μπορεί να χρειαστεί να εμφανίσει μια αναλογία των εσόδων που κερδήθηκαν για την περιοχή πωλήσεων του χρήστη αναφοράς ως προς όλα τα έσοδα που κερδήθηκαν.For example, a report may need to display a ratio of revenue earned for the report user's sales region over all revenue earned.

Παρόλο που δεν είναι δυνατό μια παράσταση DAX να παρακάμψει το RLS, στην πραγματικότητα, δεν μπορεί ούτε να προσδιορίσει εάν επιβάλλεται το RLS, μπορείτε να χρησιμοποιήσετε έναν πίνακα σύνοψης μοντέλου.While it's not possible for a DAX expression to override RLS—in fact, it can't even determine that RLS is enforced—you can use a summary model table. Από τον πίνακα μοντέλου σύνοψης ζητείται να ανακτήσει έσοδα για "όλες τις περιοχές" και δεν περιορίζεται από φίλτρα RLS.The summary model table is queried to retrieve revenue for "all regions" and it's not constrained by any RLS filters.

Ας δούμε πώς μπορείτε να υλοποιήσετε αυτήν την απαίτηση σχεδίασης.Let's see how you could implement this design requirement. Εξετάστε πρώτα την παρακάτω σχεδίαση μοντέλου:First, consider the following model design:

Εμφανίζεται μια εικόνα ενός διαγράμματος μοντέλου. Περιγράφεται στις παρακάτω παραγράφους.

Το μοντέλο συγκρίνει τέσσερις πίνακες:The model comprises four tables:

  • Ο πίνακας Salesperson αποθηκεύει μία γραμμή ανά πωλητή.The Salesperson table stores one row per salesperson. Περιλαμβάνει τη στήλη EmailAddress, η οποία αποθηκεύει τη διεύθυνση email κάθε πωλητή.It includes the EmailAddress column, which stores the email address for each salesperson. Αυτός ο πίνακας είναι κρυφός.This table is hidden.
  • Ο πίνακας Sales αποθηκεύει μία γραμμή ανά παραγγελία.The Sales table stores one row per order. Περιλαμβάνει τη μέτρηση Revenue % All Region, η οποία έχει σχεδιαστεί για να επιστρέφει μια αναλογία εσόδων μίας περιοχής του χρήστη αναφοράς ως προς τα έσοδα όλων των περιοχών.It includes the Revenue % All Region measure, which is designed to return a ratio of revenue earned by the report user's region over revenue earned by all regions.
  • Ο πίνακας Date αποθηκεύει μία γραμμή ανά ημερομηνία και επιτρέπει φιλτράρισμα και ομαδοποίηση έτους και μήνα.The Date table stores one row per date and allows filtering and grouping year and month.
  • Το SalesRevenueSummary είναι ένας υπολογιζόμενος πίνακας.The SalesRevenueSummary is a calculated table. Αποθηκεύει τα συνολικά έσοδα για κάθε ημερομηνία παραγγελίας.It stores total revenue for each order date. Αυτός ο πίνακας είναι κρυφός.This table is hidden.

Η παρακάτω παράσταση ορίζει τον υπολογιζόμενο πίνακα SalesRevenueSummary:The following expression defines the SalesRevenueSummary calculated table:

SalesRevenueSummary =
SUMMARIZECOLUMNS(
    Sales[OrderDate],
    "RevenueAllRegion", SUM(Sales[Revenue])
)

Σημείωση

Ένας πίνακας συνάθροισης μπορεί να επιτύχει την ίδια απαίτηση σχεδίασης.An aggregation table could achieve the same design requirement.

Ο παρακάτω κανόνας RLS εφαρμόζεται στον πίνακα Salesperson:The following RLS rule is applied to the Salesperson table:

[EmailAddress] = USERNAME()

Καθεμία από τις τρεις σχέσεις μοντέλου περιγράφεται στον παρακάτω πίνακα:Each of the three model relationships is described in the following table:

ΣχέσηRelationship ΠεριγραφήDescription
Χαρακτήρας τερματισμού διαγραμμάτων ροής 1. Υπάρχει μια σχέση πολλά προς πολλά μεταξύ των πινάκων Salesperson και Sales.There's a many-to-many relationship between the Salesperson and Sales tables. Ο κανόνας RLS φιλτράρει τη στήλη EmailAddress του κρυφού πίνακα Salesperson χρησιμοποιώντας τη συνάρτηση DAX USERNAME.The RLS rule filters the EmailAddress column of the hidden Salesperson table by using the USERNAME DAX function. Η τιμή στήλης Region (για τον χρήστη αναφοράς) μεταδίδεται στον πίνακα Sales.The Region column value (for the report user) propagates to the Sales table.
Χαρακτήρας τερματισμού διαγραμμάτων ροής 2. Υπάρχει μια σχέση ένα προς πολλά μεταξύ των πινάκων Date και Sales.There's a one-to-many relationships between the Date and Sales tables.
Χαρακτήρας τερματισμού διαγραμμάτων ροής 3. Υπάρχει μια σχέση ένα προς πολλά μεταξύ των πινάκων Date και SalesRevenueSummary.There's a one-to-many relationships between the Date and SalesRevenueSummary tables.

Η παρακάτω παράσταση ορίζει τη μέτρηση Revenue % All Region:The following expression defines the Revenue % All Region measure:

Revenue % All Region =
DIVIDE(
    SUM(Sales[Revenue]),
    SUM(SalesRevenueSummary[RevenueAllRegion])
)

Σημείωση

Φροντίστε να αποφύγετε την αποκάλυψη ευαίσθητων δεδομένων.Take care to avoid disclosing sensitive facts. Εάν υπάρχουν μόνο δύο περιοχές σε αυτό το παράδειγμα, τότε θα είναι δυνατό για έναν χρήστη αναφοράς να υπολογίσει τα έσοδα για την άλλη περιοχή.If there are only two regions in this example, then it would be possible for a report user to calculate revenue for the other region.

Αποφύγετε τη χρήση RLSAvoid using RLS

Αποφύγετε τη χρήση RLS, όποτε είναι λογικό.Avoid using RLS, whenever it makes sense to do so. Εάν έχετε μόνο έναν μικρό αριθμό απλοϊκών κανόνων RLS που εφαρμόζουν στατικά φίλτρα, εξετάστε τη δημοσίευση πολλών συνόλων δεδομένων.If you have only a small number of simplistic RLS rules that apply static filters, consider publishing multiple datasets instead. Κανένα από αυτά τα σύνολα δεδομένων δεν ορίζει ρόλους καθώς κάθε σύνολο δεδομένων περιέχει δεδομένων για ένα συγκεκριμένο κοινό χρήστη αναφοράς, με τα ίδια δικαιώματα δεδομένων.None of the datasets define roles because each dataset contains data for a specific report user audience, which has the same data permissions. Έπειτα, δημιουργήστε έναν χώρο εργασίας ανά κοινό και εκχωρήστε δικαιώματα πρόσβασης στον χώρο εργασίας ή την εφαρμογή.Then, create one workspace per audience and assign access permissions to the workspace or app.

Για παράδειγμα, μια εταιρεία που διαθέτει μόνο δύο περιοχές πωλήσεων αποφασίζει να δημοσιεύσει ένα σύνολο δεδομένων για κάθε περιοχή πωλήσεων σε διαφορετικούς χώρους εργασίας.For example, a company that has just two sales regions decides to publish a dataset for each sales region to different workspaces. Τα σύνολα δεδομένων δεν επιβάλλουν RLS.The datasets don't enforce RLS. Ωστόσο, χρησιμοποιούν παραμέτρους ερωτήματος για το φιλτράρισμα δεδομένων προέλευσης.They do, however, use query parameters to filter source data. Με αυτόν τον τρόπο, το ίδιο μοντέλο δημοσιεύεται σε κάθε χώρο εργασίας, απλά έχουν διαφορετικές τιμές παραμέτρων συνόλου δεδομένων.This way, the same model is published to each workspace—they just have different dataset parameter values. Στους πωλητές εκχωρείται πρόσβαση σε έναν μόνο από τους χώρους εργασίας (ή δημοσιευμένες εφαρμογές).Salespeople are assigned access to just one of the workspaces (or published apps).

Υπάρχουν πολλά πλεονεκτήματα που συσχετίζονται με την αποφυγή RLS:There are several advantages associated with avoiding RLS:

  • Βελτιωμένες επιδόσεις ερωτήματος: Μπορεί να οδηγήσει σε βελτιωμένες επιδόσεις λόγω του μικρότερου αριθμού φίλτρων.Improved query performance: It can result in improved performance due to fewer filters.
  • Μικρότερα μοντέλα: Αν και οδηγεί σε περισσότερα μοντέλα, είναι μικρότερα σε μέγεθος.Smaller models: While it results in more models, they are smaller in size. Τα μικρότερα μοντέλα μπορούν να βελτιώσουν την απόκριση ερωτημάτων και ανανέωσης δεδομένων, ιδιαίτερα εάν οι εκχωρημένοι πόροι φιλοξενίας αντιμετωπίζουν πίεση στους πόρους.Smaller models can improve query and data refresh responsiveness, especially if the hosting capacity experiences pressure on resources. Επίσης, είναι ευκολότερο να διατηρείτε τα μεγέθη μοντέλου ακριβώς στα όρια μεγέθους που επιβάλλουν οι εκχωρημένοι πόροι σας.Also, it's easier to keep model sizes beneath size limits imposed by your capacity. Τέλος, είναι ευκολότερο να εξισορροπήσετε τους φόρτους εργασίας σε διαφορετικούς εκχωρημένους πόρους, καθώς μπορείτε να δημιουργήσετε χώρους εργασίας ή να μετακινήσετε χώρους εργασίας σε διαφορετικούς εκχωρημένους πόρους.Lastly, it's easier to balance workloads across different capacities, because you can create workspaces on—or move workspaces to—different capacities.
  • Πρόσθετες δυνατότητες: Μπορούν να χρησιμοποιηθούν δυνατότητες Power BI που δεν λειτουργούν με RLS, όπως η Δημοσίευση στο Web.Additional features: Power BI features that don't work with RLS, like Publish to web, can be used.

Ωστόσο, υπάρχουν μειονεκτήματα που σχετίζονται με την αποφυγή RLS:However, there are disadvantages associated with avoiding RLS:

  • Πολλοί χώροι εργασίας: Απαιτείται ένας χώρος εργασίας για κάθε κοινό χρήστη αναφοράς.Multiple workspaces: One workspace is required for each report user audience. Εάν δημοσιεύονται εφαρμογές, αυτό σημαίνει ότι υπάρχει μια εφαρμογή ανά κοινό χρήστη αναφοράς.If apps are published, it also means there's one app per report user audience.
  • Αντιγραφή περιεχομένου: Πρέπει να δημιουργηθούν αναφορές και πίνακες εργαλείων σε κάθε χώρο εργασίας.Duplication of content: Reports and dashboards must be created in each workspace. Απαιτεί επιπλέον προσπάθεια και χρόνο για ρύθμιση και συντήρηση.It requires additional effort and time to set up and maintain.
  • Χρήστες υψηλών προνομίων: Οι χρήστες υψηλών προνομίων, οι οποίοι ανήκουν σε πολλά κοινά χρήστη αναφοράς, δεν μπορούν να δουν μια ενοποιημένη προβολή των δεδομένων.High privilege users: High privilege users, who belong to multiple report user audiences, can't see a consolidated view of the data. Θα χρειαστεί να ανοίξουν πολλές αναφορές (από διαφορετικούς χώρους εργασίας ή εφαρμογές).They'll need to open multiple reports (from different workspaces or apps).

Επίλυση προβλημάτων RLSTroubleshoot RLS

Εάν το RLS παράγει μη αναμενόμενα αποτελέσματα, ελέγξτε για τα παρακάτω προβλήματα:If RLS produces unexpected results, check for the following issues:

  • Υπάρχουν λανθασμένες σχέσεις μεταξύ πινάκων μοντέλων, αναφορικά με αντιστοιχίσεις στηλών και κατευθύνσεις φίλτρου.Incorrect relationships exist between model tables, in terms of column mappings and filter directions.
  • Δεν έχει οριστεί σωστά η ιδιότητα σχέσης Εφαρμογή φίλτρων ασφαλείας και στις δύο κατευθύνσεις.The Apply security filter in both directions relationship property isn't correctly set. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Οδηγίες για τις σχέσεις αμφίδρομης κατεύθυνσης.For more information, see Bi-directional relationship guidance.
  • Οι πίνακες δεν περιέχουν δεδομένα.Tables contain no data.
  • Φορτώνονται λανθασμένες τιμές στους πίνακες.Incorrect values are loaded into tables.
  • Ο χρήστης αντιστοιχίζεται σε πολλούς ρόλους.The user is mapped to multiple roles.
  • Το μοντέλο περιλαμβάνει πίνακες συνάθροισης και οι κανόνες RLS δεν φιλτράρουν συναθροίσεις και λεπτομέρειες με συνέπεια.The model includes aggregation tables, and RLS rules don't consistently filter aggregations and details. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Χρήση συναθροίσεων στο Power BI Desktop (RLS για συναθροίσεις).For more information, see Use aggregations in Power BI Desktop (RLS for aggregations).

Όταν ένας συγκεκριμένος χρήστης δεν μπορεί να δει δεδομένα, μπορεί να οφείλεται στο γεγονός ότι το UPN του δεν έχει αποθηκευτεί ή έχει καταχωρηθεί λανθασμένα.When a specific user can't see any data, it could be because their UPN isn't stored or it's entered incorrectly. Μπορεί να συμβεί απότομα καθώς ο λογαριασμός χρήστη του έχει αλλάξει ως αποτέλεσμα μιας αλλαγής ονόματος.It can happen abruptly because their user account has changed as the result of a name change.

Συμβουλή

Για σκοπούς δοκιμής, προσθέστε μια μέτρηση που επιστρέφει τη συνάρτηση DAX USERNAME.For testing purposes, add a measure that returns the USERNAME DAX function. Μπορείτε να την ονομάσετε "Ποιος είμαι" ή κάτι αντίστοιχο.You might name it something like "Who Am I". Έπειτα, προσθέστε τη μέτρηση σε μια απεικόνιση κάρτας σε μια αναφορά και δημοσιεύστε τη στο Power BI.Then, add the measure to a card visual in a report and publish it to Power BI.

Όταν ένας συγκεκριμένος χρήστης μπορεί να δει όλα τα δεδομένα, είναι πιθανό να έχει πρόσβαση σε αναφορές απευθείας στον χώρο εργασίας και να είναι ο κάτοχος δεδομένων.When a specific user can see all data, it's possible they're accessing reports directly in the workspace and they're the dataset owner. Το RLS επιβάλλεται μόνο στις εξής περιπτώσεις:RLS is only enforced when:

  • Η αναφορά είναι ανοικτή σε μια εφαρμογή.The report is opened in an app.
  • Η αναφορά ανοίγει σε έναν χώρο εργασίας και ο χρήστης αντιστοιχίζεται στον ρόλο θεατή.The report is opened in a workspace, and the user is mapped to the Viewer role.

Επόμενα βήματαNext steps

Για περισσότερες πληροφορίες σχετικές με αυτό το άρθρο, ελέγξτε τις παρακάτω προελεύσεις:For more information related to this article, check out the following resources: