Mise en œuvre de la sécurité au niveau des lignes dans des rapports paginés intégrés

S’applique à :✅ Analyses incorporées Power BI pour vos clients (l’application possède les données)

Cet article explique comment incorporer un rapport paginé qui utilise la RLS (sécurité au niveau des lignes) dans votre application App Owns Data (l’application possède les données).

Note

Cet article ne concerne que les clients du modèle App Owns Data.

Pour utiliser la RLS pour vos rapports paginés :

  1. Configurez l’environnement pour filtrer le rapport
  2. Filtrez les données au niveau du rapport ou de la requête
  3. Passez le paramètre configuré en utilisant un jeton d’incorporation

Prérequis

  • Cet article suppose que vous savez incorporer un rapport paginé Power BI. Il explique comment générer le jeton incorporé afin que le rapport affiche uniquement ce à quoi l’utilisateur est autorisé à accéder.

  • Les rapports paginés sont créés avec le moteur SQL Server Reporting Services, et non avec le moteur Power BI (Analysis Services), de sorte que le filtrage RLS est configuré dans Power BI Report Builder.

Configurer l’environnement

Pour appliquer la sécurité au niveau des lignes à un rapport paginé Power BI, utilisez le champ intégré UserID afin d’affecter un paramètre. Ce paramètre est utilisé pour filtrer ou interroger vos données.

Ensuite, transmettez l’ID utilisateur à l’API Jeton d’incorporation - Générer le jeton pour obtenir le jeton d’incorporation.

Utiliser UserID comme filtre au niveau du rapport ou de la requête

Vous pouvez utiliser UserId comme filtre ou dans une requête sur la source de données.

Filtrer les données

  1. Dans la fenêtre Propriétés du modèle sémantique, depuis le volet gauche, sélectionnez Filtre.

    Capture d’écran du filtre Power BI Report Builder.

  2. Dans le menu déroulant Expression, sélectionnez le paramètre que vous voulez utiliser pour le filtrage des données.

    Capture d’écran montrant la valeur Color sélectionnée dans le menu Expression.

  3. Sélectionnez le bouton de fonction Valeur.

    Valeur du Générateur de rapports Power BI

  4. Dans la fenêtre Expression, dans la liste Catégorie, sélectionnez Champs prédéfinis.

    Capture d’écran montrant la fenêtre Expression avec les champs prédéfinis sélectionnés en tant que catégorie et ExecutionTime sélectionné en tant qu’élément.

  5. Dans la liste Élément, sélectionnez UserID, puis OK.

    UserID du Générateur de rapports Power BI

  6. Dans la fenêtre Propriétés du modèle sémantique, vérifiez que l’expression est votre paramètre sélectionné = UserID, puis sélectionnez OK.

    Propriétés du modèle sémantique Power BI Report Builder

Utilisation d’une requête

  1. Dans la fenêtre Propriétés du modèle sémantique, sélectionnez Paramètres dans le volet de navigation de gauche, puis Ajouter.

    Paramètres du Générateur de rapports Power BI

  2. Dans le champ Nom du paramètre, entrez @UserID puis, dans Valeur du paramètre, ajoutez [&UserID].

    Nom du paramètre du Générateur de rapports Power BI

  3. Dans le volet de gauche, sélectionnez Requête. Dans la requête, ajoutez le paramètre UserID comme partie de votre requête, puis sélectionnez OK.

    Note

    Dans la capture d’écran ci-dessous, le paramètre Color est utilisé comme exemple (WHERE FinalTable.Color = @UserID). Si nécessaire, vous pouvez créer une requête plus complexe.

    Modification de requêtes du Générateur de rapports Power BI

Générer un jeton d’intégration

Lorsque vous intégrez un rapport paginé pour vos clients, utilisez l’API Reports GenerateTokenInGroup pour obtenir le jeton d’intégration. Ce jeton peut également être utilisé pour filtrer certaines données du rapport paginé.

Vous ne pouvez générer un jeton qu’au moyen d’un service principal. Vous ne pouvez pas générer de jeton en tant qu’utilisateur maître. Le principal de service doit disposer au minimum des autorisations de membre sur l’espace de travail dans le service Power BI. (Si le principal de service est un contributeur ou un lecteur, il ne peut pas générer de jeton).

Pour générer un jeton, affectez le champ username avec les informations que vous souhaitez afficher. Par exemple, dans un rapport paginé qui comporte un paramètre Couleur, si vous entrez green dans le champ username, le jeton d’incorporation restreint les données incorporées aux seules données pour lesquelles la valeur de la colonne Couleur est green.

{
 "reports": [
 {
  "id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
 }
 ],
 "identities": [
 {
  "username": "green",
  "reports": [
  "8d57615e-cfed-4d60-bd21-7dc05727193c"
  ]
 }
 ]
}

Note

Si vous générez un jeton d’incorporation sans spécifier d’ID d’utilisateur, l’ID d’objet du principal de service est utilisé.

Observations et limitations

  • L’utilisateur maître n’est pas pris en charge pour les rapports paginés dans le cadre de l’intégration pour vos clients. L’utilisateur principal est pris en charge pour l’intégration pour votre organisation.
  • Le principal de service doit disposer au minimum d’autorisations d’espace de travail de membre (les autorisations de lecteur ou de contributeur ne suffisent pas).

Générer un jeton d’intégration