Questa domanda sottolinea che è richiesta lautorizzazione “Visualizza stato server” per vari DMV (viste a gestione dinamica), ma non riesco a “trovare nulla su di te fare e non si vuole concedere lautorizzazione a.

Ora, ovviamente, capisco i “permessi minimi” e perché non vorresti concederli a nessuno, ma non riesco a trovare alcuna guida su come valutare se DOVREBBE essere concessi o meno .

Quindi, la mia domanda: quali sono le implicazioni sulla sicurezza e sulle prestazioni della concessione a un utente dellautorizzazione “Visualizza stato server”. Cosa possono fare che forse non dovrebbero essere autorizzati a fare …

Aggiorna : unimplicazione è che lutente sarà in grado di utilizzare i DMV per esaminare le query. Se le query oi parametri della query possono contenere informazioni riservate che lutente non sarebbe altrimenti in grado di vedere, consentire a VIEW SERVER STATE consentirebbe loro di farlo (ad esempio dob = o ssn =).

Risposta

Non ci sono problemi di prestazioni significativi a cui riesco a pensare durante la concessione di questa autorizzazione. Dal punto di vista della sicurezza, corri il rischio di consentire a un utente di vedere ciò che la maggior parte dei dettagli sui tuoi punti deboli, quindi, ad esempio, un utente malintenzionato potrebbe visualizzare le tue statistiche di attesa più comuni sono, il che potrebbe aiutarlo a indirizzare un attacco DoS contro il tuo server.

È possibile? Sicuramente. È questo probabilmente? Sono costretto a dire di no, ma ricorda che si stima che il 90% degli attacchi contro le aziende provenga da aggressori interni.

Risposta

In qualità di amministratore, considereresti queste informazioni come se fossero nel tuo dominio (prestazioni / utilizzo dellindice / ecc.) ma esistono motivi potenzialmente convincenti per cui uno sviluppo Lorganizzazione vorrebbe queste informazioni per un grande sistema legacy che supportano, identificando le tabelle zombi che vengono toccate solo dai processi di manutenzione, ad esempio.

Alla fine finisce sempre per essere una questione di “fortuna e generosità” dal momento che la richiesta di giustificazione di una richiesta particolare finisce per essere una scelta morbida e non una formula frizzante. Luso di modelli di best practice senza guardare al contesto è di per sé un antipatico anti-pattern e la realtà è che molti si avvicinano alle loro posizioni con “parlare alla mano” come punto di partenza.

Risposta

Per quanto riguarda le implicazioni sul rendimento, non sono a conoscenza di alcuna autorizzazione per questa o altre autorizzazioni.

Riguardo a:

Cosa possono fare che forse non dovrebbero” non essere autorizzati a fare

In poche parole, possono vedere le cose che forse non dovrebbero vedere. E non pensare a questo in termini di SQL Server. Questa particolare autorizzazione regola anche DMV come sys.dm_os_sys_info e molti altri che forniscono informazioni dettagliate la macchina host (hardware, servizi, ecc.) Non sai sempre quali informazioni possono essere usate contro di te. E, anche se sei daccordo con qualcuno che vede tutto ciò che è consentito da questa autorizzazione ora, a volte i DMV vengono aggiunti nei Service Pack / Aggiornamenti cumulativi e quindi forse viene esposta una nuova informazione di cui non sei a conoscenza.

Non riesco a “trovare alcuna guida su come valutare se DOVREBBE essere concesso o meno.

Dato che hai già menzionato di dare alle persone le autorizzazioni minime necessarie, ciò a cui davvero si riduce è: qualcuno ha bisogno di questa autorizzazione per lutilizzo ad hoc ? Significa che qualcuno ha bisogno della flessibilità di proporre le proprie domande? La creazione di una o più stored procedure e / o TVF con più istruzioni funzionerebbe? In tal caso, non è necessario concedere le autorizzazioni a nessun utente (che è quindi libero di tutto ciò che è consentito da tale autorizzazione) e invece concedi le autorizzazioni al codice (che fa solo ciò per cui è stato programmato). Module Signing è il modo in cui lo fai. Il concetto generale è:

  1. Crea le stored procedure e / o le TVF con più istruzioni per eseguire le azioni desiderate.
  2. Concedi EXECUTE su questi moduli a qualsiasi utente e / o ruolo necessario per eseguire queste azioni
  3. Crea un certificato
  4. Firma i moduli utilizzando quel certificato (utilizzando ADD SIGNATURE)
  5. Copia il certificato nel database [master] (ovvero crea un certificato in [master] utilizzando la chiave pubblica del certificato utilizzato per firmare i moduli.
  6. Crea un accesso dal certificato copiato in [master]
  7. Concedi qualunque istanza- livello permissio ns sono necessari per laccesso basato su certificato (che può includere laggiunta a ruoli a livello di istanza).

Per alcuni esempi, vedere:

Risposta

È “un problema di sicurezza. Non puoi mai sbagliare se segui il Principio di minor privilegio . In altre parole, se unentità di autenticazione non “ necessita di unautorizzazione particolare, allora don” Non date loro le informazioni sul tipo di serrature della vostra porta ad altre persone che non hanno bisogno di sapere queste cose sulla vostra casa? Spero di no. Probabilmente non farebbero nulla, ma non è ancora prudente.

Se basassimo i principi dei dati sulla fortuna e sulla generosità, ci troveremmo nei guai un po più spesso. La sicurezza è un aspetto in cui dovresti concedere solo quando puoi difendere il motivo per cui hai concesso. Stai semplicemente fornendo a qualcuno più informazioni di quelle che ha bisogno di sapere . Non farlo. Lo stato del server è ancora sensibile.

Commenti

  • Chi dice che lo stanno dando via inutilmente? LOP potrebbe dover concedere a qualcuno per indagare su un problema specifico (ad esempio per guardare sys.dm_db_missing_index_details) e vogliono sapere quali sono esattamente i rischi di farlo.
  • Credo di sì ' Manca il segno con questa domanda, non ' non vedo nulla nella domanda che indichi la necessità dellautorizzazione.
  • @ThomasStringer: la domanda non è ' sulla necessità, ma ' riguarda rischio . Per dirla in termini monetari, potresti sapere a quali rischi aggiuntivi questo esporrebbe i tuoi server, e quindi essere in grado di dire no a un centesimo e sì a un milione di dollari. Io don ' t, ma voglio farlo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *