Llamar a programas ABAP directamente a través de transacciones genéricas como SA38 o SE38 conlleva riesgos no deseados, ya que debido a los grupos de autorización ya asignados, a menudo es posible el acceso sin restricciones a otros programas. Esto se puede evitar restringiendo granularmente los objetos de autorización. En principio, la llamada de programas en SAP se controla a través de los objetos de autorización S_PROGRAM y S_PROGNAM, comprobándose este último solo en el caso de inicios de informes genéricos. Por lo tanto, la verificación de S_PROGRAM siempre se realiza tan pronto como el programa ABAP se asigna a un grupo de autorización. Destinado a transacciones genéricas como SA38 y SE38, SAP también ofrece la opción de activar una verificación adicional para S_PROGNAM (nombre del programa). Si el escenario de autorización conmutable BC_GENERIC_REPORT_START se activa a través de la transacción SACF, tanto el grupo de programas (S_PROGRAM) como la consulta adicional para el nombre de programa específico (S_PROGNAM) se verifican durante los inicios de informes genéricos. Por lo tanto, cuando se utilizan transacciones de inicio de informes genéricos, la ejecución efectiva del programa se puede restringir a través del nombre del programa.
Sin embargo, se recomienda encarecidamente crear las denominadas transacciones de parámetros o transacciones de informes en su lugar. Mediante el uso de transacciones de parámetros para programas individuales, se pueden evitar transacciones críticas como el SA38 per se y se puede restringir el acceso a los programas de manera efectiva. Además, las transacciones de parámetros se pueden autorizar clásicamente a través del menú de roles, con lo que también se pueden proporcionar valores de sugerencia de autorización adecuados del SU24 durante el mantenimiento del perfil de rol. Dado que un inicio de transacción ya no corresponde en principio a un inicio de informe genérico, a diferencia de SA38 o SE38, solo se comprueba S_PROGRAM (grupo de programas), incluso después de que se haya activado el escenario SACF. Cabe señalar que en la transacción START_REPORT, solo S_PORGRAM (grupo de programas) siempre se verifica, ya que esta transacción se usa a menudo como base para la definición de transacciones de parámetros.
En esta publicación de blog, desarrollaré las diferencias entre S_PROGRAM y S_PROGNAM y mostraré hasta qué punto XAMS puede ayudar en el análisis y mantenimiento de estos objetos de autorización.
El objeto de autorización S_PROGRAM introducido por primera vez por SAP está estructurado de la siguiente manera:
El objeto se entrega con los campos P_GROUP (grupo de autorización del programa ABAB/4) y P_ACTION (acción del usuario del programa ABAP/4), y las acciones del usuario brindan las siguientes opciones para ejecutar programas ABAP:
ENTREGAR | Ejecutar programas ABAP |
BTCSUBMIT | Programar programas de procesamiento en segundo plano |
VARIANTE | Crear y mantener variantes |
Existen campos similares para el objeto de autorización más reciente S_PROGNAM:
Este objeto está controlado por los campos P_ACTION y P_PROGNAM (nombre del programa con ayuda de búsqueda).
La diferencia básica entre estos dos objetos está en los campos P_GROUP y P_PROGNAM. En el primer caso, la restricción se refiere al programagrupos y en este último caso a programa individualnombres. Detrás de los grupos de programas puede haber una gran cantidad de programas para los cuales los usuarios recibirían las correspondientes autorizaciones ejecutables. A diferencia de P_GROUP, P_PROGNAM está autorizado granularmente para ejecutar programas individuales. Autorizar nombres de programas individuales proporciona mucha más transparencia y reduce el riesgo de acceder a programas ABAP no deseados. Por ello, es recomendable activar el chequeo adicional en S_PROGNAM para transacciones genéricas (SA38, SE38).
Dado que el objeto de autorización S_PROGNAM solo fue introducido más tarde por SAP (consulte la nota de SAP 1946079, entre otros), primero debe verificarse a través de la transacción SACF (verificaciones de autorización conmutables) si este escenario de la verificación de autorización está presente y activado. El escenario tiene el nombre BC_GENERIC_REPORT_START y debe habilitarse para el uso activo de esta verificación de autorización:
Sin embargo, se requiere extrema precaución al activar este escenario. Para evitar interrupciones productivas, las autorizaciones para el objeto S_PROGNAM deben incluirse en los roles con anticipación. Para ello, la transacción SACF también ofrece un modo de registro correspondiente para ampliar gradualmente los roles existentes con las autorizaciones que faltan para S_PROGNAM. Porque tan pronto como el escenario esté activo, además de la verificación del grupo de programas a través de S_PROGRAM, también habrá una verificación de S_PROGNAM para las transacciones genéricas. Si el escenario SACF BC_GENERIC_REPORT_START_BATCH también está activado, esto también se aplica a la planificación y ejecución de trabajos en segundo plano, por lo que las activaciones en SACF siempre deben considerarse cuidadosamente y planificarse bien (consulte la nota de SAP 2272827).
La combinación de las transacciones genéricas SA38 o SE38 junto con el objeto S_PROGRAM puede generar riesgos críticos en el área de los programas ABAP ejecutables. Esto se debe a que, por ejemplo, se pueden ejecutar varios programas utilizando la transacción genérica SA38, siempre que el usuario que lo ejecuta tenga autorización suficiente para el objeto S_PROGRAM en uno de sus perfiles de roles asignados. Desafortunadamente, este suele ser el caso, por lo que S_PROGRAM y el campo P_GROUP están marcados con valores de autorización de gran alcance. Este escenario, en el que los usuarios tienen acceso para ejecutar varios programas ABAP a través de la transacción SA38, debe evitarse con urgencia. La solución recomendada es utilizar las llamadas transacciones de parámetros. De esta manera, se puede garantizar específicamente que los usuarios del sistema SAP solo puedan ejecutar programas para los que también deberían estar autorizados a través del menú de funciones. En el mejor de los casos, se crea una transacción de parámetros para cada programa, de modo que se garantiza una restricción granular a los programas individuales. En el estándar SAP, las transacciones de parámetros se crean a través de SE93. Sin embargo, con el módulo XAMS Role Replicator, Xiting ofrece la posibilidad de crear transacciones de parámetros de forma masiva como sustituto de, por ejemplo, la asignación del SA38. Esta es una automatización de la transacción ABAP Workbench SE93, en la que la creación de transacciones de parámetros se realiza a través de una sola carga de Excel. El formato de este archivo de Excel espera solo los siguientes valores:
Un ejemplo de la estructura del archivo de Excel requerido puede verse así:
Columna A | Columna B | Columna C | Columna D |
Z_PARATCD1 | Parámetro transacción 1 | Z_DEMO | RGRMTF00 |
Z_PARATCD2 | Parámetro transacción 2 | Z_DEMO | /SDF/AJM_SHOW_SM37_JOBLIST |
Z_PARATCD3 | Parámetro transacción 3 | Z_DEMO | Z_PROGRAMM_DEBITOR |
Una vez creadas las transacciones de parámetros, se pueden incluir en un menú de roles. Para poder ejecutar la transacción de parámetros, es necesario almacenar el grupo de programa en el perfil de función a través del SU24, siempre que se haya asignado un grupo de autorización al programa subyacente. La expresión en el perfil de rol tendría el siguiente aspecto para la transacción de parámetros Z_PARATCD1:
Se recomienda el uso de transacciones de parámetros para evitar la asignación de transacciones genéricas SA38 y SE38. Para mantener una administración eficiente y transparente a través de la asignación de transacciones de parámetros, debe garantizarse el mantenimiento adecuado de los valores predeterminados SU24 para estas transacciones. Mantenimiento adecuado significa el mantenimiento concreto de nombres de programas o grupos de programas de los objetos de autorización S_PROGNAM y S_PROGRAM utilizando la transacción SU24. Además de la creación masiva de transacciones de parámetros, el módulo XAMS Role Profiler también se puede usar para mantener los valores predeterminados SU24 masivos de estas transacciones. Esta es la única forma de garantizar un mantenimiento de roles transparente y manejable a largo plazo. El módulo Xiting Role Profiler contiene un informe que busca específicamente transacciones de parámetros que inician programas ejecutables. Tan pronto como se asigne un programa a un grupo S_PROGRAM, esta transacción aparecerá en el informe. Además, el informe comprueba si el grupo de programas o el nombre del programa está correctamente almacenado en los valores predeterminados de SU24 de la transacción de parámetros afectada.
Los semáforos rojos en la captura de pantalla anterior muestran que el informe no ha encontrado un valor predeterminado SU24 almacenado para la transacción de ejemplo Z_PARATCD1 y el objeto S_PROGNAM (campo P_PROGNAM con valor RGRMTF00) o S_PROGRAM (campo P_GROUP con valor GRWT). Con este informe, ahora puede actualizar los valores predeterminados SU24 de ambos objetos para todas las transacciones enumeradas con solo presionar un botón, siempre que el nombre del programa o el grupo de programas del programa detrás de él esté disponible. En nuestro ejemplo, ahora agregaría el grupo de programas «GRWT» para la transacción Z_PARATCD1, de modo que el semáforo cambie a verde, ya que el valor predeterminado para el objeto S_PROGRAM se actualizó en consecuencia en SU24:
El mantenimiento masivo de los valores predeterminados para S_PROGRAM o S_PROGNAM también se puede implementar a través del modo experto con esta herramienta. Con respecto al escenario SACF BC_GENERIC_REPORT_START_BATCH, es importante mantener ambos objetos.
La asignación de transacciones genéricas como SA38 o SE38 puede conducir a un mayor riesgo, ya que en el peor de los casos los usuarios pueden ejecutar varios o incluso todos los programas ABAP. Por esta razón, en su lugar, se deben crear las llamadas transacciones de parámetros, que solo se utilizan para iniciar programas individuales. Dado que a menudo se llama a un gran número de programas a través del SA38, Role Replicator ofrece la opción de creación masiva de transacciones de parámetros. Las transacciones creadas se pueden incluir en un menú de funciones y los usuarios pueden ser autorizados en consecuencia a través de la función.
Además, recomendamos activar la verificación de autorización para el objeto S_PROGNAM para protegerse de llamar a varios programas ABAP en transacciones genéricas. Para obtener una descripción general de los valores sugeridos de SU24 y también para mantenerlos en masa para las transacciones de parámetros, el informe del perfilador de roles que se muestra en este artículo es adecuado. Esto asegura un análisis y mantenimiento adecuados de los grupos de programas y nombres de programas detrás de las transacciones de parámetros. Sin embargo, antes de que sea posible utilizar el objeto S_PROGNAM para transacciones genéricas, primero debe asegurarse de que los roles se han preparado en consecuencia y que el escenario de autorización conmutable BC_GENERIC_REPORT_START se activa a través de la transacción SACF.
Consultor de Seguridad SAP | Autorizaciones SAP a Xiting GmbH
Steffen es consultor de seguridad de SAP en Xiting GmbH en Alemania y se especializa en autorizaciones de SAP y rediseña proyectos con la ayuda de Xiting Authorizations Management Suite (XAMS).
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073