Ενσωμάτωση αναφοράς με βάση δεδομένων Υπηρεσίες Ανάλυσης του Azure (AAS)

ΙΣΕΙ ΓΙΑ: Τα δεδομένα ανήκουν στην εφαρμογή, τα δεδομένα ανήκουν στον χρήστη

Αυτό το άρθρο εξηγεί πώς μπορείτε να ενσωματώσετε μια αναφορά Power BI που χρησιμοποιεί δεδομένα αποθηκευμένα σε Υπηρεσίες Ανάλυσης του Azure (AAS), σε ένα σενάριο ενσωμάτωσης για τους πελάτες σας. Αυτό το άρθρο απευθύνεται σε ανεξάρτητους προγραμματιστές λογισμικού (ISV), οι οποίοι θέλουν να ενσωματώσουν μια αναφορά με δεδομένα AAS, ανεξάρτητα από το αν η βάση δεδομένων εφαρμόζει ασφάλεια σε επίπεδο γραμμών (RLS).

Προαπαιτούμενα στοιχεία

Θα χρειαστείτε μια αναφορά με δυναμική σύνδεση σε μια βάση δεδομένων AAS, με ή χωρίς RLS.

Δυναμική ασφάλεια - RLS

Εάν θέλετε η αναφορά σας να υλοποιήσει δυναμικό RLS, χρησιμοποιήστε τη customeData συνάρτηση. Δεδομένου ότι δεν μπορείτε να παρακάμψετε την ουσιαστική ταυτότητα, συνιστούμε να δημιουργήσετε νέους ρόλους με customDataτο . Μπορείτε επίσης να χρησιμοποιήσετε ρόλους που έχουν τις username συναρτήσεις ή userPrincipalName , εάν τις αντικαταστήσετε με customData.

Ακολουθήστε αυτά τα βήματα για να δημιουργήσετε έναν νέο ρόλο και να προσθέσετε τη customData συνάρτηση στον ρόλο.

  1. Δημιουργήστε έναν ρόλο στον διακομιστή των Υπηρεσιών ανάλυσης.

    A screenshot of creating a new role in Analysis Services server.

  2. Στις γενικές ρυθμίσεις, δώστε ένα Όνομα ρόλου και ορίστε τα δικαιώματα βάσης δεδομένων σε Μόνο ανάγνωση.

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

  1. Στις ρυθμίσεις Ιδιότητα μέλους, προσθέστε τους χρήστες που πρόκειται να καλέσουν το API Διακριτικό ενσωμάτωσης - Δημιουργία διακριτικού. Εάν χρησιμοποιείτε μια κύρια υπηρεσία που δεν είναι διαχειριστής, προσθέστε την επίσης.

    A screenshot of adding users to a new role in Analysis Services server.

  2. Στις ρυθμίσεις φίλτρων γραμμής, ορίστε το ερώτημά σας DAX χρησιμοποιώντας τη CUSTOMDATA() συνάρτηση.

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

Κύρια υπηρεσία

Εάν χρησιμοποιείτε μια κύρια υπηρεσία για να ενσωματώσετε την αναφορά, βεβαιωθείτε ότι η κύρια υπηρεσία είναι διαχειριστής διακομιστή ή μέλος ρόλου του AAS. Για να εκχωρήσετε δικαιώματα διαχειριστή AAS στην κύρια υπηρεσία, ανατρέξτε στο θέμα Προσθήκη κύριας υπηρεσίας στον ρόλο διαχειριστή διακομιστή. Για να προσθέσετε την κύρια υπηρεσία ως μέλος ρόλου, μεταβείτε στις ρυθμίσεις Ιδιότητα μέλους.

Χρησιμοποιήστε το αναγνωριστικό αντικειμένου κύριας υπηρεσίας ως το όνομα χρήστη (πραγματική ταυτότητα).

Μετεγκατάσταση υπηρεσίας ανάλυσης

Μπορείτε να κάνετε μετεγκατάσταση από AAS σε Power BI Premium , ακόμα και αν έχετε μια ενσωματωμένη αναφορά AAS. Η ενσωματωμένη αναφορά σας δεν θα διακοπεί κατά τη μετεγκατάσταση, εφόσον η κύρια αρχή που καλεί το διακριτικό ενσωμάτωσης - Δημιουργία διακριτικού API, είναι μέλος ή διαχειριστής του χώρου εργασίας.

Σημείωμα

Εάν η κύρια υπηρεσία δεν είναι διαχειριστής και δεν θέλετε να την καταστήσετε διαχειριστή του χώρου εργασίας κατά τη μετεγκατάσταση, μετεγκαταστήστε αυτό το μοντέλο σε έναν ξεχωριστό χώρο εργασίας, όπου μπορείτε να του εκχωρήσετε δικαιώματα διαχειριστή.

Δημιουργία διακριτικού ενσωμάτωσης

Χρησιμοποιήστε το API Δημιουργία διακριτικού για να δημιουργήσετε ένα διακριτικό ενσωμάτωσης που παρακάμπτει την ουσιαστική ταυτότητα.

Οι πληροφορίες που απαιτούνται για τη δημιουργία ενός διακριτικού ενσωμάτωσης εξαρτώνται από τον τρόπο με τον οποίο συνδέεστε στο Power BI (κύρια υπηρεσία ή κύριος χρήστης) και επίσης εάν η βάση δεδομένων έχει RLS.

Για να δημιουργήσετε ένα διακριτικό ενσωμάτωσης, καταχωρήστε τις ακόλουθες πληροφορίες:

  • Όνομα χρήστη (Προαιρετικό εάν δεν υπάρχει RLS. Απαιτείται για RLS) - Το όνομα χρήστη πρέπει να είναι ίδιο με το όνομα του καλούντα API (στην περίπτωση αυτή, το UPN του κύριου χρήστη). Εάν η βάση δεδομένων δεν χρησιμοποιεί RLS και δεν παρέχεται όνομα χρήστη, χρησιμοποιούνται τα διαπιστευτήρια του κύριου χρήστη.
  • Ρόλος (απαιτείται για RLS) - Η αναφορά θα εμφανίζει δεδομένα μόνο εάν η ουσιαστική ταυτότητα είναι μέλος του ρόλου.

Παράδειγμα:

Καθορίστε την ταυτότητα χρήστη και τους ρόλους για ένα από τα ακόλουθα τρία σενάρια:

  • Εάν δεν υλοποιείται το RLS:

Δεν χρειάζεται να ορίσετε αποτελεσματική ταυτότητα.

  • Εάν χρησιμοποιείτε στατικό RLS:

        var rlsidentity = new EffectiveIdentity(  //If static RLS
           username: "username@contoso.com", 
           roles: new List<string>{ "MyRole" },
           datasets: new List<string>{ datasetId.ToString()}
        )
    
  • Εάν χρησιμοποιείτε δυναμικό RLS:

        var rlsidentity = new EffectiveIdentity(  // If dynamic RLS
           username: "username@contoso.com",
           roles: new List<string>{ "MyRoleWithCustomData" },
           customData: "SalesPersonA"
           datasets: new List<string>{ datasetId.ToString()}
        )
    

    Σημείωμα

    customData Στο διακριτικό ενσωμάτωσης δεν μπορεί να είναι μεγαλύτερο από 1.024 χαρακτήρες.

Χρησιμοποιήστε την ουσιαστική ταυτότητα για να δημιουργήσετε ένα διακριτικό ενσωμάτωσης:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();
    // 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 } // Only in cases of RLS
    );
    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
    return embedToken;
}

Χρησιμοποιήστε το διακριτικό ενσωμάτωσης για να ενσωματώσετε την αναφορά στην εφαρμογή ή την τοποθεσία Web σας. Η αναφορά σας θα φιλτράρει τα δεδομένα σύμφωνα με το εφαρμοσμένο RLS στην αναφορά.