EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB31757: Searching for reports in MicroStrategy Web 9.x - 10.x under a user's My Reports folder, a user is able to find reports from any other user as well.


Stefan Zepeda

Salesforce Solutions Architect • Strategy


This technical note describes a behavior detected when searching for reports in MicroStrategy Web

SYMPTOM:
When users are searching for a personal report within their My Reports folder the user may find the same report in some other Profiles folder and can execute them.
 
CAUSE:
Most likely the Profiles folder Access Control Lists (ACL) are set incorrect.  Everyone or Public/Guest Group may be on the ACL of the profile folder as shown in the image below:
 

ka02R000000kXSlQAM_0EM440000002EJ3.jpeg

 
ACTION:
User should check that for the user Profile folder, the 'Administrator' and himself are the only users with access to this folder as shown in the image below:
 

ka02R000000kXSlQAM_0EM440000002EJ4.jpeg

 
Users may also create a new Procedure in Command Manager that goes to all Profile folders and checks to see if the Everyone group or the Public/Gust group are not presented in the ACL of those folders. Below is the code to create this procedure, but may need to be modified according to a user's needs:
 
 
Sample Code/Error
 /* ==================================  
This procedure will scan 'folder' for "Everyone" and "Public / Guest" groups within the 'project'
   ================================== */
Find_ACL_Profile_Folder (String FOLDER, String PROJECT);
 
 
Java
ResultSet allProfileFolders = executeCapture( " LIST ALL FOLDERS IN  ' " + folder + " ' FOR PROJECT ' " + project + " ';");
String folderName = "";
String trusteeName = "";
String trusteeType = "";
allProfileFolders.moveFirst();
while ( !allProfileFolders.isEof()) {
     folderName = allProfileFolders.getFieldValueString(NAME);
     printOut("Scanning " + folderName + "...");
    
     ResultSet allProperties = executeCapture( " LIST ALL PROPERTIES FOR ACL FROM FOLDER \" " + folderName + " \" IN FOLDER \" " +folder+ " \" FOR PROJECT  \" " + project + " \";");
     allProperties.moveFirst();    
     while ( !allProperties.isEof()) {    
          trusteeName = allProperties.getFieldValueString(TRUSTEE_NAME);
          trusteeType = allProperties.getFieldValueString(TRUSTEE_TYPE);
          if( trusteeType.equals("User Group") && ( trusteeName.equals("Everyone") || trusteeName.equals("Public / Guest") )){
               printOut("<< FOUND GROUP \"" + trusteeName +"\">>");
               //Uncomment the following two lines in order to remove the Everyone and/or Public / Guest group within the specified folder.
               //printOut("<< Deleting it from the ACL....");             
               //execute (" REMOVE ACE FROM FOLDER \" " + folderName + " \" IN FOLDER \" " + folder + " \" GROUP \" "+ trusteeName + " \" FROM PROJECT  \" " + project + " \";");
          }             
     allProperties.moveNext();
     }
allProfileFolders.moveNext();
}
 
  
 


Comment

0 comments

Details

Knowledge Article

Published:

June 15, 2017

Last Updated:

June 15, 2017