Forum Discussion

LukaszK1255's avatar
LukaszK1255
Copper Contributor
Jun 22, 2023

Power Query and permissions in Office 365 Enterprise

Hello Excel Community,

 

Me and colleagues have Office 365 E3 licences. I have an Excel master file saved in a SharePoint site. This file contains many rows of data, and I want to grant each colleague a way to see some, but not all rows. Column A identifies who should be able to see what. I know there's no way to let people see only part of a workbook, so I'm thinking of a workaround: I would create one additional child Excel file for each colleague, in these child files create a Power Query which would connect to the master file and filter the data by column A, and then share these child files with read only permissions with colleagues. 

 

My questions are:

1. Does it seem like a reasonable solution, or am I overthinking this and is there a simpler method? (just for context, in parallel I'm exploring Power BI with RLS solution, but colleagues are more comfortable with Excel for now, so I have to at least try this).

2. Will this solution be in fact secure, meaning will my colleagues be prevented from somehow accessing the PowerQuery and removing the filter thus seeing rows that are "not theirs"?

3. If I share the child files as read only, what's the best way to ensure the colleagues can receive updates when the master file changes? Defining automatic query refreshes in the child file?

 

Big thanks to everyone for having a look at this!

  • LukaszK1255 

    Excel is not the tool which secures data, it only protects data from the negligence. Protections could be relatively easy removed, power query is not protected at all. Thus all depends on end user qualification which may not be very high to access the data.

    RLS within Power BI is much more reliable. End user on Excel could receive data as PivotTable connected to Power BI dataset; or you may create within dataset measure which returns desired table as CSV text, connect it from Excel with cube formulae and parse with dynamic arrays. However, didn't test above scenario exactly with RLS.

     

Resources