Autorizzazioni di IBM System i sulle viste del database


8

Abbiamo un sistema IBM i che esegue IBM i OS v6r1. Su questo sistema, ho creato alcune viste del database. Quello che voglio fare è dare a un determinato gruppo di utenti l'accesso SOLO a queste viste e nient'altro all'interno della libreria in cui risiedono le viste. È possibile? Avevo un gruppo di utenti che aveva letto solo le autorizzazioni per tutte le tabelle e le viste nella libreria in cui si trovano le mie viste e l'accesso funziona quando l'utente si trova in questo gruppo utenti. Ho provato a copiare il gruppo di utenti e quindi assegnare le autorizzazioni per includere solo le viste che ho creato e l'accesso è stato negato. Un utente o un gruppo utenti deve inoltre disporre delle autorizzazioni sulla tabella da cui proviene la vista per accedere alla vista?


Prendi in considerazione l'idea di pubblicarlo su dba.stackexchange.com
WarrenT

@WarrenT che ci crediate o no, in realtà si tratta tanto di una domanda di amministrazione del sistema quanto di una domanda DB per iSeries / midrange - il database DB2 è strettamente integrato in OS / 400 e dalla domanda sembra che abbia le autorizzazioni OS / 400 sul libreria che fa scattare le cose. (Purtroppo è passato tanto tempo da quando ho effettuato l'accesso a una scatola di fascia media non sono sicuro al 100% su come risolvere il problema!)
voretaq7

@ voretaq7 Sì. Il database non è solo intessuto nell'essenza del sistema operativo, ma è progettato nella macchina stessa (l'interfaccia della macchina, MI). È passato più di un decennio da quando ero QSECOFR, quindi avrei dovuto cercare la risposta. Ma dal momento che nessuno qui ha ancora risposto, ed è un gioco equo per entrambi i siti, stavo pensando che potrebbe esserci qualcuno alla DBA che potrebbe saperlo in testa.
Warren

Risposte:


4

Sì. Non è sufficiente concedere l'autorizzazione per utilizzare una vista. L'utente deve inoltre disporre dell'autorizzazione anche per la tabella sottostante.

Un modo per consentire l'accesso a un utente con restrizioni è l'autorizzazione adottata. A titolo di esempio, supponiamo che:

L'utente RESTRICTED non ha accesso a nessuna tabella. Tutte le librerie sono AUT (* EXCLUDE) - oppure l'utente RESTRICTED ha l'autorizzazione * EXCLUDE a tutte le librerie. L'UTENTE CONSENTITO può accedere (o possedere) alle tabelle e alle librerie. La libreria DATA ha le tabelle. Biblioteca PROGRAMMI ha i programmi e le procedure memorizzate.

Hanno PERMESSO creare una procedura memorizzata RPG nella libreria PROGRAMMI. Assicurarsi che nel programma sia specificato USRPRF (* OWNER). Ciò significa che quando il programma viene eseguito utilizzerà l'autorità del proprietario (PERMESSO) anziché l'autorità del profilo che lo esegue (RISERVATO).

Concedere all'utente l'autorizzazione PERMESSO * USE all'oggetto programma RPG -o-- GRANT tramite SQL. Inoltre, concedi all'utente RESTRICTED * USE l'accesso alla libreria PROGRAMMI. Ciò consentirà a RESTRICTED di eseguire la procedura / programma memorizzati.

Si noti che l'utente RESTRICTED non ha diritti di accesso alle tabelle in DATA e si desidera lasciarlo in quel modo.

Ora fare in modo che l'utente RESTRICTED usi SQL per CHIAMARE la procedura memorizzata. Ha l'autorità per eseguire il programma perché ha i diritti * USE per la libreria PROGRAMMI e l'oggetto programma compilato. La procedura memorizzata viene eseguita sotto l'autorizzazione del proprietario, CONSENTITO e poiché PERMESSO ha pieno accesso ai DATI della libreria e alle relative tabelle, la procedura memorizzata può accedere / aggiornare tali tabelle. Qualsiasi SQL non elaborato che RESTRICTED tenta di utilizzare fallirà a causa di un'autorità insufficiente: l'unica cosa che può fare è chiamare le stored procedure create per lei.

Se i tuoi programmi sono archiviati nella stessa libreria dei tuoi dati, dovrai dare l'autorizzazione RESTRICTED * USE alla libreria e limitarla specificatamente (tramite * EXCLUDE) su tutte le tabelle di quella libreria. Potrebbe essere più semplice creare una libreria RISERVATA che contiene solo le procedure memorizzate e autorizzarla a quella libreria. Ciò semplifica la manutenzione in corso perché non dovrai cercare di ricordare di continuare a limitarla dalle tabelle appena create in DATA.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.