Cognos Analytics

Cognos Analytics

Connect, learn, and share with thousands of IBM Cognos Analytics users! 

 View Only
Expand all | Collapse all

Data Module/Data set security

  • 1.  Data Module/Data set security

    Posted Fri May 07, 2021 02:02 PM
    Hello team,
    I have a package with row-level security to limit access to sensitive data. This means when users run their Cognos reports they only see what they are supposed to see.
    I am now working on creating dashboards using datasets/data modules but I am realising the security from the package is not maintained in the subsequent dataset. Therefore, the dashboard will show data iregardless of the security applied at the package.

    I read somewhere on this blog that you can emplement row-level security on the Data Module. 

    Can someone point me to how I can do that.
    These are data modules for dashboards.

    Thanks in advance,

    A

    ------------------------------
    Arnold Ruzvidzo
    ------------------------------

    #CognosAnalyticswithWatson


  • 2.  RE: Data Module/Data set security

    Posted Mon May 10, 2021 01:30 AM
    You can try to add this as filter on the table(s) level (in the properties of the dataset/table you need :

    'UserGroup' IN (#CSVIdentityNameList()#)

    this will compare the userGroup you want with all the user groups/roles where the user is member of. If he is member then he will see the data. If not the table will be empty


    ------------------------------
    Stoyka (Toni) Bojkova
    ------------------------------



  • 3.  RE: Data Module/Data set security

    Posted Mon May 10, 2021 09:12 AM
    Thanks Toni,
    I am trying to limit certain data from some tables. Like certain accounts should only be visible to only these folks.
    So its more like row-based filtering if  that makes sense. 

    Let me know your thoughts,

    thanks,
    A

    ------------------------------
    Arnold Ruzvidzo
    ------------------------------



  • 4.  RE: Data Module/Data set security

    Posted Mon May 10, 2021 10:18 AM
    Edited by System Admin Fri January 20, 2023 04:22 PM
    We have implemented row level security by adding a table filter in the data modules, using the queryValue-function (lookup functionality)

    //validate: 1=1
    SecurityColumn = queryValue('[SecurityTable].[SECURITYCODE]','[SecurityTable].[UPN] = ' +sq($account.personalInfo.email))#​


    ------------------------------
    Sandeep Dhirad
    Elkjøp Nordic
    ------------------------------



  • 5.  RE: Data Module/Data set security

    Posted Tue May 11, 2021 09:52 AM
    Thank you very much, this is new to me. I will try this out and let you know how it goes.

    ------------------------------
    Arnold Ruzvidzo
    ------------------------------



  • 6.  RE: Data Module/Data set security

    Posted Tue May 11, 2021 10:26 AM
    Edited by System Admin Fri January 20, 2023 04:49 PM


  • 7.  RE: Data Module/Data set security

    Posted Tue May 11, 2021 10:29 AM
    Okay cool, this should work on filtering the data being displayed on the dashboard right?

    ------------------------------
    Arnold Ruzvidzo
    ------------------------------



  • 8.  RE: Data Module/Data set security

    Posted Tue May 11, 2021 03:55 PM
    Just to clarify my questions, will I be able to parameterize the dataset/data module to apply security based on logged in user who is running the Dashboard?

    ------------------------------
    Arnold Ruzvidzo
    ------------------------------



  • 9.  RE: Data Module/Data set security

    Posted Wed May 12, 2021 02:46 AM
    Edited by System Admin Fri January 20, 2023 04:51 PM
    This has been implemented in data modules.

    Here is an explanation on how it works
    SecurityColumn = queryValue('[SecurityTable].[SECURITYCODE]','[SecurityTable].[UPN] = ' +sq($account.personalInfo.email))#​​
    SecurityColumn is the column to be used in the data, that has the data for row level security.
    [SecurityTable].[SECURITYCODE] is the column in the lookup table that has each users security credentials.
    [SecurityTable].[UPN] is the column with all users e-mail address.
    $account.personalInfo.email is session parameter, showing logged in user's e-mail address.

    So the function takes the logged in user's e-mail and returns the row in the lookup table by filtering where UPN=email.
    Securitycode is the users access right code, that is then matched with the column in the data table. SQL then ends with

    where SecurityColumn = [SecurityTable].[SECURITYCODE]

    Meaning I will only see the rows where securritycolumn matches securitycode for the user running the report/dashboard

    ------------------------------
    Sandeep Dhirad
    Elkjøp Nordic
    ------------------------------



  • 10.  RE: Data Module/Data set security

    Posted Thu May 13, 2021 09:11 AM
    Thanks Sandeep, nicely explained.

    ------------------------------
    Arnold Ruzvidzo
    ------------------------------



  • 11.  RE: Data Module/Data set security

    Posted Fri May 14, 2021 03:29 AM
    Hi, If you're struggling with personal identifiers, you may also take into account using Cognos Data Source Connection security to separate Cognos user groups. We're using separate database users for the user groups and filter row columns by database user name. It's working well.

    ------------------------------
    Philipp Hornung
    ------------------------------