Archive for June, 2009

Seguridad de las impresiones

Wednesday, June 10th, 2009

Muchas veces la seguridad de un sistema SAP, está enfocada en prevenir la ejecución de determinadas actividades sobre el sistema. Restringir quien y cómo puede interactuar con el mismo.

Ese es un primer paso, cuando nace la preocupación por la seguridad y el control interno. Después de esto, es común que la preocupación recaiga en quien tiene la posibilidad de ver la información que está en el sistema. No solo nos importará quien puede ejecutar acciones, si no también nos importará quien puede visualizar los pagos realizados por la empresa, los proveedores, los sueldos, los clientes, y un largo etc de información que en sistema como SAP es almacenada, y que tiene VALOR para la organización.

En el presente post vamos a ver un factor, que muchas veces es despreciado, y que tiene potencialmente mucha importancia. La gestión del spool de impresión.

Muchas  veces se toman recaudas específicos, bajados desde la alta cúpula de la organización para que determinada información no sea visible “por todos” o por “cualquiera” y sin embargo quedan agujeros por donde esta puede ser consultada. Muchas veces es el acceso directo a tablas, el acceso directo a programas, la posibilidad de hacer queries, etc.

Pero la que hoy nos importa es: “La posibilidad de ver lo que otros usuarios mandaron a imprimir”.

Esto está regulado por los objetos de SPOOL, principalmente S_SPO_ACT, el cual otorga permisos para el SPOOL de OTROS usuarios, si uno quiere visualizar el SPOOL propio, no necesita autorización especial a este objeto. Las transacciones desde donde se puede gestionar el SPOOL de impresión son la SP01 y SP02 (principalmente la primera que permite ver SPOOLs ajenos)

Ahora pueden garantizarse distintas acciones (DISP – Visualizar, PRNT – Imprimir, REPR – Reimprimir, DELE – Borrar, USER – Cambiar propietario, DOWN – Download) las cuales actuan sobre el objeto de autorización especificado (Campo SPOAUTH)

Una excepción en los valores de este campo es el valor __USER__, donde se da acceso a las acciones establecidas, para todas las órdenes de spool que no tengan un grupo de autorización definido. (El cual define cada usuario a la hora de imprimir, lo cual no garantiza la seguridad del mismo)

Adicionalmente a estas autorizaciones es necesario poseer el objeto S_ADMI_FCD con valores SP01 o SP0R, a través de los cuales podrá gestionar la salida de SPOOL con libertad.

Por todo lo que antes nombrabamos es importantisimo restringir estos permisos, ya que de no hacerlo estaríamos librando la visualización de cualquier documentación impresa desde el sistema SAP a cualquier usuario si es que el mismo no la restringe apropiadamente.

VN:F [1.9.10_1130]
Rating: 5.0/5 (3 votes cast)
VN:F [1.9.10_1130]
Rating: 0 (from 0 votes)

Seguridad en la Gestión de Procesos Batch

Tuesday, June 9th, 2009

A la hora de asegurar un sistema, un factor importante es la ejecución de procesos de fondo en SAP.

La posibilidad de ejecutar procesos de fondo es agradecida por muchos usuarios, y administradores ya que permite descargar los workprocess de diálogo de tareas pesadas para el sistema, pero que no necesitan una mayor interacción con el mismo.

De esta manera, procesos de cálculo, queries, largos reportes, etc, son ejecutados desde la SM36/SM37 o desde el menú de los mismos cuando lo permiten.

Para poder ejecutar procesos batch es necesario contar con el objeto S_BTCH_JOB, el cual tiene como opciones en su campo:

DELE – Eliminar jobs de fondo
LIST – Visualizar órdenes SPOOL creadas mediante job
PLAN – Copiar o repetir jobs
PROT – Visualizar logs de proceso de job
RELE – Liberar jobs (se realiza automáticamente si se planifica)
SHOW – Visualizar cola de jobs

Estas opciones deben configurarse funcionalmente a la necesidad del rol, aunque probablemente no sean para usuarios comunes los permisos de PLAN, DELE y la autorización de RELE puede estar segregada en el administrador del sistema. (Los usuarios planifican un job, y el administrador lo libera cuando considera que el sistema tiene menos carga)

También tenemos el objeto S_BTCH_ADM, que solo tiene las posibilidades de Yes y NO (Y/N), lo cual brinda autorización cross mandantes, y todos los permisos, la cual solo debe asignarse a administradores de de corresponder.

Y por último, uno que nos resulta interesante a la hora de revisar la seguridad es el S_BTCH_NAM. Este curioso objeto nos brinda la posibilidad que los jobs que nosotros creemos sean ejecutados por otro usuario, especificamente puede ser cualquiera de los usuarios que enumeremos en este objeto (seleccionable a la hora de crear el job, por parte del usuario).

Este objeto es de especial importancia, ya que en caso de poseerlo, nos permitiría ejecutar un proceso de fondo con permisos que no son los nuestros, y claramente el riesgo está en que es una práctica común utilizar un usuario con amplios permisos como BATCH, de manera que no “de errores”.

De esta manera un usuario podría ejecutar reportes para los que habitualmente no tiene permiso en forma batch y consultar el spool resultante del mismo.

En caso de requerirse este tipo de ejecución “impersonada”, los permisos deberían estar correctamente restringidos, para las necesidades específicas de la organización.

VN:F [1.9.10_1130]
Rating: 4.0/5 (2 votes cast)
VN:F [1.9.10_1130]
Rating: 0 (from 0 votes)

Seguridad en la ejecución de programas

Friday, June 5th, 2009

A la hora de asegurar la ejecución de actividades sobre el sistema SAP habitualmente nos acordamos de restringir el acceso a determinadas transacciones, objetos de autorización, etc.

Pero muchas veces, por necesidades incorrectamente satisfechas al momento de la implementación, o por un apresurado mantenimiento del código, entre otras posibilidades, quedan puertas abiertas que podrían permitir la ejecución de actividades no deseadas en el sistema.

Personalmente, pienso que muchas de estos permisos se dan por inconsciencia, o desconocimiento de lo que se está autorizando por parte de los dueños o responsables de los datos. Ya que ellos conocen la información que quieren restringir, pero no conocen los medios por los que se puede acceder a la misma. Cuantas veces uno habrá escuchado: “Los sueldos solo los pueden ver un grupo reducido de personas”, y por otro lado se entregan los permisos de visualización de tablas indiscriminados, el debug con modificación de variables, la ejecución libre de programas, entre tantos otros.

Hablando de estas posibilidades, una de ellas es la de permitir la ejecución directa de programas en el ambiente de producción. Para muchos puede sonar a una atrocidad, pero otros probablemente digan que ven esa posibilidad habitualmente habilitada en su sistema.

Principalmente estamos hablando de las transacciones SA38 y SE38.

A veces encontramos que los programadores pueden acceder a producción con estos permisos, otras veces los parametrizadores, e incluso otras veces hasta los usuarios finales, con el inocente fin de poder “Ejecutar un reporte”.

El primer tema a plantear a la hora de resolver estos inconvenientes es el de que todo desarrollo para ser ejecutado en un ambiente productivo debería tener asignado un código de transacción. Como adminsitradores de seguridad deberíamos exigir el cumplimiento de esto, más siendo que la tarea de utilizar la transacción SE93 para crear un código no demanda más de 1 minuto. De esta manera podríamos restringir la ejecución de cualquier programa como si una transacción estándar se tratara.

Ahora el segundo caso es cuando no podemos lograr esto, ya se por falta peso de nuestro sector, o porque las necesidades organizacionales son otras (casos puntuales, ejecución de programas estándar, pedidos ridículos pero con suficiente peso, etc). Ante esta situación lo ideal es no brindar permisos excesivos.

La ejecución de programas está restringida por el objeto S_PROGRAM, el cual tiene un “grupo de autorización de programas” y un código de acción posible (SUBMIT – Ejecutar un programa, BTCSUBMIT – Ejecutar como proceso de fondo, VARIANT – Ejecutar con una variante)

Lo primordial es la utilización de este grupo de autorizaciones, el cual puede definirse en la misma transacción SE38 a la hora de crear el programa. Pero hay que tener en cuenta que un número importante de programas estándar de SAP NO TIENEN GRUPO DE AUTORIZACION ASIGNADO, permitiendo así la ejecución de los mismos con sin chequear el campo de grupo. En este caso existe un programa estándar que permite el mantenimiento masivo de los grupos de autorización llamado SREPOAUTH.

También hay que tener en cuenta que los programas pueden ser ejecutados como proceso de fondo (de no tener las transacciones SA38/SE38) con las transacciones SM36/SM37, las cuales también hay que prever, sobre todo para quienes tienen permisos para la ejecución de procesos de fondo.

De esta manera tenemos bastante herramientas para restringir la ejecución de programas ante distintas circunstancias que se nos planten, en el trabajo cotidiano.

VN:F [1.9.10_1130]
Rating: 4.6/5 (5 votes cast)
VN:F [1.9.10_1130]
Rating: 0 (from 2 votes)