none
Mostrare solo alcuni database ad un utente/i RRS feed

  • Domanda

  • Ciao a tutti...

    stavo facendo un po' di sperimentazioni... e mi sono chiesto se è possibile avendo creato un USER abilitare unicamente la visione e quindi accesso a 2/3 database. Ho capito come farlo solo su 1, con il permission a livello di istanza DENY...

    Ma non sono riuscito a fare il giochino su 2 o più. Ovvio dovrei legare l'utente come owner a questi DB, ma se la cosa non fosse possibile e per esempio volessi abilitare un gruppo di utenti (utenti sciolti diciamo non gruppo win) con credenziali differenti ad interagire con X DB, è possibile farli interagire (ok pe rle permission) MA non facendo vedere altri DB al di fuori di quelli che voglio.

    Mi spiego. Ho 5 DB (db_1, db_2, db_3).

    Ho 3 utenti (user_1, user_2, user_3)

    Una volta creati li eseguo DENY view any database a livello di istanza sui tre utenti.

    Ma poi così non vedono nulla.

    Se creo un gruppo win e li metto dentro e poi abbino questo a 2 DB come DB_OWNER, li vedono e possono interagire... ma se non facessi nessuna riassegnazione di proprietà lasciandoli sempre su sa o l'utente che li ha creati, come posso permettere la visione?

    Se gli do i permessi espliciti sui DB db_reader potranno far query ma non vedono nulla

    E' più una curiosità.

    GRAZIE Alen

    sabato 15 ottobre 2016 18:22

Risposte

  • Ciao!

    Ti consiglio di leggere questo post: Differenza tra Logins e Users

    A questo punto, senza complicare le cose con DENY o assegnare un livello troppo alto di permission come DB_OWNER, ti consiglio di procedere come segue:

    1)Crea il login per il tuo utente

    use master
    go
    
    CREATE LOGIN utente WITH PASSWORD='Password', CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
    go


    Risultato: l'utente ha il permesso di accedere all'istanza, ma non può operare su nessun database.

    2)Crea l'utente associandolo al login.

    use nomedatabase
    go
    
    CREATE USER utente FOR LOGIN utente
    GO


    3)Assegna a tale utente i permessi minimi per poter operare.

    es. deve leggere, db_datareader. Deve scrivere, db_datawriter. Deve eseguire stored procedure, GRANT EXECUTE...

    USE nomedatabase;
    GO
    
    EXEC sp_addrolemember N'db_datareader', N'utente';

    Facci sapere se hai bisogno di approfondire uno o più punti!

    Luca

    lunedì 17 ottobre 2016 09:32