Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Congratulations to the new Qlik Luminary and Partner Ambassador class! Meet them here
cancel
Showing results for 
Search instead for 
Did you mean: 
DaveQ2
Contributor II
Contributor II

MCP Bypassing App and Row-level Security...

I recently started testing MCP access to our Qlik Cloud Apps. The good news is that it works really well - in many situations it could be a complete game-changer (though you need to be wary of using any form of personal Claude account or risk your data becoming part of their LLM). But when I tried to verify that it was respecting the security layers we had in place I was really surprised to find that it was ignoring them all. 

I'm hoping I have done something wrong in the configuration, so here is the scenario I set up - if you spot a mistake please let me know:

  1. Created a new user with access to just one Space (our Tenant has two, so this was to test that it could not access the 2nd)
    • Note: I did not add this user to the User Access table for any App, so it should not have access to any data
  2. Granted user access to the Agentic AI Permission
  3. Added a Custom Connector to Claude.AI following the documentation
  4. Connected to Qlik Cloud directly and through Claude in a different browser using the new user

Results

In the Qlik dashboard the behaviour was as expected; user could only see the Apps in the Space to which it had access, and when I opened an App i got the 'Access is Denied' error code 5 message to indicate that row level security was blocking all rows.

Inside Claude however the question 

"tell me what Apps i can access via the qlik mcp"

listed every App on the Tenant, and i was further able to successfully interrogate any of those Apps and access all the data (row-level security was bypassed).
 
As I said, this is so far from the expected behaviour that I'm hoping I have done something stupid - hope you can help spot the mistake!
 
 
Labels (1)
1 Solution

Accepted Solutions
DaveQ2
Contributor II
Contributor II
Author

I logged a support case for the issue and am including the information they provided which did fix the issue (not user error, but caching):

Qlik Cloud caches permissions during sessions, and changes do not always take effect immediately. If the restricted user had any prior session activity, or if the OAuth token was issued before the Space restrictions were applied, a cached session could explain broader access than expected. To rule this out, try the following:
1. In the Administration activity center, remove the MCP permission from the test user, save, then re-add it and save again.
2. Have the test user fully disconnect the Claude connector and reconnect, completing the OAuth flow fresh.
3. Repeat your test immediately after the new token is issued.

I hope this proves useful for others.
Dave

View solution in original post

3 Replies
Miguel_Angel_Baeyens
Support
Support

Does that user have any tenant *admin roles? 

DaveQ2
Contributor II
Contributor II
Author

No, none. (Thank you though, I should have included that in my original post)

The key thing for me is that inside the Qlik environment everything is working as it should.

DaveQ2
Contributor II
Contributor II
Author

I logged a support case for the issue and am including the information they provided which did fix the issue (not user error, but caching):

Qlik Cloud caches permissions during sessions, and changes do not always take effect immediately. If the restricted user had any prior session activity, or if the OAuth token was issued before the Space restrictions were applied, a cached session could explain broader access than expected. To rule this out, try the following:
1. In the Administration activity center, remove the MCP permission from the test user, save, then re-add it and save again.
2. Have the test user fully disconnect the Claude connector and reconnect, completing the OAuth flow fresh.
3. Repeat your test immediately after the new token is issued.

I hope this proves useful for others.
Dave