Oracle Label Security

Werbung
Oracle Label Security
(fine grained access control)
10. Februar 2004
Thomas Tretter, 10. Februar 2004
Oracle Label Security
1
Gliederung des Vortrags
• Nutzung dieser Funktion
• Installation
• Administration und Konfiguration
• Vorgehensweise
• Beispiele
• Fazit/Referenzen
Thomas Tretter, 10. Februar 2004
Oracle Label Security
2
Nutzung dieser Funktion
• weitergehende Berechtigung an Tabelleninhalten
definieren (row level security)
• verschiedene User sehen unterschiedlichen
Inhalt (Mandantenfähigkeit)
• Nutzung über integrierte Datenbank Packages
• verschiedene Sensitivitätslevel
Thomas Tretter, 10. Februar 2004
Oracle Label Security
3
Installation
• VPD, bzw Oracle Label Security (OLS) ist eine extra
Option und muss daher im Oracle Installer auch extra
ausgewählt werden (OLS wird defaultmäßig nicht mit
installiert
• Überprüfung:
> sqlplus /
SQL*Plus: Release 9.2.0.3.0 - Production on Wed Apr 23 13:45:26 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining
options
JServer Release 9.2.0.3.0 - Production
Thomas Tretter, 10. Februar 2004
Oracle Label Security
4
Installation
• Einspielen der Objekte (Oracle intern)
• Aufruf des Scripts:
$ORACLE_HOME/rdbms/admin/catols.sql
als User sys
• User: LBACSYS
• Role: LBAC_DBA
•
Oracle Label Security (OLS) ist eine Option von Oracle 9i. Bereits ab
Oracle 8i gab es etwas ähnliches: Row Level Securtity (RLS). Dies
Funktionalität wurde über das Package dbms_rls zugänglich gemacht. Die
Funktionsweise ist ähnlich.
Thomas Tretter, 10. Februar 2004
Oracle Label Security
5
Administration und Konfiguration
• Tool Oracle Policy Manager (ist Bestandteil der
Enterprise Manager Installation)
• Proceduren und Funktionen des Packages
SA_SYSDBA
Thomas Tretter, 10. Februar 2004
Oracle Label Security
6
Vorgehensweise
1. Anlegen der Policies
2. Definition der Komponenten von Labels: levels,
compartments,
groups
3. Identifizierung der Menge der korrekten Daten Lables, um
sie Tabellen und Zeilen zuzuordnen
4. Set Up der User Labels (für alle betroffenen User)
5. Zuordnung der Policies zu Tablellen und Schematas
6. User authorisieren
7. Updaten der Spalten der durch OLS geschützten Tablellen,
bzw Label Functions beim Insert der Tablellen
benutzen
8. Bitmap Index auf den Label Spalten Anlegen der Policies
anlegen (optional)
9. Anlegen und Authorisieren Trusted Program Units
(optional)
10. Auditing konfigurieren(optional))
Thomas Tretter, 10. Februar 2004
Oracle Label Security
7
Beispiel: Tabelle locations
Thomas Tretter, 10. Februar 2004
Oracle Label Security
8
1. Anlegen der Policies
PL/SQL Procedure:
EXECUTE SA_SYSDBA.CREATE_POLICY(
'FACILITY',
-- Policy
'FACLAB', -- hidden column
'READ_CONTROL,CHECK_CONTROL,LABEL_DEFAULT,HIDE'
default options
);
zugehörige View:
Thomas Tretter, 10. Februar 2004
--
DBA_SA_POLICIES
Oracle Label Security
9
2.1. Definition von Levels
PL/SQL Procedure:
EXEC SA_COMPONENTS.CREATE_LEVEL(
'FACILITY',
-- Policy
2000,
-- level Nummer (hoch=sensitiv)
'S',
-- Kurzname
'SENSITIVE'
-- voller Name
);
zugehörige View:
DBA_SA_LEVELS
• Mit Labels können aufsteigende Sensitivitäten abgebildet werden.
• Mit Compartments sind beliebige, wahllose Aufzählungen möglich.
• Mit Groups lassen sich Hierarchien (Baumstrukturen) nachbilden.
Thomas Tretter, 10. Februar 2004
Oracle Label Security
10
2.2. Definition von Compartments
PL/SQL Procedure:
EXEC SA_COMPONENTS.CREATE_COMPARTMENT(
'FACILITY',
-- Policy
100,
-- compartment Nummer
'ED',
-- Kurzname
'Education'
-- voller Name
);
zugehörige View:
Thomas Tretter, 10. Februar 2004
DBA_SA_COMPARTMENTS
Oracle Label Security
11
2.3. Definition von Groups
PL/SQL Procedure:
EXEC SA_COMPONENTS.CREATE_GROUP(
'FACILITY',
-- Policy
11,
-- group Nummer
'US',
-- Kurzname
'United States', -- voller Name
'G'
-- Kurzname der Vater Group
);
zugehörige View:
Thomas Tretter, 10. Februar 2004
DBA_SA_GROUPS
Oracle Label Security
12
2.4. Definition von Labels
PL/SQL Procedure:
EXEC SA_LABEL_ADMIN.CREATE_LABEL(
'FACILITY',
-- Policy
2011,
-- eindeutiger Label
'S::US'
-- zugehöriger Char String
(Level:Compertment:Group)
);
zugehörige View:
DBA_SA_LABELS (alle)
DBA_SA_DATA_LABELS (nur Data Labels)
Thomas Tretter, 10. Februar 2004
Oracle Label Security
13
2.4. Definition von User Labels
PL/SQL Procedure:
EXEC SA_USER_ADMIN.SET_USER_LABELS(
'FACILITY',
-- Policy
'PLANNING',
-- Username
'S::US,EUR,ASIA' -- Zugriffsrechte (level:compartment:group)
);
zugehörige View:
DBA_SA_LABELS (alle)
DBA_SA_USER_LABELS (nur User Labels)
DBA_SA_USER_LEVELS (nur User Levels)
DBA_SA_USER_COMPARTMENTS (nur
User Compartments)
DBA_SA_USER_GROUPS (nur User Groups)
Thomas Tretter, 10. Februar 2004
Oracle Label Security
14
2.5. Zuordnung der Policies zu Tabelle/Schema
PL/SQL Procedure:
begin
sa_policy_admin.apply_table_policy (
POLICY_NAME
=> 'FACILITY',
SCHEMA_NAME
=> 'HR',
TABLE_NAME
=> 'LOCATIONS',
TABLE_OPTIONS => NULL,
LABEL_FUNCTION => NULL,
PREDICATE
=> 'to_char(sysdate,' || '''' || 'd' || ''''
|| ')in (2,3,4,5,6)');
end;
PREDICATE ist eine Zusatzbedingung, die erfüllt sein muss
(hier: Zugriff nur zwischen 2.-6. des Monats)
zugehörige View:
DBA_SA_TABLE_POLICIES
Thomas Tretter, 10. Februar 2004
Oracle Label Security
15
3. User authorisieren
PL/SQL Procedure:
EXEC SA_USER_ADMIN.SET_USER_PRIVS (
'FACILITY',
-- Policy
'HR',
-- Schema ownwer
'FULL,PROFILE_ACCESS'
-- Privs
);
zugehörige View:
Thomas Tretter, 10. Februar 2004
DBA_SA_USERS
Oracle Label Security
16
4. Update der durch OLS geschützten Daten
SQL Statement:
update hr.locations set faclab =
char_to_label('FACILITY','S::ASIA')
where upper(city) in ('BEIJING','TOKYO');
Abfrage:
select city, substr(label_to_char(FACLAB),1,20)
fac from hr.locations;
Thomas Tretter, 10. Februar 2004
Oracle Label Security
17
Fazit
• eigene Erfahrungen
• von ‚innen nach außen‘ die Sicherheit aufbauen
• nur wenige Objekte mit OLS belegen
• genau Vorüberlegungen anstellen
• mehr Security behindert meistens auch den ‚normalen‘ Betrieb
• Referenzen
Oracle Doku
Metalink DocId 230980.1
Examples
Metalink DocId 99250.1
INSERT (8i)
Metalink DocId 171155.1
Thomas Tretter, 10. Februar 2004
Oracle Label Security Admin Guide (Part No. A96578-01)
Oracle Label Security – Concepts (Policies and Labels) and
Understanding Fine-Grained Access Control (DBMS_RLS) on
Install/Deinstall Oracle Label Security Data Dictionary in Oracle9i
Oracle Label Security
18
Herunterladen