DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Oracle's native RBAC

La Padronanza di RBAC Nativo di Oracle: Una Guida Completa – Parte 2

RBAC Nativo di Oracle - Parte 2 Avanzata

4. Concetti Avanzati di RBAC Nativo di Oracle

L’implementazione di RBAC di Oracle offre funzionalità avanzate che forniscono ulteriore flessibilità e granularità nella gestione del controllo degli accessi. Esploriamo alcuni di questi concetti avanzati.

4.1 Gerarchie di Ruoli

Le gerarchie di ruoli consentono di stabilire relazioni padre-figlio tra ruoli. Un ruolo figlio ha gli stessi privilegi del suo ruolo padre. Il ruolo figlio riceve anche eventuali privilegi aggiuntivi concessi specificamente a esso. Ciò consente la creazione di una struttura gerarchica di ruoli, semplificando la gestione di politiche di controllo degli accessi complesse.

Per creare una gerarchia di ruoli in Oracle, si utilizza l’istruzione GRANT per concedere un ruolo a un altro ruolo. Ad esempio:

-- Creare un ruolo padre chiamato "manager"
CREATE ROLE manager;
-- Concedere privilegi al ruolo "manager"
GRANT SELECT, INSERT, UPDATE SULLE tabelle dipendenti A manager;
-- Creare un ruolo figlio chiamato "sales_manager"
CREATE ROLE sales_manager;
-- Concedere il ruolo "manager" al ruolo "sales_manager"
GRANT manager A sales_manager;
-- Concedere privilegi aggiuntivi specifici al ruolo "sales_manager"
GRANT SELECT SULLE vendite A sales_manager;

In questo esempio, creiamo un ruolo padre chiamato “manager” e gli concediamo privilegi sulla tabella “employees”. Poi creiamo un ruolo figlio chiamato “sales_manager” e gli concediamo il ruolo “manager”. Il sales manager ha tutti gli stessi privilegi di un manager, più privilegi extra relativi alle vendite.

Le gerarchie di ruoli semplificano la gestione dei privilegi impostando privilegi di base a livelli superiori e personalizzandoli a livelli inferiori. Questo riduce la ridondanza e facilita il mantenimento e l’aggiornamento delle politiche di controllo degli accessi.

4.2 Ruoli Applicativi Sicuri

Tipicamente, queste condizioni dipendono dall’esecuzione con successo di un pacchetto o funzione PL/SQL.

Per creare un ruolo applicativo sicuro in Oracle, utilizzare l’istruzione CREATE ROLE con la clausola IDENTIFIED USING. Questo pacchetto o funzione specifica quale ruolo dovrebbe essere abilitato. Ad esempio:

-- Creare un pacchetto PL/SQL per controllare le condizioni
CREATE OR REPLACE PACKAGE security_pkg IS
FUNCTION check_access RETURN BOOLEAN;
END security_pkg;
/
-- Creare un ruolo applicativo sicuro
CREATE ROLE secure_role IDENTIFIED USING security_pkg.check_access;
-- Concedere privilegi al ruolo applicativo sicuro
GRANT SELECT SUI dati sensibili A secure_role;

In questo esempio, creiamo un pacchetto PL/SQL chiamato “security_pkg” che contiene una funzione “check_access”. Questa funzione determina se il ruolo applicativo sicuro deve essere attivato. Considera fattori come l’indirizzo IP dell’utente, l’ora corrente e regole applicative specifiche.

Successivamente, creiamo un ruolo sicuro chiamato “secure_role” utilizzando la clausola IDENTIFIED USING e la funzione specificata “security_pkg.check_access”. Il ruolo viene abilitato solo quando la funzione “check_access” restituisce TRUE.

Concediamo accesso speciale al ruolo applicativo sicuro, in modo che gli utenti con il ruolo possano vedere i dati sensibili se soddisfano i requisiti.

I ruoli applicativi sicuri migliorano le misure di sicurezza complessive attivando i ruoli solo quando vengono soddisfatte determinate condizioni, aggiungendo ulteriore sicurezza. Questo impedisce l’accesso non autorizzato e aggiunge un ulteriore livello di controllo oltre ai metodi tradizionali di accesso basato sui ruoli.

4.3 Controllo degli Accessi Granulari (FGAC)

Il controllo degli accessi granulari (FGAC) nel RBAC nativo di Oracle consente di decidere chi può accedere ai dati basandosi su condizioni o attributi specifici e dettagliati. Questo significa che è possibile controllare l’accesso ai dati a un livello estremamente granulare.

Si può specificare esattamente chi ha il permesso di visualizzare o modificare certi dati. FGAC consente di limitare l’accesso basato su criteri o attributi specifici. Oracle offre strumenti come VPD e OLS per il controllo dettagliato degli accessi nei database.

VPD ti permette di aggiungere regole di sicurezza alle query SQL per una tabella o vista. Queste politiche possono far rispettare la sicurezza a livello di riga basata su attributi degli utenti o sul contesto dell’applicazione. Ad esempio:

-- Creare una funzione di politica VPD
CREATE OR REPLACE FUNCTION policy_func (
schema_var IN VARCHAR2,
table_var IN VARCHAR2
)
RETURN VARCHAR2
IS
BEGIN
RETURN 'department_id = SYS_CONTEXT(''USERENV'', ''DEPARTMENT_ID'')';
END;
/
-- Applicare la politica VPD a una tabella
BEGIN
DBMS_RLS.ADD_POLICY (
object_schema => 'HR',
object_name => 'EMPLOYEES',
policy_name => 'EMP_POLICY',
function_schema => 'HR',
policy_function => 'POLICY_FUNC',
statement_types => 'SELECT,UPDATE,DELETE',
update_check => TRUE
);
END;
/

In questo esempio, creiamo una funzione di politica VPD chiamata “policy_func”. Questa funzione genera una regola basata sull’ID dipartimento dell’utente. La funzione restituisce una condizione che assicura che gli utenti possano accedere solo ai record appartenenti al proprio dipartimento.

Successivamente, applichiamo la politica VPD sulla tabella “EMPLOYEES” utilizzando la procedura DBMS_RLS.ADD_POLICY. Specificiamo la funzione di politica e i tipi di istruzioni a cui si applica.

La politica VPD permette agli utenti di accedere e modificare i record che corrispondono al loro ID di dipartimento. Questo fornisce un controllo preciso a livello di riga.

Oracle Label Security (OLS) è un’altra funzionalità che consente il controllo degli accessi granulari basato sulle etichette di classificazione dei dati. OLS permette di etichettare le righe dei dati e controllare l’accesso basato sulle etichette degli utenti. Questo è particolarmente utile in ambienti con dati sensibili che richiedono una rigorosa riservatezza e segregazione dei dati.

Il controllo degli accessi granulari (FGAC) migliora RBAC aggiungendo livelli extra di sicurezza. Consente di far rispettare regole di accesso basate su attributi specifici dei dati o condizioni.

Controllo degli Accessi Basato su Attributi (ABAC)

ABAC è un modo per controllare l’accesso considerando gli attributi degli utenti, quelli delle risorse e l’ambiente per determinare i permessi di accesso. ABAC fornisce un approccio più dinamico e flessibile rispetto al tradizionale RBAC.

In ABAC, le politiche di controllo degli accessi sono definite basandosi sugli attributi invece che sui ruoli. Gli attributi sono caratteristiche che possono includere dettagli sugli utenti, dettagli sulle risorse e dettagli sull’ambiente.

I dettagli degli utenti possono includere il titolo di lavoro o il dipartimento. I dettagli delle risorse possono includere la classificazione dei dati o il livello di sensibilità. I dettagli ambientali possono includere l’ora del giorno o la posizione.

Oracle supporta ABAC attraverso varie funzionalità e tecnologie, come Oracle Entitlements Server (OES) e Oracle Access Manager (OAM). Queste soluzioni permettono di definire politiche basate su attributi ed applicarle a diverse applicazioni e risorse.

Ecco un esempio di come ABAC può essere implementato utilizzando Oracle Entitlements Server:

-- Definire attributi utente
CREATE ATTRIBUTE USER_ATTRIBUTES.JOB_TITLE VARCHAR(255);
CREATE ATTRIBUTE USER_ATTRIBUTES.DEPARTMENT VARCHAR(255);
CREATE ATTRIBUTE USER_ATTRIBUTES.SECURITY_CLEARANCE VARCHAR(255);
-- Definire attributi delle risorse
CREATE ATTRIBUTE RESOURCE_ATTRIBUTES.CLASSIFICATION VARCHAR(255);
CREATE ATTRIBUTE RESOURCE_ATTRIBUTES.SENSITIVITY_LEVEL VARCHAR(255);
-- Definire una politica ABAC
CREATE POLICY ACCESS_POLICY
GRANT VIEW ON RESOURCE
WHERE RESOURCE_ATTRIBUTES.CLASSIFICATION = 'CONFIDENTIAL'
AND USER_ATTRIBUTES.SECURITY_CLEARANCE >= 'SECRET'
AND USER_ATTRIBUTES.DEPARTMENT = 'FINANCE';

In questo esempio, parliamo dei dettagli dei titoli di lavoro e dei dipartimenti degli utenti, oltre che delle classificazioni e dei livelli di sensibilità delle risorse.

Abbiamo una politica chiamata “ACCESS_POLICY”. Questa politica permette solo agli utenti con una clearance di sicurezza ‘SECRET’ e del dipartimento ‘FINANCE’ di visualizzare risorse ‘CONFIDENTIAL’.

Le politiche ABAC possono essere più complesse e includere più attributi e condizioni. Il motore di valutazione delle politiche esamina i dettagli di utenti, risorse e ambiente per determinare se l’accesso deve essere concesso.

ABAC completa RBAC fornendo un approccio più granulare e dinamico al controllo degli accessi. Permette decisioni di controllo degli accessi più flessibili e consapevoli del contesto basate su una combinazione di attributi.

6. Liste di Controllo degli Accessi (ACL)

Le Liste di Controllo degli Accessi (ACL) sono un altro meccanismo per il controllo dell’accesso alle risorse. Le ACL sono utilizzate per specificare le autorizzazioni per singoli utenti o gruppi su oggetti o risorse specifici.

In Oracle, le ACL sono spesso utilizzate per gestire l’accesso a risorse di rete esterne, come servizi web o database remoti. Oracle fornisce un meccanismo ACL integrato attraverso il pacchetto DBMS_NETWORK_ACL_ADMIN.

Ecco un esempio di come creare un’ACL e concedere autorizzazioni utilizzando il pacchetto DBMS_NETWORK_ACL_ADMIN:

-- Creare un'ACL
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'my_acl.xml',
description => 'ACL per l'accesso a un servizio web esterno',
principal => 'HR_USER',
is_grant => TRUE,
privilege => 'connect'
);
END;
/ -- Assegnare l'ACL a un host di rete BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'my_acl.xml',
host => 'www.example.com',
lower_port => 80,
upper_port => 80
);
END;
/

In questo esempio, creiamo un’ACL chiamata “my_acl.xml” utilizzando la procedura DBMS_NETWORK_ACL_ADMIN.CREATE_ACL. Specifichiamo il principale (utente o ruolo) a cui l’ACL si applica, in questo caso, ‘HR_USER’. Impostiamo anche il permesso su ‘connect’, che consente al principale di stabilire una connessione alla risorsa esterna.

Successivamente, assegniamo l’ACL a un host di rete specifico utilizzando la procedura DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL. Specifichiamo il nome dell’ACL, il nome dell’host o l’indirizzo IP, e l’intervallo di porte a cui si applica l’ACL.

Con questa ACL in atto, l’utente ‘HR_USER’ sarà in grado di connettersi all’host di rete specificato sull’intervallo di porte designato.

Le ACL aiutano a controllare l’accesso a risorse esterne in dettaglio, lavorando insieme ai meccanismi di controllo degli accessi del database stesso. Sono utili per gestire le risorse di rete e assicurarsi che solo utenti o applicazioni autorizzati possano utilizzarle.

Questo conclude la Parte 2. Nell’ultima Parte 3 copriremo i Ruoli in modo più dettagliato.

Cerca soluzioni professionali per la sicurezza dei database? Unisciti a noi online per una sessione demo completa sulla gestione di Utenti e Ruoli in DataSunrise, offrendo soluzioni avanzate per i database Oracle. Scopri come semplificare il controllo degli accessi e migliorare la sicurezza con la nostra piattaforma intuitiva.

Successivo

Padronanza dell’RBAC Nativo di Oracle: Una Guida Completa – Parte 3

Padronanza dell’RBAC Nativo di Oracle: Una Guida Completa – Parte 3

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]