Cómo controlar el origen de las restricciones de acceso en una estructura de múltiples archivos

Cómo:

Referencia:

El parámetro DBASOURCE determina los atributos de seguridad utilizados para permitir el acceso a estructuras de varios archivos. Las restricciones de acceso están basadas por defecto en el archivo host, en una estructura JOIN, o en el último archivo de una estructura COMBINE. Si establece el parámetro DBASOURCE en ALL, se mantendrán todas las restricciones de acceso de todos los archivos de una estructura JOIN o COMBINE.

Nota: También puede crear e implementar un DBAFILE para que contenga y exija las restricciones de acceso de todos los archivos de una estructura JOIN o COMBINE. Para más información sobre cómo usar un archivo máster central con restricciones de acceso, consulte Cómo colocar la información de seguridad en un archivo máster central.

El comando SET DBASOURCE sólo puede emitirse una vez por sesión o conexión. Se ignorará cualquier intento de emitir este comando en ocasiones posteriores. Si el valor se ha establecido en un perfil, ningún usuario podrá cambiarlo durante la sesión.

Cuando DBASOURCE=ALL:

Cuando DBASOURCE=HOST:


Principio de página

x
Sintaxis: Cómo Controlar el cumplimiento de las restricciones de seguridad en una estructura JOIN o COMBINE
SET DBASOURCE = {HOST|ALL}

donde:

HOST

Sólo mantiene el cumplimiento de las restricciones de acceso del archivo de host en una estructura JOIN, o del último archivo de una estructura COMBINE, a menos que se utilice un DBAFILE para garantizar las restricciones de otros archivos de la estructura. HOST es el valor por defecto.

prefijo ALL

Obliga a que el usuario tenga un acceso de lectura a todos los archivos de una estructura JOIN o COMBINE. El usuario requiere un acceso de W, U o RW a un archivo de la estructura COMBINE cuando se ha emitido una solicitud de INCLUDE, DELETE o UPDATE basada en ese archivo.


Principio de página

x
Referencia: Notas de uso de SET DBASOURCE


Ejemplo: Cómo controlar las restricciones de acceso en un JOIN

La siguiente solicitud une el origen de datos TRAINING a los orígenes de datos EMPDATA y COURSE y, a continuación, emite una solicitud basada en la estructura unida:

JOIN CLEAR *                                             
JOIN COURSECODE IN TRAINING TO COURSECODE IN COURSE AS J1
JOIN PIN IN TRAINING TO PIN IN EMPDATA AS J2             
                                                         
TABLE FILE TRAINING                                      
PRINT COURSECODE AS 'CODE' CTITLE    
   LOCATION AS 'LOC'                                     
BY LASTNAME                                 
WHERE COURSECODE NE '   '                                
WHERE LOCATION EQ 'CA' OR LOCATION LIKE 'N%'             
END  

Cuando los archivos máster no tienen atributos de DBA la salida es:

LASTNAME         CODE     CTITLE                               LOC
--------         ----     ------                               ---
ADAMS            EDP750   STRATEGIC MARKETING PLANNING         NJ 
CASTALANETTA     EDP130   STRUCTURED SYS ANALYSIS WKSHP        NY 
                 AMA130   HOW TO WRITE USERS MANUAL            CA 
CHISOLM          EDP690   APPLIED METHODS IN MKTG RESEARCH     NJ 
FERNSTEIN        MC90     MANAGING DISTRIBUTOR SALE NETWORK    NY 
GORDON           SFC280   FUND OF ACCTG FOR SECRETARIES        NY 
LASTRA           MC90     MANAGING DISTRIBUTOR SALE NETWORK    NY 
MARTIN           EDP130   STRUCTURED SYS ANALYSIS WKSHP        CA 
MEDINA           EDP690   APPLIED METHODS IN MKTG RESEARCH     NJ 
OLSON            PU168    FUNDAMNETALS OF MKTG COMMUNICATIONS  NY 
RUSSO            PU168    FUNDAMNETALS OF MKTG COMMUNICATIONS  NY 
SO               BIT420   EXECUTIVE COMMUNICATION              CA 
WANG             PU440    GAINING COMPETITIVE ADVANTAGE        NY 
WHITE            BIT420   EXECUTIVE COMMUNICATION              CA 

Ahora añada los siguientes atributos de DBA al final del archivo máster TRAINING:

END
DBA = DBA1,$
USER = TUSER, ACCESS =R,$

Si ejecuta la misma solicitud aparece el siguiente mensaje:

(FOC047) THE USER DOES NOT HAVE SUFFICIENT ACCESS RIGHTS TO THE FILE:
TRAINING
BYPASSING TO END OF COMMAND 

Emita el siguiente comando SET PASS:

SET PASS = TUSER

Ahora añada los siguientes atributos de DBA al final del archivo máster COURSE:

END                       
DBA = DBA1,$           
USER = CUSER, ACCESS = R,$

Ahora añada los siguientes atributos de DBA al final del archivo máster EMPDATA:

END                       
DBA = DBA1,$           
USER = EUSER, ACCESS = R,$

Observe que el atributo DBA tiene el mismo valor en todos los archivos máster.

Vuelva a ejecutar la solicitud. No se produce ninguna infracción de seguridad; se genera la salida del informe. Puesto que el parámetro DBASOURCE se ha establecido en HOST (por defecto), puede ejecutar la solicitud utilizando una contraseña que sólo funcione en el archivo de host.

Establezca el parámetro DBASOURCE en ALL:

SET DBASOURCE = ALL
SET PASS = TUSER

Si ejecuta la solicitud aparece el siguiente mensaje, debido a que TUSER no es un usuario válido del origen de datos COURSE:

(FOC052) THE USER DOES NOT HAVE ACCESS TO THE FIELD: CTITLE

Emita el siguiente comando SET PASS, que establece una contraseña válida para cada archivo de la estructura:

SET PASS = TUSER IN TRAINING, CUSER IN COURSE, EUSER IN EMPDATA

Ahora puede ejecutar la solicitud y generar la salida del informe.

Una vez emitido el comando SET DBASOURCE, no se puede cambiar su valor. El siguiente comando SET intenta cambiar el valor a HOST, pero la salida del comando de consulta indica que no ha sido posible:

>  > set dbasource = host           
(FOC32575) DBASOURCE CANNOT BE RESET
VALUE WAS NOT CHANGED 

WebFOCUS