Implémentation de la sécurité au niveau des lignes dans des rapports paginés incorporés

S’APPLIQUE À : L’application est propriétaire des données L’utilisateur est propriétaire des 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).

Notes

Cet article ne concerne que les clients 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 sera 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.

    Screenshot of the Power BI Report Builder filter.

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

    Screenshot shows the value Color selected from the Expression menu.

  3. Cliquez sur le bouton de fonction Valeur.

    Power BI Report Builder value

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

    Screenshot shows the Expression window with Built-in Fields selected as Category and ExecutionTime selected as Item.

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

    Power BI Report Builder UserID

  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 cliquez sur OK.

    Power BI Report Builder semantic model properties

Utilisation d’une requête

  1. Dans la fenêtre Propriétés du modèle sémantique, sélectionnez Paramètres, puis cliquez sur Ajouter.

    Power BI Report Builder parameters

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

    Power BI Report Builder parameter name

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

    Notes

    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.

    Power BI Report Builder queries edit

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

Quand vous incorporez un rapport paginé pour vos clients, utilisez l’API GenerateTokenInGroup pour les rapports pour obtenir le jeton d’incorporation. Ce jeton peut également être utilisé pour filtrer certaines données du rapport paginé.

Vous ne pouvez générer qu’un jeton avec un principal de service. 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 a un paramètre Color (Couleur), si vous entrez green (vert) dans le champ username, le jeton d’incorporation limite les données incorporées aux données qui ont la valeur green (vert) dans la colonne Color.

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

Notes

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 avec les rapports paginés pour l’incorporation pour vos clients. L’utilisateur maître est pris en charge pour l’incorporation 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