Gestione account e privilegi per un'istanza di una tabella da DBMS o da progettazione

di il
3 risposte

Gestione account e privilegi per un'istanza di una tabella da DBMS o da progettazione

Salve a tutti!
Scusate la genericità della domanda, ma so ancora quale DBMS utilizzare e non sapevo in che sezione scrivere se non in questa.
So che tramite il DBMS (qualsiasi esso sia) è possibile gestisce gli account e privilegi, ma è lui a crearmi una tabella ACCOUNT con username e password o devo crearla io in fase di progettazione?
Se me la crea lui, è possibile creare account e dare privilegi per una determinata istanza di una tabella. Ad esempio se ho una tabella MEDICO con un flag per indicare se è di base o specialista, posso dare dei privilegi diversi in base a tale flag (es: 005678, marco rossi, medico specialista può inserire i referti; 05684, luigi bianchi, medico di base può leggere i referti; entrambi avranno un account con privilegi diversi)?
La domanda viene posta dal momento che un MEDICO può essere sia di base sia specialista quindi non posso creare due tabelle distinte altrimenti avrei duplicazione dei dati.

3 Risposte

  • Re: Gestione account e privilegi per un'istanza di una tabella da DBMS o da progettazione

    Un po' in ritardo, ma la risposta e' questa:

    tu stai facendo riferimento a DUE gruppi di utenti TOTALMENTE DISTINTI:

    1) gli utenti che hanno i PRIVILEGI per accedere al DBMS, ed hanno o meno i diritti di

    1.a) accedere ad un database
    1.b) creare/cancellare/modificare tabelle/viste/trigger/...
    1.c) inserire/modificare/cancellare record in una o piu' tabelle

    2) gli utenti gestiti dalla TUA APPLICAZIONE, per le sue necessita'. Questi utenti, (A PARTE CASI ESTREMAMENTE SPECIFICI , E RARI), NON HANNO NULLA a che vedere con il primo gruppo. QUESTI utenti li DEVE gestire la tua applicazione, mentre la tua applicazione si AUTENTICA verso il DBMS con uno degli utenti del punto 1).
  • Re: Gestione account e privilegi per un'istanza di una tabella da DBMS o da progettazione

    Non è che siano poi totalmente distinti, anzi.
    L'approccio canonico, poco sicuro, è il 2). In questa ipotesi è la tua applicazione a controllare se l'utente (dell'applicazione) tizio può fare o non fare qualcosa.
    Per le situazioni a maggior sicurezza si adottano entrambi, 1 e 2.
    Ovvero gli utenti dell'applicazione (2) vengono fatti corrispondere a utenti DIVERSI del RDBMS (1).
    Ciò può avvenire per gruppo o per singolo, a seconda della granularità richiesta.

    Questo al fine di aggiungere un livello ulteriore di sicurezza, soprattutto avendo utenti che sono tutti limitati (nessun utente amministratore può usare l'applicazione).

    Operativamente (parliamo ad esempio di mysql) è prassi comune creare delle viste delle tabelle che sono legate agli utenti del database secondo una qualche regola.
    Poi avrai i singoli GRANT anche a livello addirittura di singolo campo, ottenendo quindi una combinazione di selezione e proiezione sui campi medesimi.
    ---
    Facciamo qualche esempio: supponiamo di avere una tabella importante (es. esami medici) composta da 1000 righe e 10 campi.
    Supponiamo che alcuni di questi campi possano essere visibili ad utenti diversi, ad esempio i medici vedono tutti e 10, gli specialisti ne vedono 5 e magari le segretarie 3.
    Puoi creare delle viste del tipo

    select campo1,campo2,campo3 from tabella where gruppo_utente="segreteria"
    oppure
    select campo1,campo2,campo3,campo4,campo5 from tabella where gruppo_utente="specialista"

    e

    select * from tabella where gruppo_utente="medico"
    magari
    select * from tabella where utente="superman"

    Al login mantenendo allineato utenti DB ed applicazioni avrai tante viste diverse quanti utenti (o gruppi di utenti), pertanto l'applicazione utilizzerà ad esempio l'utente TIZIO del database, il quale opererà su una vista delle tabelle.
  • Re: Gestione account e privilegi per un'istanza di una tabella da DBMS o da progettazione

    Ok grazie per l'aiuto! La sicurezza non deve mai mancare
    Effettivamente i due concetti sono legati tra loro in quanto devo memorizzare le credenziali in una tabella e poi dare anche dei privilegi tramite un RDBMS per permettere solo agli specialisti determinate operazioni sui dati.
Devi accedere o registrarti per scrivere nel forum
3 risposte