Le client a un besoin, une table de plus de 150 champs, il n’a besoin que de quelques champs visibles par les personnes de l’entreprise de numérisation, cette exigence peut être facilement réalisée avec une vue, le client demande aussi ces champs, la société de scan ne peut modifier que des champs individuels, je n’ai jamais rencontré un tel besoin de contrôle des permissions au niveau de la colonne auparavant, j’ai fait une expérience, je me sens très intéressant, enregistrez-le
Le client en a unDemande, un tableau avec plus de 150 champs, le client demandait de ne montrer que certains champs aux personnes qui scannaient l’entreprise, ceDemandeCela peut être facilement implémenté avec une vue, et le client demande que ces champs soient modifiés par la société de scan, ne peut modifier que des champs individuels, je n’avais vraiment jamais rencontré un tel besoin de contrôle des permissions au niveau de la colonne auparavant, j’ai fait une expérience, je trouve ça très intéressant, enregistrez-leTestProcessus. 1. Créer une table de test et insérer des données de test ponctuel : SQL> créer table test( id number,table_name varchar2(50), propriétaire Varchar2(50), TABLESPACE_NAME Varchar2(50)) ; Table créée. SQL > insérer dans le test sélectionner rownum, table_name, propriétaire, TABLESPACE_NAME de dba_tables ; 5490 rangées créées. SQL > commit ; Commit terminé. 2. Créer un utilisateur test et donner les permissions de base : SQL> CONN / AS SYSDBA Connecté. SQL > créer un flux utilisateur identifié par les utilisateurs par défaut de l’espace de tables du flux ; Créé par l’utilisateur. SQL > accorder connexion, ressource vers flux ; Grant a réussi. 3. Accorder aux utilisateurs de test des autorisations au niveau de la colonne : SQL> authentification/authentification de la conn. Connecté. SQL> accorder la mise à jour (id) lors du test vers le flux ; Grant a réussi. SQL > accorder insertion (table_name) sur test vers flux ; Grant a réussi. SQL > SQL > accorder la sélection sur test à flux ; Grant a réussi. 4. Interroger les informations de paramètres de permissions au niveau de la colonne : SQL > sélectionner GROS, PROPRIÉTAIRE, TABLE_NAME, COLUMN_NAME, ACCORDANT, PRIVILÈGE, ACCORDABLE de user_col_privs ; PROPRIÉTAIRE HONORABLE TABLE_NAME COLUMN_NAME PRIVILÈGE DE CÉDANT GRA ------- ----- ---------- ----------- ------- --------- --- FLUX AUTHENTIFICATION TEST TABLE_NAME AUTHENTIFICATION NON AUTHENTIFICATION AUT, ID DE TEST AUTHENTIQUE NON AUTHENTIFICATION AUT, ID DE TEST D’AUTHENTIFICATION, MISE À JOUR NON FLUX D’AUTHENTIFICATION ID DE TEST D’AUTHENTIFICATION : MISE À JOUR NON 5. L’utilisateur de test de connexion vérifie l’autorisation SELECT : SQL> flux conn Connecté. SQL > sélectionner * de(select * dans l’ordre du test authentique par 1) où rownum< = 10 ; ID TABLE_NAME ESPACE DE TABLE PROPRIÉTAIRE ---------- -------------------- ---------- ---------- 1 SYSTÈME SYS D’ICOL$ SYSTÈME SYS À 2 IND$ 3 SYSTÈME SYS COL$ SYSTÈME SYS 4 CLU$ SYSTÈME SYS 5 TAB$ 6 SYSTÈME SYS LOB$ 7 SYSTÈME SYS$ COLTYPE$ 8 SYSTÈME SYS$ SUBCOLTYPE$ SYSTÈME SYS 9 NTAB$ 10 SYSTÈME SYS REFCON$ 10 rangées sélectionnées. 6. Vérifier le contrôle des permissions UPDATE au niveau de la colonne : SQL > mettre à jour auth.test set owner='STREAM' où id = 1 ; update auth.test set owner='STREAM' où id = 1 * ERREUR à la ligne 1 : ORA-01031: insufficient privileges On peut voir que la valeur du champ PROPRIÉTAIRE de la table de test n’est pas autorisée à être modifiée, rapport ORA-01031 : Permission insuffisante, puisque ce qui précède donne à l’utilisateur de test la permission de modifier le champ ID de la table de test, il est possible de modifier le champ ID. SQL > mettre à jour auth.test set id=10 où id=1 ; 1 ligne mise à jour. SQL > rollback ; Retour en arrière terminé. 7. Vérifier le contrôle d’autorisation INSERT au niveau de la colonne : SQL > insérer dans les valeurs de test authentique (1, « stream », « stream », « users ») ; insérer dans authent.test valeurs (1,'stream', 'stream', 'users') * ERREUR à la ligne 1 : ORA-01031: insufficient privileges Puisque ce qui précède donne à l’utilisateur de test la permission d’insertion de modifier le champ TABLE_NAME de la table de test, il est possible d’insérer TABLE_NAME champ, mais seulement si les autres champs n’ont PAS CERTAINES contraintes. SQL > insérer dans authent.test(table_name) des valeurs (« stream ») ; 1 ligne créée. SQL > rollback ; Retour en arrière terminé.
|