Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 13251|Respuesta: 0

[Fuente] Control de permisos a nivel de columna en la base de datos Oracle

[Copiar enlace]
Publicado en 11/12/2015 23:47:14 | | |
El cliente tiene una necesidad, una tabla con más de 150 campos, el cliente solo necesita que algunos campos sean vistos por las personas de la empresa de escaneo, este requisito se puede cumplir fácilmente con una vista, el cliente también solicita estos campos, la empresa de escaneo solo puede modificar campos individuales, realmente nunca había encontrado tanta necesidad de control de permisos a nivel de columna antes, hice un experimento, me parece muy interesante, grávalo

El cliente tiene unaDemanda, una tabla con más de 150 campos, el cliente pidió mostrar solo algunos campos a las personas que escanearon la empresa, estoDemandaSe puede implementar fácilmente con una vista, y el cliente solicita que estos campos, la empresa de escaneo solo puede modificar campos individuales, realmente nunca había encontrado tanta necesidad de control de permisos a nivel de columna antes, hice un experimento, me parece muy interesante, grávaloPruebaproceso.

1. Crear una tabla de pruebas e insertar datos de prueba puntual:

  SQL> crear table test( número de id, table_name varchar2(50),

propietario varchar2(50),TABLESPACE_NAME varchar2(50));

Mesa creada.

SQL> inserta en test select rownum,table_name,owner,

TABLESPACE_NAME de dba_tables;

5490 filas creadas.

SQL> commit;

Compromiso completado.

2. Crear un usuario de prueba y conceder permisos básicos:

SQL> CONN / AS SYSDBA

Conectado.

SQL> crear flujo de usuario identificado por los usuarios predeterminados del espacio de tablas del flujo;

Creado por el usuario.

SQL> conceder conectar, recurso a flujo;

Grant tuvo éxito.

3. Conceder permisos a nivel de columna a los usuarios de prueba:

SQL> autenticación/autenticación de conn

Conectado.

SQL> conceder actualización (id) al probar a flujo;

Grant tuvo éxito.

SQL> conceder inserción (table_name) en la prueba a la transmisión;

Grant tuvo éxito.

SQL>

SQL> conceder selección al probar a transmitir;

Grant tuvo éxito.

4. Consulta información de configuración de permisos a nivel de columna:

SQL> selecciona GRANTEE,OWNER,TABLE_NAME,COLUMN_NAME,GRANTTOR,PRIVILEGE,

CONCEDIBLE desde user_col_privs;

PROPIETARIO DE DERECHO TABLE_NAME COLUMN_NAME PRIVILEGIO DE OTORGANTE GRA

------- ----- ---------- ----------- ------- --------- ---

PRUEBA DE AUTENTICACIÓN EN STREAM TABLE_NAME INSERCIÓN NO

AUT-AUTH ID DE PRUEBA DE AUTENTICACIÓN INSERT NO

AUTENTICACIÓN AUT, ID DE AUTENTICACIÓN, ACTUALIZACIÓN DE AUTENTICACIÓN: NO

STREAM AUTH ID DE PRUEBA DE AUTENTICACIÓN, ACTUALIZACIÓN DE AUTENTICACIÓN NO

5. El usuario de prueba de inicio de sesión verifica el permiso SELECT:

SQL> stream/stream conn

Conectado.

SQL> seleccionar * de(seleccionar * del orden de auth.test por 1) donde rownum< =10;

ID TABLE_NAME PROPIETARIO DEL ESPACIO DE LA MESA

---------- -------------------- ---------- ----------

1 SISTEMA SYS DE ICOL$

SISTEMA SYS DE 2 IND$

3 COL$ SISTEMA SYS

4 CLU$ SISTEMA SYS

5 TAB$ SISTEMA SYS

6 LOB$ SISTEMA SYS

7 SISTEMA SYS COLTYPE$

8 SISTEMA SYS SUBCOLTYPE$

9 NTAB$ SISTEMA SYS

10 SISTEMA REFCON$ SYS

10 filas seleccionadas.

6. Verificar control de permisos UPDATE a nivel de columna:

SQL> actualizar auth.test set owner='STREAM' donde id = 1;

update auth.test set owner='STREAM' donde id =1

  *

ERROR en la línea 1:

  ORA-01031: insufficient privileges

Se puede ver que el valor del campo OWNER de la tabla de prueba no puede modificarse, informe ORA-01031: Permiso insuficiente, dado que lo anterior otorga al usuario de prueba el permiso para modificar el campo ID de la tabla de prueba, es posible modificar el campo ID.

SQL> actualizar auth.test set id=10 donde id=1;

1 fila actualizada.

Rollback > SQL;

Retroceso completado.

7. Verificar control de permisos INSERT a nivel de columna:

SQL> insertar en los valores de auth.test (1, 'stream', 'stream', 'users');

insertar en auth.test values(1,'stream', 'stream', 'users')

  *

ERROR en la línea 1:

  ORA-01031: insufficient privileges

Dado que lo anterior otorga al usuario de prueba el permiso de inserción para modificar el campo TABLE_NAME de la tabla de pruebas, es posible insertar TABLE_NAME campo, pero solo si los otros campos no tienen NO ALGUNAS restricciones.

SQL> insertar en auth.test(table_name) valores ('stream');

1 fila creada.

Rollback > SQL;

Retroceso completado.






Anterior:Tutorial detallado de instalación paso a paso para Oracle 10G
Próximo:Después de habilitar Tencent Analytics, el sistema está ocupado, por favor inténtalo de nuevo más tarde
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com