Oracle Redaction with OBIEE — Oracle Analytics

Oracle Analytics Cloud and Server

Welcome to the Oracle Analytics Community: Please complete your User Profile and upload your Profile Picture

Oracle Redaction with OBIEE

Received Response
108
Views
6
Comments
kamrandb
kamrandb Rank 3 - Community Apprentice

Hello,

We have a requirement in which we are to hide sensitive data (on the column level) from specific OBIEE users based on roles assigned in EBS.

Our current setup: EBS (ERP source, holds all users) > Singly Sign On to OBIEE 11g (used for reporting).

We want to mask/redact data at the database level. I know OBIEE stores SQL queries that are run against the application, but does each query also have User information? Do these reside in the logs? If we have user information, we should be able to apply Redaction on the database side, correct?

Wanted to ask the Community if anyone has applied anything similar in their environments. Feel free to share your approaches to masking/redacting data. Any thoughts are appreciated.

Thanks!

Answers

  • Robert Angel
    Robert Angel Rank 8 - Analytics Strategist

    Sure, previously I have used a parallel process to row level security implemented in the business model layer against the physical column via a formula, essentially giving users true or false and putting it through a case statement to the extent of;

    case when user.col1key = true then underlying.columnHere else 'Redacted' end

    Obviously you need to reference the user to initialise the user.key for its various implementations.

    Cheap and cheerful, provided you have the underlying user / can see column data.... and provided there aren't too many columns involved!

  • kamrandb
    kamrandb Rank 3 - Community Apprentice

    Thanks for the response Robert. We tried this approach, and it works really well actually. But you're right, when we have a large number of columns and user role combinations, then the case statement gets pretty large and complex and could cause a heavy load on the server.

    Unfortunately, that is exactly the case for our situation. Several possible combinations of user roles and a growing list of columns (500+). So this is why I'm thinking of applying coming up with a method to conduct redaction on the database side instead. The ideal solution would be: as soon as a user from OBIEE fires a query, the database recognizes the user, applies the appropriate policy, and redacts the data before sending it to OBIEE to read.

  • Robert Angel
    Robert Angel Rank 8 - Analytics Strategist

    Have you looked into =>

    https://www.oracle.com/uk/database/database-vault/index.html

    It sounds like your solution scale has reached the point where the 'cheap' solution is no longer cost effective!

  • ArijitC
    ArijitC Rank 6 - Analytics Lead

    On the connection pool, you can add a physical query to update application context with user id(:USER).

    pastedImage_3.png

    Then use dbms_rls package to apply policy on the database table.

    https://docs.oracle.com/cd/B28359_01/network.111/b28531/app_context.htm#DBSEG011

    Check if the documentation helps.

    Thanks

    Arijit

  • John_K
    John_K Rank 5 - Community Champion

    Aside from using RLS, you can also use roles within OBIEE to restrict access on specific presentation columns. For example if you have a column "NI Number" you would double-click that column in the presentation area and select permissions.

    Then you would set your Authenticated User to No Access and specify only the specific roles you wish to access it. That way they don't even see the column available for selection. If you want to show the column but change the text then I'd recommend doing this at the database level - otherwise you're messing up your data model with security - they should ideally be separate. I posted an example of doing this in R12 here:

    Redacting Sensitive Data in Oracle 12c using Dbms_Redact - Beyond Blog

  • [Deleted User]
    [Deleted User] Rank 2 - Community Beginner

    +1 simple role-based access to presentation columns is MUCH more straight-forward

    Also @kamrandb : "I know OBIEE stores SQL queries that are run against the application" - No. OBIEE works with metadata models It is a semantic layer on top of data sources. If produces model-driven queries. It doesn't store any queries