SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Protect Sensitive Data:
Implementing Fine-Grained
Access Control
Nelson Calero
Pythian
•Database Consultant at Pythian
•Working with Oracle tools and Linux environments since 1996
•DBA Oracle (2001) & MySQL (2005)
•Co-founder and President of the Oracle user Group of Uruguay (2009)
•LAOUC Director of events (2013)
•Computer Engineer
•Oracle ACE (2014)
•Oracle Certified Professional DBA 10g/11g (2008)
•Amazon Solutions Architect – Associate since (2016)
•Oracle University Instructor (2011)
•Blogger and speaker: Oracle Open World, Collaborate, OTN Tour, Regional conferences
About me
4 Š 2014 Pythian Confidential
http://www.linkedin.com/in/ncalero @ncalerouy
Pythian overview
Š 2015 Pythian Confidential5
• 19 Years of data infrastructure management consulting
• 250+ Top brands
• 11700+ Systems under management
• Over 400 DBAs in 35 countries
• Top 5% of DBA work force, 10 Oracle ACEs, 4 ACED,
3 OakTable members, 2 OCM, 6 Microsoft MVPs,
1 Cloudera Champion of Big Data,
AWS Certified Solutions Architect – 2 Professional, 12 Associate
• Oracle, Microsoft, MySQL, Hadoop, Cassandra, MongoDB, and more
• Infrastructure, Cloud, DevOps, and application expertise
Today’s topics
• What is Fine Grain Access control?
• Functionalities available with Oracle
• Implementing row level security
– With standard edition
– Using OLS
– Using VPD
– Using RAS
• Complex scenarios
Š 2015 Pythian Confidential6
Fine Grain Access control?
What
– Ability to restrict access to objects applying small granularity
• row level instead of table level
• network services instead of all network access
Why
– Access to data comply with security regulations
– Industry regulations: health care (HIPAA), Defense (security clearances), Personal
information protection (several).
• database side implementation => no code on the application side
– Several functionalities available (next slide)
• We will discuss implementation and management from database point of view
Š 2015 Pythian Confidential7
Oracle functionalities for FG control
• auditing
• DBMS_FGA package (only in EE)
• external network services and wallets
• DBMS_NETWORK_ACL_ADMIN package
• data – several ways:
• Application context – available in SE
• Virtual Private Database (VPD) – 8i
– Only with EE, no extra cost
• Oracle Label Security (OLS) – 8i
– Only with EE, Extra cost option
• Oracle Real Application Security – new in 12c
– Next generation VPD, only with EE, no extra cost
Š 2015 Pythian Confidential8
Simple example
Š 2015 Pythian Confidential9
Policy
rules
SMAVRIS
user
JDANIEL
Manager 103
Select * From
HR.EMPLOYEES
Simple example
What do I need to implement it?
– It depends on your requirements
Functionalities available out of the box for free?
– limited, needs maintenance, will explore them next
Many functionalities with EE with no extra cost
– Only OLS have extra cost
Š 2015 Pythian Confidential10
Simple example - demo
Implementing a simple VPD on SE
– Schema owner of data not allowed to connect from app
– Views for each table including a where condition
– Nominated users granted access to views only
– Usage of application context
script: fga-se.sql
Š 2015 Pythian Confidential11
Application contexts
• session variables to store information
• useful to implement FGAC with Standard Edition
• session (local) or global (shared)
– select sys_context(namespace, attribute) from dual;
– dbms_session.set_context(namespace, attribute, value, client_id)
• built-in application context namespace: USERENV
– select sys_context('USERENV', 'SESSION_USER')from dual;
• Dictionary views
– V$CONTEXT / V$GLOBALCONTEXT
• Memory footprint
– select * from v$sgastat where name like 'Global Context%';
https://docs.oracle.com/database/121/DBSEG/app_context.htm#DBSEG173
Š 2015 Pythian Confidential12
Poor man VPD problems
• Users with different privileges over the same data?
– More views per privilege set / coding logic into function / intermediate
table/...
– It is up to your coding abilities
• Different policies for insert/update/deletes?
– More views per policies / coding logic into functions /…
• Modified data will match the condition?
– Triggers to validate after data modifications / manual controls
Š 2015 Pythian Confidential13
Other implications
• Changes in query performance?
– Review indexes to cover all new conditions
• Connection pools at middle tier
– Proxy user and client_identifier usage
ALTER USER john GRANT CONNECT THROUGH appsrv;
oracle.jdbc.OracleConnection.setClientIdentifier()  from JDBC
exec dbms_session.set_identifier ('ABCD')  same from PL/SQL
Š 2015 Pythian Confidential14
General implementation principles
Before coding, design your policies:
– Identify tables that requires security
– Evaluate its data and define level of security and groups
– Categorize users (privileged / typical / etc.)
As part of the coding:
– Lock down access to configuration – least privilege principle
– Audit operations
Š 2015 Pythian Confidential15
Today’s topics
• What is Fine Grain Access control?
• Functionalities available with Oracle
• Implementing row level security
– With standard edition
– Using VPD
– Using OLS
– Using RAS
• Complex scenarios
Š 2015 Pythian Confidential16
Virtual Private Database (VPD)
“interface to associate PL/SQL packages with application tables
to compute and append a predicate (where clause) that is
automatically appended to incoming SQL statements, restricting
access to rows and columns within the table”
http://www.oracle.com/technetwork/database/security/real-application-security/overview/index.html
• Package DBMS_RLS to manage policies
• View DBA_POLICIES to view existing policies
• View V$VPD_POLICY to see predicates generated for SQL_IDs
• Different policies can be used for SELECT/INSERT/UPDATE/DELETE
• Multiple policies allowed per table
Š 2015 Pythian Confidential17
Virtual Private Database (VPD) - example
script: fga-vpd.sql
Summary:
• Policy function using static and dynamic predicates
• Errors when querying base table on some cases
• Adding extra code to allow privileged user access
• Testing SELECT/UPDATE
Š 2015 Pythian Confidential18
Policies evaluation
• Defined by the policy type:
– Dynamic – evaluated every time is used
– Static – executed only once and cached
– Context_sensitive – evaluated if context change (useful on connection pooling)
– Shared_static – cache over multiple objects
– Shared_context_sensitive – combine previous two
• policy exemptions:
– direct path export
– cannot be applied to objects in schema SYS
– EXEMPT ACCESS POLICY privilege
• MERGE INTO statements supported on tables using VPD since 11gR2
• ORA_ROWSCN usage has problems
Š 2015 Pythian Confidential19
Policy function
• No validation on the code we create – it fails at runtime if wrong
• Code can use whatever we want to produce the string
– Performance overhead depending on the policy type when evaluating
– Execution plans may change because of the new condition in use
• String returned may be different for different tables (FK relationships, etc.)
• It can be applied to columns, not entire table
– Column masking vs row masking
• Access to policy function definition should be protected
Š 2015 Pythian Confidential20
VPD - Column masking
BEGIN
DBMS_RLS.ADD_POLICY(object_schema=>’HR’,
object_name=>'EMPLOYEES',
policy_name=>'SEC_SALARY',
function_schema=>‘HR',
policy_function=>'f_protect_salary',
sec_relevant_cols=>'SALARY',
sec_relevant_cols_opt=>dbms_rls.ALL_ROWS);
END;
create or replace function f_protect_salary (p_owner in varchar2, p_name in varchar2)
return varchar2 as
begin
if sys_context('userenv', 'session_user') = 'MANAGER'
then return ‘1=1’; /* value is displayed */
else return 'salary <= 10000'; /* displayed only if match condition */
end if;
end;
Š 2015 Pythian Confidential21
policy_function is treated
as a Boolean expression to
decide if column values are
shown
VPD – update check
New in 11.2:
BEGIN
DBMS_RLS.ADD_POLICY(object_schema=>user,
object_name=>'EMPLOYEES',
policy_name=>'SEC_SALARY',
function_schema=>'LBACSYS',
policy_function=>'f_protect_salary',
update_check=>true);
END;
SQL> Update hr.employees set salary=salary*2;
ERROR at line 1:
ORA-28115: policy with check option violation
Š 2015 Pythian Confidential22
policy_function is enforced
also after updates
Policies troubleshooting
• What condition (policy) is being applied to my query?
– v$vpd_policy
• When errors, trace file is generated on user_dump_dest
• Debugging
– Trace 10730 / 10060
Š 2015 Pythian Confidential23
Today’s topics
• What is Fine Grain Access control?
• Functionalities available with Oracle
• Implementing row level security
– With standard edition
– Using VPD
– Using OLS
– Using RAS
• Complex scenarios
Š 2015 Pythian Confidential24
Oracle Label Security (OLS)
• Based on tags for data
• Hierarchical classification: levels / compartments / groups
• Access to data granted based on policies without manual coding
– Using predefined PL/SQL packages, not user created as in VPD
– policy can be applied to table or schema
• When labels are used, a (hidden) column is created when policy is applied to tables
• Administration:
– User LBACSYS to manage policies
– SA_USER_ADMIN package - to manage user labels and user privileges
– SA_SESSION package to configure Labels & Privileges
– several SA_* views
– DBA_OLS_STATUS view shows if OLS is enabled and configured
Š 2015 Pythian Confidential25
Oracle Label Security (OLS) – labels example
Š 2015 Pythian Confidential26
Oracle Label Security (OLS) - example
script: fga-ols.sql
Summary:
define label hierarchy
define policies
test policies from users with different privileges
validate predicates used
Š 2015 Pythian Confidential27
Oracle Label Security (OLS)
Not enabled by default
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';
VALUE
--------------------------------------------
FALSE
select * from DBA_OLS_STATUS;
NAME STATUS DESCRIPTION
-------------------- ------ -------------------------------------
OLS_CONFIGURE_STATUS FALSE Determines if OLS is configured
OLS_DIRECTORY_STATUS FALSE Determines if OID is enabled with OLS
OLS_ENABLE_STATUS FALSE Determines if OLS is enabled
Š 2015 Pythian Confidential28
Oracle Label Security (OLS) - install
On 12c:
EXEC LBACSYS.CONFIGURE_OLS;
EXEC LBACSYS.OLS_ENFORCEMENT.ENABLE_OLS;
On 11g:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk lbac_on ioracle
(same as: chopt enable lbac)
shutdown/startup
sqlplus @?/rdbms/admin/catols.sql
Š 2015 Pythian Confidential29
Oracle Label Security (OLS) - labels
label_to_char (OLS_COLUMN)
Display string label instead of internal code
sa_session.label(‘policy_name')
current user’s session label for the policy
OLS_LABEL_DOMINATES (session_tag, desired_tag)
returns 1 when first label is allowed for the second one
New in 12.1 - LBACSYS schema can be exported using full export/import
source>=11.2.0.3, target>=12.1
Š 2015 Pythian Confidential30
Oracle Label Security (OLS) - DML
Labeling column implications:
• column values set using labeling function or manually
oracle-base example
• affects initial configuration and inserts
create function f_label(..)
RETURN LBACSYS.LBAC_LABEL
..
RETURN TO_LBAC_DATA_LABEL('label', string);
end;
exec SA_POLICY_ADMIN.APPLY_TABLE_POLICY
(...label_function => 'f_label(..)')
Š 2015 Pythian Confidential31
Today’s topics
• What is Fine Grain Access control?
• Functionalities available with Oracle
• Implementing row level security
– With standard edition
– Using VPD
– Using OLS
– Using RAS
• Complex scenarios
Š 2015 Pythian Confidential32
Oracle Real Application Security (RAS)
“A database authorization model:
• Supports declarative security policies
• Enables end-to-end security for multitier applications
• Provides an integrated solution to secure database and application
resources
• Advances the security architecture of Oracle Database to meet
existing and emerging demands of applications developed for the
Internet”
https://docs.oracle.com/database/121/DBFSG/intro.htm#DBFSG10000
Š 2015 Pythian Confidential33
Š 2015 Pythian Confidential34 https://docs.oracle.com/database/121/DBFSG/intro.htm#BABHAIFD
Oracle Real Application Security (RAS) concepts
Application users – schema-less to create application session
Application role (static/dynamic)
Application privileges
Security class – set of privileges
Access control entry (ACE)
– grant/deny application privileges to principals
Access control list (ACL)
– named list of privilege grants bound to resources
Data realm
– business object defined by SQL predicate authorized by an ACL
– Regular / parameterized / inherited
Data security policy
– protect realms associating ACLs
Š 2015 Pythian Confidential35
Oracle Real Application Security (RAS)
• Application sessions – not bounded to database schemas
• PL/SQL and Java API
• Administration Application (RASADM) in APEX to download from OTN
http://www.oracle.com/technetwork/database/security/real-application-security/downloads/index.html
• HR Demo from java
https://docs.oracle.com/database/121/DBFSG/midtierjava.htm#CBBDJDDE
Š 2015 Pythian Confidential36
Oracle Real Application Security (RAS) - example
scripts: ras-*.sql
Usage from PL/SQL
http://docs.oracle.com/database/121/DBFSG/security_hr_demo_tutorial.htm#DBFSG816
based on hrdemo*.sql scripts
Summary:
row filtering and column masking
realm with errors and troubleshooting
Š 2015 Pythian Confidential37
Oracle Real Application Security (RAS)
New hidden column to enforce policy: SYS_ACLOID
begin
xs_data_security.apply_object_policy(
policy => 'hr.employees_ds',
row_acl=> true ,
schema => 'hr',
object => 'employees');
end;
/
select column_name from dba_tab_cols
where table_name='EMPLOYEES' and hidden_column='YES';
Š 2015 Pythian Confidential38
Oracle Real Application Security (RAS)
Static policies (data realms):
XS$REALM_CONSTRAINT_TYPE(realm=> 'DEPARTMENT_ID=50',
acl_list=> XS$NAME_LIST('HRACL'),
is_static=> TRUE); -- default is FALSE
Materialized view generated automatically to keep binding between
rows and ACL
Change the ACL refresh mode to on-commit or on-demand refresh
XS_DATA_SECURITY_UTIL.ALTER_STATIC_ACL_REFRESH
Š 2015 Pythian Confidential39
Oracle Real Application Security (RAS)
ACLs evaluation order:
1) application user-managed ACLs - from grants directly on object instances
2) ACLs from static data realm constraint grants are evaluated next
3) ACLs from dynamic data realm constraint grants are evaluated last
To see realms associated with tables:
DBA_XS_REALM_CONSTRAINTS
DBA_XS_* and DBA_XDS_* views to see all related data to RAS
ras-check.sql script
Š 2015 Pythian Confidential40
Oracle Real Application Security (RAS)
Parameters in data realm rules – definition
1) rows_sec := xs$REALM_CONSTRAINT_LIST(
XS$REALM_CONSTRAINT_TYPE(
realm => 'COUNTRY_REGION = &' || 'REGION'));
2) sys.xs_data_security.create_policy(
name => 'SH.CUSTOMER_DS',
realm_constraint_list => rows_secs,
description => 'Policy to protect sh.customers table');
3) sys.xs_data_security.create_acl_parameter(
policy => 'SH.CUSTOMER_DS',
parameter => 'REGION',
param_type => XS_ACL.TYPE_VARCHAR);
Š 2015 Pythian Confidential41
Oracle Real Application Security (RAS)
Parameters in data realm rules – usage when creating ACL
DECLARE
ace_list XS$ACE_LIST;
BEGIN
ace_list := XS$ACE_LIST(
XS$ACE_TYPE(privilege_list => XS$NAME_LIST('SELECT'),
granted => true,
principal_name => 'Americas_sales'),
XS$ACE_TYPE(privilege_list => XS$NAME_LIST('SELECT', 'VIEW_SENSITIVE_INFO'),
granted => true,
principal_name => 'Business_Analyst'));
sys.xs_acl.create_acl(name => 'View_Americas_sales',
ace_list => ace_list,
sec_class => 'SH.CUST_SEC_CLASS',
description => 'Authorize read access for the Americas region');
sys.xs_acl.add_acl_parameter(acl => 'View_Americas_sales',
policy => 'SH.CUSTOMER_DS',
parameter => 'REGION',
value => 'Americas');
END;
/
Š 2015 Pythian Confidential42
Oracle Real Application Security (RAS) - Trace
• V$VPD_POLICY works
• dump all the data realm constraint rules:
ALTER SESSION SET EVENTS 'TRACE[XSXDS] disk=high';
• dump the VPD views of the XDS-enabled table during the initial
(hard) parse
ALTER SESSION SET EVENTS 'TRACE[XSVPD] disk=high';
Š 2015 Pythian Confidential43
Oracle Real Application Security (RAS)
• Default passwords for RAS users are created with SHA2 hashes.
SQL Developer uses JDBC which does not support SHA512 hashes.
Need to specify SHA1 passwords for those cases:
exec XS_PRINCIPAL.SET_PASSWORD('john', 'john',xs_principal.XS_SALTED_SHA1);
• SA_SESSION.SET_ACCESS_PROFILE
– To implement proxy accounts with application users
– SA_SESSION.SA_USER_NAME function to see the current username
Š 2015 Pythian Confidential44
Today’s topics
• What is Fine Grain Access control?
• Functionalities available with Oracle
• Implementing row level security
– With standard edition
– Using VPD
– Using OLS
– Using RAS
• Complex scenarios
Š 2015 Pythian Confidential45
Complex scenarios?
• Combined with other functionalities
– Oracle Internet Directory
– Result cache, Materialized views, non-deterministic functions, etc.
• Mixed application usages of same data – vpd + non vpd
– Views for applying policies, base table access for non-vpd
– Grants / synonyms to control access to correct ones
• Multiple policies
– Combined condition should be valid
– Definition challenge when applied to multiple tables
Š 2015 Pythian Confidential46
Performance considerations
– Traditional tuning - considering final user + policy conditions for SQLs
• V$VPD_POLICY to start
– Optimizer does not estimate cardinality when using functions in policies
• id= SYS_CONTEXT('USERENV', 'SESSION_USER');
• Id=10 => it does
Š 2015 Pythian Confidential47
Changes in different versions
• 9i
– Multiple policies per table. Global contexts.
• 10g
– Column based policies, column masking, policy types
• 11g
– Support for MERGE INTO statement
• 12c
– RAS
– VPD context-sensitive policies – evaluated only if associated
application context attribute changes
Š 2015 Pythian Confidential48
Auditing - OLS
12c - unified auditing
• enabling and disabling of OLS policies, etc.
SELECT * FROM AUDITABLE_SYSTEM_ACTIONS WHERE COMPONENT = 'Label Security';
• example:
CREATE AUDIT POLICY audit_ols
ACTIONS SELECT ON OE.ORDERS
ACTIONS COMPONENT=OLS ALL;
• Oracle Label Security session label attributes can be audited
AUDIT CONTEXT NAMESPACE ORA_SESSION_LABELS ATTRIBUTES lsec_pol1, lsec_pol2;
• Auditing Oracle Label Security Events: https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG454
• SYS.UNIFIED_AUDIT_TRAIL.xs_user_name for RAS db connections, XS$NULL on sys.aud$
Pre-12c auditing (OLS):
• using SA_AUDIT_ADMIN package
https://docs.oracle.com/database/121/OLSAG/packages.htm#GUID-C4FB5E20-D9B8-48A1-9DDB-1ACA4722846E
Š 2015 Pythian Confidential49
FGA options compared
Š 2015 Pythian Confidential50
Conclusions
• Several alternatives available with different functionality
• Some limitations exists, needs testing to validate it works for your
needs
• Access to packages that modify policies should be protected and
audited
• Don’t underestimate the effort needed to design the policies
• Changes in different versions
• RAS is brand new but should be used for all new developments
Š 2015 Pythian Confidential51
Questions?
52
calero@pythian.com
@ncalerouy
http://www.linkedin.com/in/ncalero
Š 2014 Pythian Confidential
References - documentation
– Oracle license 12c
https://docs.oracle.com/database/121/DBLIC/editions.htm#DBLIC110
– Oracle Label Security
https://docs.oracle.com/database/121/OLSAG/toc.htm
http://www.oracle.com/technetwork/database/options/label-security/label-security-wp-12c-1896140.pdf
– Oracle VPD
https://docs.oracle.com/database/121/TDPSG/GUID-92A1A94D-319C-4FB2-AEC3-B86415D72628.htm#TDPSG94442
– Oracle Real Application Security
http://www.oracle.com/technetwork/database/security/real-application-security/overview/index.html
– Auditing Oracle Label Security Events
https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG454
- Application context
https://docs.oracle.com/database/121/DBSEG/app_context.htm#DBSEG172
53 Š 2014 Pythian Confidential
Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle

Weitere ähnliche Inhalte

Was ist angesagt?

Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Cloudera, Inc.
 
Presentation database security audit vault & database firewall
Presentation   database security audit vault & database firewallPresentation   database security audit vault & database firewall
Presentation database security audit vault & database firewallxKinAnx
 
SSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesSSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesNelson Calero
 
Apache Hadoop Security - Ranger
Apache Hadoop Security - RangerApache Hadoop Security - Ranger
Apache Hadoop Security - RangerIsheeta Sanghi
 
DB2 LUW - Backup and Recovery
DB2 LUW - Backup and RecoveryDB2 LUW - Backup and Recovery
DB2 LUW - Backup and Recoveryimranasayed
 
Performance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresPerformance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresJitendra Singh
 
Expose your data as an api is with oracle rest data services -spoug Madrid
Expose your data as an api is with oracle rest data services -spoug MadridExpose your data as an api is with oracle rest data services -spoug Madrid
Expose your data as an api is with oracle rest data services -spoug MadridVinay Kumar
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1Federico Campoli
 
AutoUpgrade and Best Practices
AutoUpgrade and Best PracticesAutoUpgrade and Best Practices
AutoUpgrade and Best PracticesJitendra Singh
 
Privilege Analysis with the Oracle Database
Privilege Analysis with the Oracle DatabasePrivilege Analysis with the Oracle Database
Privilege Analysis with the Oracle DatabaseMarkus Flechtner
 
Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...
Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...
Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...Odinot Stanislas
 
Best Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLBest Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLEDB
 
Comparison of ACFS and DBFS
Comparison of ACFS and DBFSComparison of ACFS and DBFS
Comparison of ACFS and DBFSDanielHillinger
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLRenÊ Cannaò
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenPostgresOpen
 

Was ist angesagt? (20)

Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0
 
Oracle ASM Training
Oracle ASM TrainingOracle ASM Training
Oracle ASM Training
 
Presentation database security audit vault & database firewall
Presentation   database security audit vault & database firewallPresentation   database security audit vault & database firewall
Presentation database security audit vault & database firewall
 
SSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesSSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprises
 
Apache Hadoop Security - Ranger
Apache Hadoop Security - RangerApache Hadoop Security - Ranger
Apache Hadoop Security - Ranger
 
Manage users & tables in Oracle Database
Manage users & tables in Oracle DatabaseManage users & tables in Oracle Database
Manage users & tables in Oracle Database
 
DB2 LUW - Backup and Recovery
DB2 LUW - Backup and RecoveryDB2 LUW - Backup and Recovery
DB2 LUW - Backup and Recovery
 
Performance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresPerformance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and Underscores
 
Expose your data as an api is with oracle rest data services -spoug Madrid
Expose your data as an api is with oracle rest data services -spoug MadridExpose your data as an api is with oracle rest data services -spoug Madrid
Expose your data as an api is with oracle rest data services -spoug Madrid
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1
 
AutoUpgrade and Best Practices
AutoUpgrade and Best PracticesAutoUpgrade and Best Practices
AutoUpgrade and Best Practices
 
Privilege Analysis with the Oracle Database
Privilege Analysis with the Oracle DatabasePrivilege Analysis with the Oracle Database
Privilege Analysis with the Oracle Database
 
Oracle Database 12c : Multitenant
Oracle Database 12c : MultitenantOracle Database 12c : Multitenant
Oracle Database 12c : Multitenant
 
Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...
Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...
Ceph: Open Source Storage Software Optimizations on IntelÂŽ Architecture for C...
 
Best Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLBest Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQL
 
Comparison of ACFS and DBFS
Comparison of ACFS and DBFSComparison of ACFS and DBFS
Comparison of ACFS and DBFS
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQL
 
Get to know PostgreSQL!
Get to know PostgreSQL!Get to know PostgreSQL!
Get to know PostgreSQL!
 
Oracle DBA
Oracle DBAOracle DBA
Oracle DBA
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
 

Andere mochten auch

Sql server 2012 & big data
Sql server 2012 & big dataSql server 2012 & big data
Sql server 2012 & big datapersiandeveloper
 
Vpd Virtual Private Database By Saurabh
Vpd   Virtual Private Database By SaurabhVpd   Virtual Private Database By Saurabh
Vpd Virtual Private Database By Saurabhguestd83b546
 
Real Application Security (RAS) and Oracle Application Express (APEX)
Real Application Security (RAS) and Oracle Application Express (APEX)Real Application Security (RAS) and Oracle Application Express (APEX)
Real Application Security (RAS) and Oracle Application Express (APEX)Dimitri Gielis
 
Portfolio Serious Ambtenaar II
Portfolio Serious Ambtenaar IIPortfolio Serious Ambtenaar II
Portfolio Serious Ambtenaar IIseriousambtenaar
 
Authorization - it's not just about who you are
Authorization - it's not just about who you areAuthorization - it's not just about who you are
Authorization - it's not just about who you areDavid Brossard
 
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Nelson Calero
 

Andere mochten auch (6)

Sql server 2012 & big data
Sql server 2012 & big dataSql server 2012 & big data
Sql server 2012 & big data
 
Vpd Virtual Private Database By Saurabh
Vpd   Virtual Private Database By SaurabhVpd   Virtual Private Database By Saurabh
Vpd Virtual Private Database By Saurabh
 
Real Application Security (RAS) and Oracle Application Express (APEX)
Real Application Security (RAS) and Oracle Application Express (APEX)Real Application Security (RAS) and Oracle Application Express (APEX)
Real Application Security (RAS) and Oracle Application Express (APEX)
 
Portfolio Serious Ambtenaar II
Portfolio Serious Ambtenaar IIPortfolio Serious Ambtenaar II
Portfolio Serious Ambtenaar II
 
Authorization - it's not just about who you are
Authorization - it's not just about who you areAuthorization - it's not just about who you are
Authorization - it's not just about who you are
 
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
 

Ähnlich wie Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle

Oracle Enterprise Manager 12c: updates and upgrades.
Oracle Enterprise Manager 12c: updates and upgrades.Oracle Enterprise Manager 12c: updates and upgrades.
Oracle Enterprise Manager 12c: updates and upgrades.Rolta
 
Expanding with EDB Postgres Advanced Server 9.5
Expanding with EDB Postgres Advanced Server 9.5Expanding with EDB Postgres Advanced Server 9.5
Expanding with EDB Postgres Advanced Server 9.5EDB
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityGeorgi Kodinov
 
Design and Deploy Secure Clouds for Financial Services Use Cases
Design and Deploy Secure Clouds for Financial Services Use CasesDesign and Deploy Secure Clouds for Financial Services Use Cases
Design and Deploy Secure Clouds for Financial Services Use CasesPLUMgrid
 
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan InstabilityLVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan InstabilityMaris Elsins
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0StĂĽle Deraas
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1Ivan Ma
 
The Changing Role of a DBA in an Autonomous World
The Changing Role of a DBA in an Autonomous WorldThe Changing Role of a DBA in an Autonomous World
The Changing Role of a DBA in an Autonomous WorldMaria Colgan
 
Presentation database security enhancements with oracle
Presentation   database security enhancements with oraclePresentation   database security enhancements with oracle
Presentation database security enhancements with oraclexKinAnx
 
Con9573 managing the oim platform with oracle enterprise manager
Con9573 managing the oim platform with oracle enterprise manager Con9573 managing the oim platform with oracle enterprise manager
Con9573 managing the oim platform with oracle enterprise manager OracleIDM
 
OUG Harmony 2012 - Using SQL Plan Baselines for Performance Testing
OUG Harmony 2012 -  Using SQL Plan Baselines for Performance TestingOUG Harmony 2012 -  Using SQL Plan Baselines for Performance Testing
OUG Harmony 2012 - Using SQL Plan Baselines for Performance TestingMaris Elsins
 
Baltimore jan2019 mule4
Baltimore jan2019 mule4Baltimore jan2019 mule4
Baltimore jan2019 mule4ManjuKumara GH
 
MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021Ieva Navickaite
 
Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...
Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...
Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...VMware Tanzu
 
Architecture Concepts
Architecture ConceptsArchitecture Concepts
Architecture ConceptsPratip Mallik
 
gkkCloudtechnologyassociate(cta)day 2
gkkCloudtechnologyassociate(cta)day 2gkkCloudtechnologyassociate(cta)day 2
gkkCloudtechnologyassociate(cta)day 2Anne Starr
 
MySQL Enterprise Portfolio
MySQL Enterprise PortfolioMySQL Enterprise Portfolio
MySQL Enterprise PortfolioAbel FlĂłrez
 
Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)
Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)
Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)Andrejs Prokopjevs
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 Geir Høydalsvik
 

Ähnlich wie Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle (20)

Oracle Enterprise Manager 12c: updates and upgrades.
Oracle Enterprise Manager 12c: updates and upgrades.Oracle Enterprise Manager 12c: updates and upgrades.
Oracle Enterprise Manager 12c: updates and upgrades.
 
Expanding with EDB Postgres Advanced Server 9.5
Expanding with EDB Postgres Advanced Server 9.5Expanding with EDB Postgres Advanced Server 9.5
Expanding with EDB Postgres Advanced Server 9.5
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: security
 
Design and Deploy Secure Clouds for Financial Services Use Cases
Design and Deploy Secure Clouds for Financial Services Use CasesDesign and Deploy Secure Clouds for Financial Services Use Cases
Design and Deploy Secure Clouds for Financial Services Use Cases
 
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan InstabilityLVOUG meetup #2 - Forcing SQL Execution Plan Instability
LVOUG meetup #2 - Forcing SQL Execution Plan Instability
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1
 
The Changing Role of a DBA in an Autonomous World
The Changing Role of a DBA in an Autonomous WorldThe Changing Role of a DBA in an Autonomous World
The Changing Role of a DBA in an Autonomous World
 
Presentation database security enhancements with oracle
Presentation   database security enhancements with oraclePresentation   database security enhancements with oracle
Presentation database security enhancements with oracle
 
BVT_Swamy_Abap_4
BVT_Swamy_Abap_4BVT_Swamy_Abap_4
BVT_Swamy_Abap_4
 
Con9573 managing the oim platform with oracle enterprise manager
Con9573 managing the oim platform with oracle enterprise manager Con9573 managing the oim platform with oracle enterprise manager
Con9573 managing the oim platform with oracle enterprise manager
 
OUG Harmony 2012 - Using SQL Plan Baselines for Performance Testing
OUG Harmony 2012 -  Using SQL Plan Baselines for Performance TestingOUG Harmony 2012 -  Using SQL Plan Baselines for Performance Testing
OUG Harmony 2012 - Using SQL Plan Baselines for Performance Testing
 
Baltimore jan2019 mule4
Baltimore jan2019 mule4Baltimore jan2019 mule4
Baltimore jan2019 mule4
 
MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021
 
Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...
Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...
Integrating Hybrid Cloud Database-as-a-Service with Cloud Foundry’s Service​ ...
 
Architecture Concepts
Architecture ConceptsArchitecture Concepts
Architecture Concepts
 
gkkCloudtechnologyassociate(cta)day 2
gkkCloudtechnologyassociate(cta)day 2gkkCloudtechnologyassociate(cta)day 2
gkkCloudtechnologyassociate(cta)day 2
 
MySQL Enterprise Portfolio
MySQL Enterprise PortfolioMySQL Enterprise Portfolio
MySQL Enterprise Portfolio
 
Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)
Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)
Security of Oracle EBS - How I can Protect my System (UKOUG APPS 18 edition)
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
 

Mehr von Nelson Calero

Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Nelson Calero
 
Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Nelson Calero
 
Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Nelson Calero
 
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Nelson Calero
 
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Nelson Calero
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Nelson Calero
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Nelson Calero
 
Practical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsPractical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsNelson Calero
 
Automate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationAutomate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationNelson Calero
 
Welcome to databases in the Cloud
Welcome to databases in the CloudWelcome to databases in the Cloud
Welcome to databases in the CloudNelson Calero
 
Redefining tables online without surprises
Redefining tables online without surprisesRedefining tables online without surprises
Redefining tables online without surprisesNelson Calero
 
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Nelson Calero
 
My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cNelson Calero
 
Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Nelson Calero
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerNelson Calero
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLNelson Calero
 
MariaDB y FOSS en infraestructura de salud y estĂĄndares
MariaDB y FOSS en infraestructura de salud y estĂĄndaresMariaDB y FOSS en infraestructura de salud y estĂĄndares
MariaDB y FOSS en infraestructura de salud y estĂĄndaresNelson Calero
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresNelson Calero
 
Collaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsCollaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsNelson Calero
 
Collaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryCollaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryNelson Calero
 

Mehr von Nelson Calero (20)

Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023
 
Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022
 
Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021
 
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
 
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0
 
Practical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsPractical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environments
 
Automate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationAutomate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operation
 
Welcome to databases in the Cloud
Welcome to databases in the CloudWelcome to databases in the Cloud
Welcome to databases in the Cloud
 
Redefining tables online without surprises
Redefining tables online without surprisesRedefining tables online without surprises
Redefining tables online without surprises
 
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
 
My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12c
 
Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con Pacemaker
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
 
MariaDB y FOSS en infraestructura de salud y estĂĄndares
MariaDB y FOSS en infraestructura de salud y estĂĄndaresMariaDB y FOSS en infraestructura de salud y estĂĄndares
MariaDB y FOSS en infraestructura de salud y estĂĄndares
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New features
 
Collaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsCollaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAs
 
Collaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryCollaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mystery
 

KĂźrzlich hochgeladen

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

KĂźrzlich hochgeladen (20)

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle

  • 1.
  • 2. Protect Sensitive Data: Implementing Fine-Grained Access Control Nelson Calero Pythian
  • 3.
  • 4. •Database Consultant at Pythian •Working with Oracle tools and Linux environments since 1996 •DBA Oracle (2001) & MySQL (2005) •Co-founder and President of the Oracle user Group of Uruguay (2009) •LAOUC Director of events (2013) •Computer Engineer •Oracle ACE (2014) •Oracle Certified Professional DBA 10g/11g (2008) •Amazon Solutions Architect – Associate since (2016) •Oracle University Instructor (2011) •Blogger and speaker: Oracle Open World, Collaborate, OTN Tour, Regional conferences About me 4 Š 2014 Pythian Confidential http://www.linkedin.com/in/ncalero @ncalerouy
  • 5. Pythian overview Š 2015 Pythian Confidential5 • 19 Years of data infrastructure management consulting • 250+ Top brands • 11700+ Systems under management • Over 400 DBAs in 35 countries • Top 5% of DBA work force, 10 Oracle ACEs, 4 ACED, 3 OakTable members, 2 OCM, 6 Microsoft MVPs, 1 Cloudera Champion of Big Data, AWS Certified Solutions Architect – 2 Professional, 12 Associate • Oracle, Microsoft, MySQL, Hadoop, Cassandra, MongoDB, and more • Infrastructure, Cloud, DevOps, and application expertise
  • 6. Today’s topics • What is Fine Grain Access control? • Functionalities available with Oracle • Implementing row level security – With standard edition – Using OLS – Using VPD – Using RAS • Complex scenarios Š 2015 Pythian Confidential6
  • 7. Fine Grain Access control? What – Ability to restrict access to objects applying small granularity • row level instead of table level • network services instead of all network access Why – Access to data comply with security regulations – Industry regulations: health care (HIPAA), Defense (security clearances), Personal information protection (several). • database side implementation => no code on the application side – Several functionalities available (next slide) • We will discuss implementation and management from database point of view Š 2015 Pythian Confidential7
  • 8. Oracle functionalities for FG control • auditing • DBMS_FGA package (only in EE) • external network services and wallets • DBMS_NETWORK_ACL_ADMIN package • data – several ways: • Application context – available in SE • Virtual Private Database (VPD) – 8i – Only with EE, no extra cost • Oracle Label Security (OLS) – 8i – Only with EE, Extra cost option • Oracle Real Application Security – new in 12c – Next generation VPD, only with EE, no extra cost Š 2015 Pythian Confidential8
  • 9. Simple example Š 2015 Pythian Confidential9 Policy rules SMAVRIS user JDANIEL Manager 103 Select * From HR.EMPLOYEES
  • 10. Simple example What do I need to implement it? – It depends on your requirements Functionalities available out of the box for free? – limited, needs maintenance, will explore them next Many functionalities with EE with no extra cost – Only OLS have extra cost Š 2015 Pythian Confidential10
  • 11. Simple example - demo Implementing a simple VPD on SE – Schema owner of data not allowed to connect from app – Views for each table including a where condition – Nominated users granted access to views only – Usage of application context script: fga-se.sql Š 2015 Pythian Confidential11
  • 12. Application contexts • session variables to store information • useful to implement FGAC with Standard Edition • session (local) or global (shared) – select sys_context(namespace, attribute) from dual; – dbms_session.set_context(namespace, attribute, value, client_id) • built-in application context namespace: USERENV – select sys_context('USERENV', 'SESSION_USER')from dual; • Dictionary views – V$CONTEXT / V$GLOBALCONTEXT • Memory footprint – select * from v$sgastat where name like 'Global Context%'; https://docs.oracle.com/database/121/DBSEG/app_context.htm#DBSEG173 Š 2015 Pythian Confidential12
  • 13. Poor man VPD problems • Users with different privileges over the same data? – More views per privilege set / coding logic into function / intermediate table/... – It is up to your coding abilities • Different policies for insert/update/deletes? – More views per policies / coding logic into functions /… • Modified data will match the condition? – Triggers to validate after data modifications / manual controls Š 2015 Pythian Confidential13
  • 14. Other implications • Changes in query performance? – Review indexes to cover all new conditions • Connection pools at middle tier – Proxy user and client_identifier usage ALTER USER john GRANT CONNECT THROUGH appsrv; oracle.jdbc.OracleConnection.setClientIdentifier()  from JDBC exec dbms_session.set_identifier ('ABCD')  same from PL/SQL Š 2015 Pythian Confidential14
  • 15. General implementation principles Before coding, design your policies: – Identify tables that requires security – Evaluate its data and define level of security and groups – Categorize users (privileged / typical / etc.) As part of the coding: – Lock down access to configuration – least privilege principle – Audit operations Š 2015 Pythian Confidential15
  • 16. Today’s topics • What is Fine Grain Access control? • Functionalities available with Oracle • Implementing row level security – With standard edition – Using VPD – Using OLS – Using RAS • Complex scenarios Š 2015 Pythian Confidential16
  • 17. Virtual Private Database (VPD) “interface to associate PL/SQL packages with application tables to compute and append a predicate (where clause) that is automatically appended to incoming SQL statements, restricting access to rows and columns within the table” http://www.oracle.com/technetwork/database/security/real-application-security/overview/index.html • Package DBMS_RLS to manage policies • View DBA_POLICIES to view existing policies • View V$VPD_POLICY to see predicates generated for SQL_IDs • Different policies can be used for SELECT/INSERT/UPDATE/DELETE • Multiple policies allowed per table Š 2015 Pythian Confidential17
  • 18. Virtual Private Database (VPD) - example script: fga-vpd.sql Summary: • Policy function using static and dynamic predicates • Errors when querying base table on some cases • Adding extra code to allow privileged user access • Testing SELECT/UPDATE Š 2015 Pythian Confidential18
  • 19. Policies evaluation • Defined by the policy type: – Dynamic – evaluated every time is used – Static – executed only once and cached – Context_sensitive – evaluated if context change (useful on connection pooling) – Shared_static – cache over multiple objects – Shared_context_sensitive – combine previous two • policy exemptions: – direct path export – cannot be applied to objects in schema SYS – EXEMPT ACCESS POLICY privilege • MERGE INTO statements supported on tables using VPD since 11gR2 • ORA_ROWSCN usage has problems Š 2015 Pythian Confidential19
  • 20. Policy function • No validation on the code we create – it fails at runtime if wrong • Code can use whatever we want to produce the string – Performance overhead depending on the policy type when evaluating – Execution plans may change because of the new condition in use • String returned may be different for different tables (FK relationships, etc.) • It can be applied to columns, not entire table – Column masking vs row masking • Access to policy function definition should be protected Š 2015 Pythian Confidential20
  • 21. VPD - Column masking BEGIN DBMS_RLS.ADD_POLICY(object_schema=>’HR’, object_name=>'EMPLOYEES', policy_name=>'SEC_SALARY', function_schema=>‘HR', policy_function=>'f_protect_salary', sec_relevant_cols=>'SALARY', sec_relevant_cols_opt=>dbms_rls.ALL_ROWS); END; create or replace function f_protect_salary (p_owner in varchar2, p_name in varchar2) return varchar2 as begin if sys_context('userenv', 'session_user') = 'MANAGER' then return ‘1=1’; /* value is displayed */ else return 'salary <= 10000'; /* displayed only if match condition */ end if; end; Š 2015 Pythian Confidential21 policy_function is treated as a Boolean expression to decide if column values are shown
  • 22. VPD – update check New in 11.2: BEGIN DBMS_RLS.ADD_POLICY(object_schema=>user, object_name=>'EMPLOYEES', policy_name=>'SEC_SALARY', function_schema=>'LBACSYS', policy_function=>'f_protect_salary', update_check=>true); END; SQL> Update hr.employees set salary=salary*2; ERROR at line 1: ORA-28115: policy with check option violation Š 2015 Pythian Confidential22 policy_function is enforced also after updates
  • 23. Policies troubleshooting • What condition (policy) is being applied to my query? – v$vpd_policy • When errors, trace file is generated on user_dump_dest • Debugging – Trace 10730 / 10060 Š 2015 Pythian Confidential23
  • 24. Today’s topics • What is Fine Grain Access control? • Functionalities available with Oracle • Implementing row level security – With standard edition – Using VPD – Using OLS – Using RAS • Complex scenarios Š 2015 Pythian Confidential24
  • 25. Oracle Label Security (OLS) • Based on tags for data • Hierarchical classification: levels / compartments / groups • Access to data granted based on policies without manual coding – Using predefined PL/SQL packages, not user created as in VPD – policy can be applied to table or schema • When labels are used, a (hidden) column is created when policy is applied to tables • Administration: – User LBACSYS to manage policies – SA_USER_ADMIN package - to manage user labels and user privileges – SA_SESSION package to configure Labels & Privileges – several SA_* views – DBA_OLS_STATUS view shows if OLS is enabled and configured Š 2015 Pythian Confidential25
  • 26. Oracle Label Security (OLS) – labels example Š 2015 Pythian Confidential26
  • 27. Oracle Label Security (OLS) - example script: fga-ols.sql Summary: define label hierarchy define policies test policies from users with different privileges validate predicates used Š 2015 Pythian Confidential27
  • 28. Oracle Label Security (OLS) Not enabled by default SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security'; VALUE -------------------------------------------- FALSE select * from DBA_OLS_STATUS; NAME STATUS DESCRIPTION -------------------- ------ ------------------------------------- OLS_CONFIGURE_STATUS FALSE Determines if OLS is configured OLS_DIRECTORY_STATUS FALSE Determines if OID is enabled with OLS OLS_ENABLE_STATUS FALSE Determines if OLS is enabled Š 2015 Pythian Confidential28
  • 29. Oracle Label Security (OLS) - install On 12c: EXEC LBACSYS.CONFIGURE_OLS; EXEC LBACSYS.OLS_ENFORCEMENT.ENABLE_OLS; On 11g: cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk lbac_on ioracle (same as: chopt enable lbac) shutdown/startup sqlplus @?/rdbms/admin/catols.sql Š 2015 Pythian Confidential29
  • 30. Oracle Label Security (OLS) - labels label_to_char (OLS_COLUMN) Display string label instead of internal code sa_session.label(‘policy_name') current user’s session label for the policy OLS_LABEL_DOMINATES (session_tag, desired_tag) returns 1 when first label is allowed for the second one New in 12.1 - LBACSYS schema can be exported using full export/import source>=11.2.0.3, target>=12.1 Š 2015 Pythian Confidential30
  • 31. Oracle Label Security (OLS) - DML Labeling column implications: • column values set using labeling function or manually oracle-base example • affects initial configuration and inserts create function f_label(..) RETURN LBACSYS.LBAC_LABEL .. RETURN TO_LBAC_DATA_LABEL('label', string); end; exec SA_POLICY_ADMIN.APPLY_TABLE_POLICY (...label_function => 'f_label(..)') Š 2015 Pythian Confidential31
  • 32. Today’s topics • What is Fine Grain Access control? • Functionalities available with Oracle • Implementing row level security – With standard edition – Using VPD – Using OLS – Using RAS • Complex scenarios Š 2015 Pythian Confidential32
  • 33. Oracle Real Application Security (RAS) “A database authorization model: • Supports declarative security policies • Enables end-to-end security for multitier applications • Provides an integrated solution to secure database and application resources • Advances the security architecture of Oracle Database to meet existing and emerging demands of applications developed for the Internet” https://docs.oracle.com/database/121/DBFSG/intro.htm#DBFSG10000 Š 2015 Pythian Confidential33
  • 34. Š 2015 Pythian Confidential34 https://docs.oracle.com/database/121/DBFSG/intro.htm#BABHAIFD
  • 35. Oracle Real Application Security (RAS) concepts Application users – schema-less to create application session Application role (static/dynamic) Application privileges Security class – set of privileges Access control entry (ACE) – grant/deny application privileges to principals Access control list (ACL) – named list of privilege grants bound to resources Data realm – business object defined by SQL predicate authorized by an ACL – Regular / parameterized / inherited Data security policy – protect realms associating ACLs Š 2015 Pythian Confidential35
  • 36. Oracle Real Application Security (RAS) • Application sessions – not bounded to database schemas • PL/SQL and Java API • Administration Application (RASADM) in APEX to download from OTN http://www.oracle.com/technetwork/database/security/real-application-security/downloads/index.html • HR Demo from java https://docs.oracle.com/database/121/DBFSG/midtierjava.htm#CBBDJDDE Š 2015 Pythian Confidential36
  • 37. Oracle Real Application Security (RAS) - example scripts: ras-*.sql Usage from PL/SQL http://docs.oracle.com/database/121/DBFSG/security_hr_demo_tutorial.htm#DBFSG816 based on hrdemo*.sql scripts Summary: row filtering and column masking realm with errors and troubleshooting Š 2015 Pythian Confidential37
  • 38. Oracle Real Application Security (RAS) New hidden column to enforce policy: SYS_ACLOID begin xs_data_security.apply_object_policy( policy => 'hr.employees_ds', row_acl=> true , schema => 'hr', object => 'employees'); end; / select column_name from dba_tab_cols where table_name='EMPLOYEES' and hidden_column='YES'; Š 2015 Pythian Confidential38
  • 39. Oracle Real Application Security (RAS) Static policies (data realms): XS$REALM_CONSTRAINT_TYPE(realm=> 'DEPARTMENT_ID=50', acl_list=> XS$NAME_LIST('HRACL'), is_static=> TRUE); -- default is FALSE Materialized view generated automatically to keep binding between rows and ACL Change the ACL refresh mode to on-commit or on-demand refresh XS_DATA_SECURITY_UTIL.ALTER_STATIC_ACL_REFRESH Š 2015 Pythian Confidential39
  • 40. Oracle Real Application Security (RAS) ACLs evaluation order: 1) application user-managed ACLs - from grants directly on object instances 2) ACLs from static data realm constraint grants are evaluated next 3) ACLs from dynamic data realm constraint grants are evaluated last To see realms associated with tables: DBA_XS_REALM_CONSTRAINTS DBA_XS_* and DBA_XDS_* views to see all related data to RAS ras-check.sql script Š 2015 Pythian Confidential40
  • 41. Oracle Real Application Security (RAS) Parameters in data realm rules – definition 1) rows_sec := xs$REALM_CONSTRAINT_LIST( XS$REALM_CONSTRAINT_TYPE( realm => 'COUNTRY_REGION = &' || 'REGION')); 2) sys.xs_data_security.create_policy( name => 'SH.CUSTOMER_DS', realm_constraint_list => rows_secs, description => 'Policy to protect sh.customers table'); 3) sys.xs_data_security.create_acl_parameter( policy => 'SH.CUSTOMER_DS', parameter => 'REGION', param_type => XS_ACL.TYPE_VARCHAR); Š 2015 Pythian Confidential41
  • 42. Oracle Real Application Security (RAS) Parameters in data realm rules – usage when creating ACL DECLARE ace_list XS$ACE_LIST; BEGIN ace_list := XS$ACE_LIST( XS$ACE_TYPE(privilege_list => XS$NAME_LIST('SELECT'), granted => true, principal_name => 'Americas_sales'), XS$ACE_TYPE(privilege_list => XS$NAME_LIST('SELECT', 'VIEW_SENSITIVE_INFO'), granted => true, principal_name => 'Business_Analyst')); sys.xs_acl.create_acl(name => 'View_Americas_sales', ace_list => ace_list, sec_class => 'SH.CUST_SEC_CLASS', description => 'Authorize read access for the Americas region'); sys.xs_acl.add_acl_parameter(acl => 'View_Americas_sales', policy => 'SH.CUSTOMER_DS', parameter => 'REGION', value => 'Americas'); END; / Š 2015 Pythian Confidential42
  • 43. Oracle Real Application Security (RAS) - Trace • V$VPD_POLICY works • dump all the data realm constraint rules: ALTER SESSION SET EVENTS 'TRACE[XSXDS] disk=high'; • dump the VPD views of the XDS-enabled table during the initial (hard) parse ALTER SESSION SET EVENTS 'TRACE[XSVPD] disk=high'; Š 2015 Pythian Confidential43
  • 44. Oracle Real Application Security (RAS) • Default passwords for RAS users are created with SHA2 hashes. SQL Developer uses JDBC which does not support SHA512 hashes. Need to specify SHA1 passwords for those cases: exec XS_PRINCIPAL.SET_PASSWORD('john', 'john',xs_principal.XS_SALTED_SHA1); • SA_SESSION.SET_ACCESS_PROFILE – To implement proxy accounts with application users – SA_SESSION.SA_USER_NAME function to see the current username Š 2015 Pythian Confidential44
  • 45. Today’s topics • What is Fine Grain Access control? • Functionalities available with Oracle • Implementing row level security – With standard edition – Using VPD – Using OLS – Using RAS • Complex scenarios Š 2015 Pythian Confidential45
  • 46. Complex scenarios? • Combined with other functionalities – Oracle Internet Directory – Result cache, Materialized views, non-deterministic functions, etc. • Mixed application usages of same data – vpd + non vpd – Views for applying policies, base table access for non-vpd – Grants / synonyms to control access to correct ones • Multiple policies – Combined condition should be valid – Definition challenge when applied to multiple tables Š 2015 Pythian Confidential46
  • 47. Performance considerations – Traditional tuning - considering final user + policy conditions for SQLs • V$VPD_POLICY to start – Optimizer does not estimate cardinality when using functions in policies • id= SYS_CONTEXT('USERENV', 'SESSION_USER'); • Id=10 => it does Š 2015 Pythian Confidential47
  • 48. Changes in different versions • 9i – Multiple policies per table. Global contexts. • 10g – Column based policies, column masking, policy types • 11g – Support for MERGE INTO statement • 12c – RAS – VPD context-sensitive policies – evaluated only if associated application context attribute changes Š 2015 Pythian Confidential48
  • 49. Auditing - OLS 12c - unified auditing • enabling and disabling of OLS policies, etc. SELECT * FROM AUDITABLE_SYSTEM_ACTIONS WHERE COMPONENT = 'Label Security'; • example: CREATE AUDIT POLICY audit_ols ACTIONS SELECT ON OE.ORDERS ACTIONS COMPONENT=OLS ALL; • Oracle Label Security session label attributes can be audited AUDIT CONTEXT NAMESPACE ORA_SESSION_LABELS ATTRIBUTES lsec_pol1, lsec_pol2; • Auditing Oracle Label Security Events: https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG454 • SYS.UNIFIED_AUDIT_TRAIL.xs_user_name for RAS db connections, XS$NULL on sys.aud$ Pre-12c auditing (OLS): • using SA_AUDIT_ADMIN package https://docs.oracle.com/database/121/OLSAG/packages.htm#GUID-C4FB5E20-D9B8-48A1-9DDB-1ACA4722846E Š 2015 Pythian Confidential49
  • 50. FGA options compared Š 2015 Pythian Confidential50
  • 51. Conclusions • Several alternatives available with different functionality • Some limitations exists, needs testing to validate it works for your needs • Access to packages that modify policies should be protected and audited • Don’t underestimate the effort needed to design the policies • Changes in different versions • RAS is brand new but should be used for all new developments Š 2015 Pythian Confidential51
  • 53. References - documentation – Oracle license 12c https://docs.oracle.com/database/121/DBLIC/editions.htm#DBLIC110 – Oracle Label Security https://docs.oracle.com/database/121/OLSAG/toc.htm http://www.oracle.com/technetwork/database/options/label-security/label-security-wp-12c-1896140.pdf – Oracle VPD https://docs.oracle.com/database/121/TDPSG/GUID-92A1A94D-319C-4FB2-AEC3-B86415D72628.htm#TDPSG94442 – Oracle Real Application Security http://www.oracle.com/technetwork/database/security/real-application-security/overview/index.html – Auditing Oracle Label Security Events https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG454 - Application context https://docs.oracle.com/database/121/DBSEG/app_context.htm#DBSEG172 53 Š 2014 Pythian Confidential