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

Oracle's native RBAC

Padronanza del RBAC Nativo di Oracle – Parte 2

RBAC nativo di Oracle - Parte 2 Avanzato

4. Concetti Avanzati del RBAC Nativo di Oracle

L’implementazione del 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 i ruoli. Un ruolo figlio ha gli stessi privilegi del ruolo padre. Il ruolo figlio riceve anche eventuali privilegi aggiuntivi concessi specificamente ad esso. Ciò consente la creazione di una struttura gerarchica di ruoli, semplificando la gestione delle politiche di controllo degli accessi.

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

-- Creare un ruolo padre chiamato "manager"
CREATE ROLE manager;
-- Concedere privilegi al ruolo "manager"
GRANT SELECT, INSERT, UPDATE ON employees TO manager;
-- Creare un ruolo figlio chiamato "sales_manager"
CREATE ROLE sales_manager;
-- Concedere il ruolo "manager" al ruolo "sales_manager"
GRANT manager TO sales_manager;
-- Concedere privilegi aggiuntivi specifici per il ruolo "sales_manager"
GRANT SELECT ON sales TO sales_manager;

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

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

4.2 Ruoli Applicativi Sicuri

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

Per creare un ruolo applicativo sicuro in Oracle, si utilizza 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 verificare 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 ON sensitive_data TO 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 dovrebbe essere attivato. Considera fattori come l’indirizzo IP dell’utente, l’ora corrente e regole specifiche dell’applicazione.

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

Concediamo privilegi speciali al ruolo applicativo sicuro, così gli utenti con il ruolo che soddisfano i requisiti possono vedere i dati sensibili.

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

4.3 Controllo Granulare degli Accessi

Il controllo granulare degli accessi nel RBAC nativo di Oracle consente di limitare l’accesso ai dati in base a condizioni o attributi specifici. Questo significa che si può controllare l’accesso ai dati a un livello estremamente dettagliato.

È possibile specificare esattamente chi ha permesso di visualizzare o modificare determinati dati. Il FGAC offre la possibilità di restringere l’accesso basato su criteri o attributi specifici. Oracle offre strumenti come VPD e OLS per un controllo preciso degli accessi in database.

VPD consente di aggiungere regole di sicurezza alle query SQL per una tabella o visuale. Queste politiche possono imporre sicurezza a livello di riga basata su attributi utente o contesto applicativo. 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 del dipartimento dell’utente. La funzione restituisce una condizione che assicura che gli utenti possano accedere solo ai record appartenenti al proprio dipartimento.

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

La politica VPD consente agli utenti di accedere e modificare i record che corrispondono al loro ID dipartimento. Questo dà un controllo preciso sull’accesso a livello di riga.

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

Il controllo granulare degli accessi migliora il RBAC aggiungendo ulteriori livelli di sicurezza. Consente di applicare regole di accesso basate su attributi o condizioni specifici dei dati.

Controllo degli Accessi Basato su Attributi (ABAC)

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

In ABAC, le politiche di controllo degli accessi sono definite in base agli attributi piuttosto che ai ruoli. Gli attributi sono caratteristiche che possono includere dettagli dell’utente, dettagli delle risorse e dettagli ambientali.

I dettagli dell’utente 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 consentono di definire politiche basate su attributi e applicarle su diverse applicazioni e risorse.

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

-- Definire attributi degli utenti
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 titoli di lavoro e dei dipartimenti degli utenti, nonché delle classificazioni e dei livelli di sensibilità delle risorse.

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

Le politiche ABAC possono essere più complesse e includere più attributi e condizioni. Il motore di valutazione della politica esamina i dettagli dell’utente, della risorsa e dell’ambiente per determinare se l’accesso dovrebbe essere concesso.

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

Liste di Controllo degli Accessi (ACLs)

Le Liste di Controllo degli Accessi (ACL) sono un altro meccanismo per controllare l’accesso alle risorse. Le ACL vengono utilizzate per specificare i permessi 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 permessi utilizzando il pacchetto DBMS_NETWORK_ACL_ADMIN:

-- Creare una ACL
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'my_acl.xml',
description => 'ACL per accesso a servizio web esterno',
principal => 'HR_USER',
is_grant => TRUE,
privilege => 'connect'
);
END;
/ -- Assegnare la 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 una ACL chiamata “my_acl.xml” utilizzando la procedura DBMS_NETWORK_ACL_ADMIN.CREATE_ACL. Specifichiamo il principale (utente o ruolo) a cui si applica l’ACL, in questo caso, ‘HR_USER’. Impostiamo anche il permesso su ‘connect’, che consente al principale di stabilire una connessione alla risorsa esterna.

Successivamente, assegnamo 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 indirizzo IP e l’intervallo di porte a cui si applica l’ACL.

Con questa ACL in vigore, ‘HR_USER’ potrà connettersi all’host di rete specificato sulla gamma di porte designata.

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

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

Cerchi soluzioni professionali per la sicurezza del database? Unisciti a noi online per una completa sessione demo sulla gestione degli Utenti e dei 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

Gestire il RBAC Nativo di Oracle – Gestione Avanzata di Ruoli e Privilegi: Una Guida Completa – Parte 3

Gestire il RBAC Nativo di Oracle – Gestione Avanzata di Ruoli e Privilegi: 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]