© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.

Slides:



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

Architettura MySQL E Motori MySQL L. Vigliano.
Modulo 1 – Ambiente di lavoro Windows 7
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Sicurezza e concorrenza nelle basi di dati
Stored Procedure Function Trigger
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
1 Comandi per la manipolazione dei dati. 2 Tipi di comandi INSERT UPDATE DELETE COMANDI COMANDI 2.
Biglietti e Ritardi: schema E/R
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 nuove funzioni della piattaforma Puntoedu lingue riservate ai Direttori dei corsi.
TCP_Wrapper Le richieste per un determinato servizio (ad. es. telnet, ftp, rsh, etc.) vengono soddisfatte soltanto se lindirizzo IP del richiedente rientra.
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:
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.
Fabrizio Grossi Verifica delle attività. L'operato degli amministratori di sistema deve essere oggetto, con cadenza almeno annuale, di un'attività
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.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
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.
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
Basi Dati e Laboratorio (6 + 6) crediti – curriculum Sistemi e Reti Basi dati 1 e Basi dati 2 prec.ordin. docenti: Barbara Demo Giuseppe Berio mail :
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
Procedure operative di sicurezza di un sistema informatizzato in un dipartimento servizi.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Le basi di dati.
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:

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati

© 2007 SEI-Società Editrice Internazionale, Apogeo Obiettivi Comprendere il significato di consistenza e accesso concorrente Comprendere il concetto di transazione e il suo utilizzo Comprendere i meccanismi di protezione dei dati e di protezione fisica della base di dati

© 2007 SEI-Società Editrice Internazionale, Apogeo Consistenza 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. Laccesso 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. © 2007 SEI-Società Editrice Internazionale, Apogeo

Accesso concorrente

© 2007 SEI-Società Editrice Internazionale, Apogeo Transazioni Una transazione è un insieme di operazioni indivisibili (atomiche), corrette anche in presenza di concorrenza e 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. © 2007 SEI-Società Editrice Internazionale, Apogeo

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 aggiorna X –T2 commit –T1 rilegge X © 2007 SEI-Società Editrice Internazionale, Apogeo Letture fantasma –T1 aggiorna X –T2 legge X –T1 fallisce (rollback)

Soluzioni ai problemi Lock in lettura (compatibile con altri lock in lettura) Lock in scrittura (blocco esclusivo della risorsa) © 2007 SEI-Società Editrice Internazionale, Apogeo

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

Esempi transazioni in SQLServer CREATE DATABASE [ProvaTransazioni] Use ProvaTransazioni CREATE TABLE [dbo].[Studenti]( [nome] [varchar](50) NOT NULL, [cognome] [varchar](50) NOT NULL ) © 2007 SEI-Società Editrice Internazionale, Apogeo

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 © 2007 SEI-Società Editrice Internazionale, Apogeo

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 © 2007 SEI-Società Editrice Internazionale, Apogeo

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 © 2007 SEI-Società Editrice Internazionale, Apogeo

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 © 2007 SEI-Società Editrice Internazionale, Apogeo

Prova HOLDLOCK /* In parallelo alla precedente transazione PRIMA di effettuare il COMMIT */ -- per la SELECT non ci sono problemi SELECT * FROM Studenti -- lUPDATE rimane bloccata fino al commit della transazione precedente UPDATE Studenti SET nome = 'Jack' WHERE cognome = 'Ferrari © 2007 SEI-Società Editrice Internazionale, Apogeo

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 © 2007 SEI-Società Editrice Internazionale, Apogeo

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 aspetta 3 secondi SELECT * FROM Studenti © 2007 SEI-Società Editrice Internazionale, Apogeo

Sicurezza nelle basi di dati Una base di dati è sicura quando soddisfa i seguenti parametri: –regola laccesso 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 lutente per accedere) RBAC – gli utenti sono associati a uno o più ruoli (gruppi) le risorse sono accessibili solo a ruoli specificati © 2007 SEI-Società Editrice Internazionale, Apogeo

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 © 2007 SEI-Società Editrice Internazionale, Apogeo

Autenticazione e autorizzazione

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') © 2007 SEI-Società Editrice Internazionale, Apogeo

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 lutente non ha i diritti © 2007 SEI-Società Editrice Internazionale, Apogeo

Diritti allutente 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 EXECUTE AS LOGIN = 'Utente1' SELECT * FROM dbo.Studenti -- non funziona autorizzazione negata PRINT USER -- Visualizzazione utent REVERT PRINT USER DROP DATABASE [ProvaSicurezza] © 2007 SEI-Società Editrice Internazionale, Apogeo