Sicurezza e concorrenza nelle basi di dati

Slides:



Advertisements
Presentazioni simili
VIA GIULIO RATTI, CREMONA – Tel. 0372/27524
Advertisements

CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( Password:… Dora in poi, in questi lucidi,
Architettura MySQL E Motori MySQL L. Vigliano.
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
1 Comandi per la manipolazione dei dati. 2 Tipi di comandi INSERT UPDATE DELETE COMANDI COMANDI 2.
Biglietti e Ritardi: schema E/R
Biglietti e Ritardi: schema E/R
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
UNIVERSITÀ DEGLI STUDI DI TERAMO FACOLTÀ DI SCIENZE DELLA COMUNICAZIONE MASTER UNIVERSITARIO DI I LIVELLO - COMUNICAZIONE e DIVULGAZIONE SCIENTIFICA Direttore.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
Sicurezza e Policy in Active Directory
Amministrazione di una rete con Active Directory
Amministrazione di una rete con Active Directory.
Amministrazione di una rete con Active Directory
SQL Structured Query Language
La Modifica dei Dati in una Base Dati La modifica dei dati contenuti allinterno di una base dati è unoperazione delicata Infatti, ogni potenziale problema.
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
SCHEDA INFORMATIVA DI UNITÀ
Sicurezza della Base di Dati
Basi di dati attive Paolo Atzeni.
Nataliya Rassadko SQL: Lezione 8 Nataliya Rassadko
Aspetti sistemistici dellSQL. SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi.
SQL Per la modifica di basi di dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
SIMULAZIONE RETE INTERNET INTERNET SERVICE PROVIDER GRUPPO 2 COMMESSA – INFORMATICA GRANATA Corso Sicurezza su Reti II Prof. A. De Santis Anno Accademico.
Le transazioni Itis Max Planck.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Daniel Stoilov Tesi di Laurea
Transazioni.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Distributed File System Service Dario Agostinone.
Basi di dati Claudia Raibulet
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Visual Basic e accesso ai DATABASE
DAGLI ARCHIVI AI DATABASE
Cos’è una transazione? Una transazione è un’unità logica di elaborazione richiesta da un’applicazione che dà luogo a una serie di operazioni fisiche elementari.
Corso di Basi di Dati Il Linguaggio SQL
Basi di Dati e Sistemi Informativi
sql: esempi di linguaggio sql nell'implementazione mysql
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Pagine ASP parte 3 I data base Stefano Schacherl.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
ATOMICITÀ Il tipo di atomicità di un programma PL/SQL è stabilito dall’ambiente chiamante oppure dal programma Gestione atomicità: –COMMIT –SAVEPOINT nome_punto.
Education & Training Training per Microsoft Access 97 Perché Education & Training ? Perché StartPoints crede nell’importanza strategica delle Risorse Umane.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
E 1.1 Esercizo sqlplus CREAZIONE UTENTE Connettetevi alla seguente URL: Identificatevi come: Username:
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Sistema distribuito per il controllo remoto di Software SCADA HMI Presentazione di Paolo di Francia Reti di Calcolatori LS a.a
Transazioni in MySQL 4 Transazioni in MySQL 4
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Le basi di dati.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Anno Architetture dati - DBMS Centralizzati Recovery management Carlo Batini.
Transcript della presentazione:

Sicurezza e concorrenza nelle basi di dati Unità D3 Sicurezza e concorrenza nelle basi di dati

Sicurezza nelle basi di dati Una base di dati è sicura quando soddisfa i seguenti parametri: regola l’accesso ai dati protetti; evita la modifica o la manipolazione dei dati da parte di utenti non autorizzati; è disponibile (nel momento in cui deve essere consultata è presente, consistente e coerente).

Controllo accesso DAC – controllo discrezionale Il proprietario decide chi può accedere alle risorse MAC – a ogni risorsa viene associata una label (livello di privilegio che deve possedere l’utente per accedere) RBAC – gli utenti sono associati a uno o più ruoli (gruppi) le risorse sono accessibili solo a ruoli specificati

Protezione e integrità dati Autenticazione (login – password) Tracciabilità – registrazione delle operazioni effettuate da un utente (file di log) Integrità mediante “giornale” (file di log database) che registra i dati coinvolti e le operazioni effettuate su questi. Checkpoint e ripristino Backup

Autenticazione e autorizzazione

T-SQL (Esempio sicurezza) CREATE DATABASE [ProvaSicurezza] Use ProvaSicurezza CREATE TABLE [dbo].[Studenti]( [nome] [varchar](50) NOT NULL, [cognome] [varchar](50) NOT NULL ) INSERT INTO Studenti VALUES ('Alberto', 'Paganuzzi') INSERT INTO Studenti VALUES ('Alberto', 'Ferrari')

Nuovo utente -- Creo un account di login sull'istanza DB Attuale CREATE LOGIN Utente1 WITH password = 'PassUtente1' USE ProvaSicurezza SELECT * FROM dbo.Studenti -- funziona perchè eseguito da owner -- Mi impersonifico in ‘Utente1' EXECUTE AS LOGIN = 'Utente1' -- non è possibile: l'utente non è inserito in quelli che possono -- accedere localmente al db ProvaSicurezza -- Aggiungo l'utente a quelli autorizzati all'accesso di ProvaSicurezza CREATE USER Utente1 EXECUTE AS LOGIN = 'Utente1' -- così funziona l'impersonificazione SELECT * FROM dbo.Studenti -- non funziona l’utente non ha i diritti

Diritti all’utente REVERT -- il controllo torna all'utente precedente -- autorizzo la select GRANT SELECT ON ProvaSicurezza.dbo.Studenti TO Utente1 EXECUTE AS LOGIN = 'Utente1' SELECT * FROM dbo.Studenti -- ora funziona utente autorizzato REVERT -- nego l'autorizzazione per la select REVOKE SELECT ON ProvaSicurezza.dbo.Studenti TO Utente1 SELECT * FROM dbo.Studenti -- non funziona autorizzazione negata PRINT USER -- Visualizzazione utent PRINT USER DROP DATABASE [ProvaSicurezza]

RBAC (Role-based access control) Gli utenti sono associati a uno o più ruoli (gruppi) le risorse sono accessibili solo a ruoli specificati Esempio: associo Utente1 al ruolo che gli permette l'accesso in lettura al database EXEC sp_addrolemember db_datareader, Utente1 Accesso in scrittura: EXEC sp_addrolemember db_datawriter, Utente1 Negazione dell’accesso in scrittura EXEC sp_droprolemember db_datawriter, Utente1

Consistenza di una Base di dati Modello : rappresentazione della realtà mediante un formalismo Inconsistenza : sfasamento fra realtà e modello che la rappresenta (database) (es. il DVD del film “…” è stato prestato ma risulta presente nel database) Consistenza : nessuna discrepanza tra la realtà fisica e il modello che la rappresenta.

Accesso concorrente Accesso concorrente: più utenti accedono a una stessa risorsa nello stesso istante. L’accesso concorrente è una delle cause principali dei problemi di inconsistenza delle basi di dati. Le soluzioni ai problemi di accesso concorrente sono basate su blocchi (lock) che operano come semafori e regolano il “traffico” verso le risorse.

Accesso concorrente

Transazioni Una transazione è un insieme di operazioni indivisibili (atomiche) corrette anche in presenza di concorrenza con effetti definitivi.

Caratteristiche di una transazione ACID atomicità (Atomicity). Una transazione viene portata a termine completamente o non viene effettuata; consistenza (Consistency). Prima e dopo la transazione la base di dati è sempre in uno stato consistente; isolamento (Isolation). Il database non viene modificato finchè la transazione non è conclusa (nessuno può vedere un risultato intermedio); permanenza (Durability). Una volta conclusa la transazione i dati sono in uno stato consistente e non possono essere ripristinati allo stato precedente.

commit - rollback Transazione terminata con successo (COMMIT) Transazione abortita (ROLLBACK)

Anomalie derivanti da accessi concorrenti Perdita di aggiornamenti T1 aggiorna X T2 aggiorna X T1 fallisce (rollback) T2 termina (commit) Letture non riproducibili T1 legge X T2 commit T1 rilegge X Letture fantasma T2 legge X

Soluzioni ai problemi Lock in lettura (compatibile con altri lock in lettura) Lock in scrittura (blocco esclusivo della risorsa)

Utilizzo delle transazioni Inizio transazione: BEGIN TRANSACTION <nome Transazione> Transazione terminata con successo: COMMIT TRANSACTION <nome Transazione> Transazione abortita: ROLLBACK TRANSACTION <nome Transazione>

Esempi transazioni in SQLServer CREATE DATABASE [ProvaTransazioni] Use ProvaTransazioni CREATE TABLE [dbo].[Studenti]( [nome] [varchar](50) NOT NULL, [cognome] [varchar](50) NOT NULL )

Transazione senza errori -- Primo esempio (in questo caso la transazione ha successo) BEGIN TRY -- costrutto try catch BEGIN TRANSACTION -- inizio transazione INSERT INTO Studenti VALUES ('Alberto', 'Paganuzzi') INSERT INTO Studenti VALUES ('Alberto', 'Ferrari') COMMIT TRANSACTION -- se non ci sono errori transazione completata END TRY BEGIN CATCH ROLLBACK TRANSACTION -- se ci sono errori transazione abortita END CATCH

Transazione con errori -- Secondo esempio di transazione -- (la transazione NON ha successo perché non viene rispettato -- il vincolo not null) BEGIN TRY BEGIN TRANSACTION INSERT INTO Studenti VALUES ('Giuseppe', null) COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH

Transazione con errori (2) -- Terzo esempio di transazione -- (la transazione NON ha successo) -- Non viene eseguita neppure al prima INSERT -- (anche se questa è corretta) BEGIN TRY BEGIN TRANSACTION INSERT INTO Studenti VALUES ('Paolo', 'Rossi') INSERT INTO Studenti VALUES ('Giuseppe', null) COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH

HOLDLOCK /* Permette di bloccare (in questo caso la tabella) in modo SHARE non permette che altri eseguano UPDATE ma permette altre SELECT */ BEGIN TRANSACTION SELECT * FROM Studenti WITH (HOLDLOCK) WHERE cognome = 'Paganuzzi' -- visualizza lo stato di lock SELECT resource_type, resource_associated_entity_id,request_mode,request_status FROM sys.dm_tran_locks dml INNER JOIN sys.dm_tran_current_transaction dmt ON dml.request_owner_id = dmt.transaction_id COMMIT TRANSACTION

Prova HOLDLOCK /* In parallelo alla precedente transazione PRIMA di effettuare il COMMIT */ -- per la SELECT non ci sono problemi SELECT * FROM Studenti -- l’UPDATE rimane bloccata fino al commit della transazione precedente UPDATE Studenti SET nome = 'Jack' WHERE cognome = 'Ferrari’

Blocco esclusivo -- UPDATE blocca la tabella in modo esclusivo BEGIN TRANSACTION UPDATE Studenti SET nome = 'Alberto' WHERE cognome = 'Ferrari' -- visualizza lo stato di lock SELECT resource_type, resource_associated_entity_id,request_mode,request_status FROM sys.dm_tran_locks dml INNER JOIN sys.dm_tran_current_transaction dmt ON dml.request_owner_id = dmt.transaction_id COMMIT TRANSACTION

Prova blocco esclusivo /* in parallelo testare le operazioni */ SELECT * FROM Studenti-- attende la conclusione della transazione -- Possibile stabilire il tempo di attesa prima di abortire una transazione SET LOCK_TIMEOUT 3000 -- aspetta 3 secondi SELECT * FROM Studenti