Come mantenere le autorizzazioni degli utenti del database sotto il controllo del codice sorgente

2

Uso liquibase per il controllo del codice sorgente del nostro database. Ho inserito le modifiche allo schema, i dati statici e le procedure. Finora ho tenuto fuori le autorizzazioni; abbiamo solo quattro utenti con autorizzazioni molto ben definite che non cambiano. Ora, per una nuova applicazione, ho bisogno di creare un nuovo utente e accordargli permessi specifici per la tabella e per la colonna come sono richiesti. Oggi è necessario un permesso di selezione per la tabella A , domani anche il permesso di scrivere sulla colonna description della tabella B .

Penso che sicuramente dovrei in qualche modo tenere traccia di queste modifiche ai permessi. Potrei tenerli anche sotto lo stesso progetto di liquibase, ma non sono sicuro che sia una buona idea. Le modifiche alle autorizzazioni sono in un livello diverso rispetto alle altre, inoltre, avrei bisogno di concedere il permesso all'utente di liquibase (quello che eseguo liquibase sotto), che preferirei che abbia solo l'utente root.

Devo quindi inserire queste modifiche nello stesso progetto di controllo del codice sorgente del database? In uno diverso? Quali sono alcune altre alternative?

    
posta user3748908 07.12.2016 - 14:27
fonte

3 risposte

1

Non sono un esperto di liquibase, ma una breve occhiata ai documenti ha rivelato che ha una funzione chiamata "output SQL" , che consente di generare script per l'aggiornamento del DB. Questi script possono essere consegnati a un DBA con le autorizzazioni richieste.

Quindi, se vuoi che le modifiche ai permessi vengano applicate solo da un utente root (ma le modifiche dello schema continuano ad essere applicate dal tuo "utente liquibase"), devi semplicemente assicurarti di poterle separare dai changeset che sono permessi per il tuo "utente liquibase". Immagino che tu possa utilizzare la funzione context di Liquibase per questo. Definisci un contesto "root" per questo scopo e tagga i tuoi changeset di permessi con quel contesto. Quindi lascia che Liquibase produca l'output sql in modo specifico per questo contesto (vedi le opzioni della riga di comando come fare) e passa il risultato su un dba con i permessi di root richiesti.

In questo modo, dovrebbe permetterti di mantenere le modifiche dei permessi nel controllo del codice sorgente nello stesso progetto di liquibase delle modifiche dello schema senza alcuna necessità di concedere all'utente le autorizzazioni aggiuntive per l'utente di liquibase.

    
risposta data 07.12.2016 - 18:22
fonte
0

Il fatto che non tutti quelli a cui è consentito il accesso del codice sorgente abbiano i privilegi sufficienti per eseguirlo in tutte le circostanze non c'è motivo per rinunciare a buone pratiche per la gestione dei dati. Se il progetto utilizza una struttura di database specifica e determinati diritti di accesso sono necessari per partecipare, uno script che imposta questi diritti di accesso dovrebbe sicuramente far parte del progetto che definisce l'interazione con quel database.

Proprio come l'aggiunta di un nuovo utente è un'attività privilegiata, la concessione di diritti è un'attività privilegiata, ma anche l'amministratore avrà un tempo più semplice se gli script di amministrazione per la manutenzione quotidiana dell'applicazione FOOBAR si trovano nella FOOBAR progetto e non in un progetto FOOBAR_amministrazione separato.

    
risposta data 07.12.2016 - 14:31
fonte
0

Buona domanda. Non esiste un'unica soluzione per il tuo problema. Specialmente perché non hai dichiarato se c'è un problema di sicurezza. La maggior parte degli ambienti ha password diverse.

Il modo migliore che posso immaginare anche se l'ho fatto io è creare script con parametri come la password dall'ambiente. Credo che potresti essere in grado di farlo con i parametri del changelog .

Quindi liquibase dovrebbe gestire gli script per cambiare i permessi in due modi possibili:

  • Incrementale tra le versioni
  • Per un sistema pulito da zero.

In alternativa puoi almeno documentare in un file di testo quali modifiche ai permessi vengono cambiate tra le versioni in uno script manuale (senza le password). Ciò sarà davvero negativo per la consegna continua, ma almeno viene documentato quali modifiche dovrebbero essere apportate tra le versioni.

    
risposta data 07.01.2017 - 15:31
fonte

Leggi altre domande sui tag