Archive for the ‘introducción’ Category

Acceso a Tablas (S_TABU_DIS y otros)

Monday, March 2nd, 2009

Uno de los temas más conflictivos que podemos encontrarnos al tratar de implementar, ajustar, o auditar la seguridad de un sistema SAP es precisamente el acceso a las tablas de datos.

Cómo ya bien contamos en algún artículo previo, SAP a diferencia de otros sistemas, posee a través de su misma interfaz la posibilidad de interactuar con el sistema operativo, las bases de datos, e incluso el acceso directo a los datos en ella almacenada. Por este motivo es que se habla de acceso a tablas en SAP, la información allí almacenada puede ser visualizada y editada dependiendo de algunas condiciones.

Desde determinadas transacciones puede accederse a la visualización y manutención de los datos. Especificamente, en principio hablamos de las transacciones SE16, SE16N, SM16* (todas las variantes), SE17, SM30, SM30* (todas las variantes), SM31, SM31_OLD.

A través de las mismas es posible la modificación o visualización (depende del código de la transacción y los permisos que tengamos) de las tablas, sin pasar por validaciones de integridad referencial o de otro tipo.

Justamente este es el principal problema. Las organizaciones entre muchas de las cualidades que ven en un ERP como SAP es el trabajar con datos con múltiples validaciones, un fuerte control interno, y númerosas verificaciones de integridad intrínsecas del aplicativo. Modificando los datos directamente se pierde la confianza en todas estas características porque los controles no aplican en las mismas.

Este concepto, es el mismo criterio que tiene una auditoría sobre los Controles Generales y los Controles de Aplicación. Primero se debe confiar en los controles generales (evitar fallas en el acceso físico a equipos, al sistema operativo, al servidor de bases de datos, y un largo etc, y luego si se puede empezar a descansar sobre los controles de aplicación, que son los de más alto nivel dentro de las aplicaciones (lógica de negocio o control interno). Si el control interno de la aplicación es una maravilla, pero el acceso a modificar la base de datos es libre la aplicación pierde el sentido para el que fue creada.

Volviendo a temas más técnicos de SAP, estas transacciones además del control por el objeto de autorización S_TCODE correspondiente (a esta altura ya debiéramos saber que todas lo tienen), poseen básicamente 3 objetos de autorización que controlan su comportamiento.

Estos son:

S_TABU_CLI: A través de este objeto se permite la modificación de las tablas independientes de mandante (Ver este link si se desconoce este concepto). Posee un solo campo pudiendo tomar el valor vacio o “X”, siendo este último el que permite la modificación de este tipo especial de tablas. Es requerido para determinadas tareas de customizing y para permitir las modificaciones o nuevos programas en un ambiente de desarrollo.

S_TABU_DIS: Es el objeto que determina si se posee permiso para modificar una tabla determinada. Tiene dos campos uno es el ya conocido Actividad (ACTVT) con las posibilidades 02 (modificar), 03 (visualizar datos) y BD (distribución de customizing), y el otro es DICBERCLS o Grupo de Autorización. Este último campo permite determinar un grupo para ser asignado a tablas (1 o más) el cual puede crearse editando las tablas TBRG y la tabla TDDAT o mediante la transacción SE54 (preferentemente). Las tablas que no poseen un grupo asignado automáticamente adoptan el grupo &NC&, a su vez otro grupo predefinido por ejemplo son las tablas de sistema SS.

S_TABU_LIN: Es propio de las últimas versiones de SAP, su utilización se activa en el customizing (SPRO – SAP NetWeaver – Servidor de Aplicación – Gestión del Sistemas – Usuarios y Autorizaciones – Autorizaciones Referentes a Línea) y permite que los datos sean filtrados por campos determinados. Permitiendo, por ejemplo, que solo pueda visualizarse la información perteneciente al país Argentina (un campos definido en la tbla) cuando se consulta una tabla específica. El bojeto tiene 10 campos (8 criterios posibles), otro de actividad (02 modificar y 03 visualizar) y otro que define el criterio organizacional. Es importante detallar que la definición de númerosas autorizaciones por línea tienen un impacto para nada despreciable en la performance general de las consultas. Un documento detallando la configuración puede verse aquí en idioma inglés.

Resumiendo, resulta de suma importancia restringir el acceso a tablas, en principio la modificación de las mismas directamente solo debiera permitirse como una excepción y como tal no debería ser un permiso estándar incluido en un rol.

En el caso de ser necesario para modificar tablas Z o algunas muy específicas necesidades funcionales siempre debiera otorgarse la modificación de grupos de autorización lo suficientemente acotados para que sepamos cuales son todas las tablas incluidas en los mismos.

A su vez hay que tener sumo cuidado en otorgar el permiso amplio de visualización de tablas (S_TABU_DIS, Actividad 03, Grupo *) ya que se estaría poniendo a disposición del usuario toda la información transaccional de la empresa, la cual muchas veces estaríamos cuidando con restricciones físicas en “el mundo real” pero dejando a libre disposición en los sistemas.

En algún próximo post estaremos tratando la creación de variantes de transacción para la SM30 y SM16, con le fin de restringir la visualización o modificación a una sola tabla.

VN:F [1.8.2_1042]
Rating: 5.0/5 (5 votes cast)
VN:F [1.8.2_1042]
Rating: +2 (from 2 votes)

¿Cómo funciona la seguridad en SAP?

Monday, March 2nd, 2009

La seguridad de SAP es algo compleja, eso creo que ya lo dijimos, pero todas las cosas pueden ser complejas hasta que las entendemos. En este post vamos a tratar de lograr eso.

Algunos temas los empezamos a tratar en posts anteriores, pero no el proceso completo que pasamos a relatar.

1- El usuario ingresa en SAP R/3 y se le permite su acceso

2- Se cargan desde el maestro de usuarios los roles que el usuario posee (tabla AGR_USERS), a partir de los mismos se obtienen los perfiles que tienen las autorizaciones para esos roles (AGR_1016). Aunque es altamente probable que el sistema SAP directamente miré la tabla UST04 (usuarios y perfiles). En caso de perfiles compuestos estos se encuentran definidos en la tabla UST10C. A su vez la relación entre autorización y perfiles está en la UST10S, y por último los valores que se le otorgan a los objetos de autorización se encuentran en la tabla UST12 (probablemente SAP internamente utilice algunas otras tablas o no haga un uso de todas estas, pero es interesante repasarlo porque puede ser de utilidad para ustedes).

3-  Esta información recopilada es almacenada en el buffer del usuario, el cual tiene para cada usuario todas las autorizaciones que el mismo posee cuando está logueado en el sistema, esta información puede consultarse para el propio usuario o para otro distinto mediante la transacción SU56 o si se necesita un mayor análisis en la tabla USRBF2 (y vínculos a la tabla UST12).

4- A partir de este momento el usuario ya tiene acceso al sistema y todos sus permisos están cargados. El sistema se encuentra a la espera de una acción por parte del mismo.

5- El usuario decide ejecutar una transacción, por ejemplo la FB02 (modificar documento contable).

6- SAP verifica SIEMPRE que el usuario en su buffer posea el permiso para la transacción. Para esto chequea que el objeto de autorización S_TCODE posea el campo TCD y entre sus valores se encuentre el FB02. Este chequeo no depende de la transacción si no que se ejecuta SIEMPRE que una es llamada.

7- Si se posee el valor FB02 se permite la ejecución del código de la transacción y se procede con el mismo, en caso negativo se rechaza automáticamente la solicitud informándole al usuario.

8- Dependiendo de la transacción a ejecutar, la misma puede chequear como primera instancia (antes de la ejecución del código) que se posea un objeto de autorización con un valor determinado para más de un campo. Este objeto, campos y valores se especifican en la definición de la misma a través de la transacción SE93 o la tabla TSTCA donde también pueden consultarse. Este chequeo actúa igual que el del código de transacción y se realiza previo a la ejecución del programa correspondiente a la transacción. En el caso de la transacción FB02 se chequea el objeto F_BKPF_BUK y la actividad (campo ACTVT) con valor 02 (modificación), el campo Sociedad (BUKRS) en esta instancia, no se verifica ya que el valor de chequeo está en blanco). Cabe destacar que no todas las transacciones realizan este chequeo inicial.

9- A partir de este momento se inicia la ejecución del código.

10- El código ABAP de la transacción se ejecuta hasta que dentro del mismo aparezca la instrucción AUTHORITY_CHECK.

11- A través de esta instrucción el programa verifica que los valores especificados para cada campo en la misma se encuentren en el buffer del usuario que la ejecuta. En caso de tenerlos se permite que se continúe la transacción y en caso de ausencia no se permite continuar o se bloquea el acceso a determinada información. Es a decisión del programador de la transacción en que momento se realiza el chequeo, a veces se verifica cuando uno ingresa un valor (por ejemplo la sociedad en la FB02) en donde se verifica el mismo objeto que antes F_BKPF_BUK, pero pidiendo la actividad 02 (modificar) y la sociedad para la cual va a realizarse la modificación (BUKRS).

NOTA 1: Tengamos que cuenta que los campos de un objeto de autorización siempre se verifican en conjunto, quiero decir que la actividad 02 (modificar) solo autoriza a la Sociedad que se encuentra dentro de la misma autorización. Podría ocurrir que dentro de un mismo rol tengamos permiso para modificar una Sociedad pero solo para Visualizar otra. Por eso es importante tener en cuenta que estas son verificadas “en bloque”

NOTA 2: También es importante destacar que es posible y hasta habitual que un usuario tenga más de un ROL asignado, en este caso se produce lo que se conoce como “suma de autorizaciones” y esto quiere decir que los valores solicitados de objetos de autorización pueden encontrarse en cualquiera de los roles que el usuario tiene asignado. Ejemplo: Si en el rol 1 el usuario tiene el acceso a la transacción FB02 (objeto S_TCODE), y en el objeto F_BKPF_BUK la actividad con valor 03 y la sociedad en 0001, pero el programa solicite 02 y 0001 el usuario no podría ingresar a la transacción. Ahora si agregamos un segundo rol al usuario sin ningún objeto S_TCODE pero con el objeto F_BKPF_BUK con valor de actividad 02 y sociedad 0001 el usuario ahora si va a poder tener acceso a ejecutar esta transacción (el primer rol le da el S_TCODE con FB02 y el segundo el F_BKPF_BUK con actividad 02)

Por último cabe destacar que la transacción FB02 necesita de otros objetos de autorización para ser ejecutada pero el nombrado aquí fue solo a modo de ejemplo. En un próximo post veremos un ejemplo completo.

VN:F [1.8.2_1042]
Rating: 4.8/5 (5 votes cast)
VN:F [1.8.2_1042]
Rating: +1 (from 1 vote)

La seguridad en SAP – Roles y permisos (ejemplo)

Tuesday, February 17th, 2009

En esta entrada vamos a ver un ejemplo de acceso a través de la transacción PFCG (Profile Generator) a un rol o papel, las posibilidades de modificación y su vínculo con perfiles de manera que todo lo que explicamos en las entradas anteriores quede un poco más claro.

1- Una vez logueados en SAP, ingresamos a la Transacción PFCG ingresando su nombre en la barra de ejecución rápida y presionando Enter (Intro) o haciendo click en el tilde verde de la izquierda

image

2- Una vez que ingresamos a la transacción podemos ver como nos muestra su interfaz de usuario a través de la cual si hacemos click en Vistas podemos elegir roles simples para ver en la lista de abajo los primeros doscientos con el criterio seleccionado como Filtro (si es que lo utilizamos)

image

image

3- Una vez que se muestra la lista buscamos el rol que queremos modificar o también podemos escribir directamente su nombre en el campo Rol o utilizar la alternativa de búsqueda del mismo campo a la izquierda (cuadrado gris).

4- Desde estas opciones se puede elegir modificar un rol existente (lápiz), visualizar sus datos (anteojos), crear un nuevo rol simple o uno compuesto.

image

5- Una vez en la pantalla siguiente a través de modificar podemos ver una nueva pantalla con datos de descripción, fecha de creación del rol, última modificación, datos de herencia y otras pestañas con el Menú, la solapa de autorizaciones, Usuarios que lo tienen asignado y dos más de menor utilidad práctica (o habitualidad).

image

6- En la solapa de menú podemos observar las transacciones asignadas al rol a través del menú y en este lugar es donde pueden sacarse o agregarse transacción de manera estándar. Este menú es que el usuario que tenga asignado este rol va a ver a la izquierda de su pantalla cuando ingrese a SAP (en conjunto con otros menús que pueda tener por otro roles)

image

7- En la solapa de autorizaciones se puede ver la información del perfil que utiliza SAP para asignar estas autorizaciones (su nombre empieza con T* siempre) y las opciones de modificar las autorizaciones existentes).

image

8- En la solapa de usuarios se pueden apreciar los usuario que tienen asignado el presente rol, pudiéndose asignar nuevos o eliminar asignaciones existentes. A cada asignación a usuario puede definírsele una fecha de inicio y otra de caducidad para la asignación del rol.

image

La idea de esta entrada era que se aprecie como se maneja un rol (papel o grupo de actividad) en SAP y en una próxima entrada estaremos viendo como ejemplo la creación o modificación de un rol y profundizando más en el tema.

VN:F [1.8.2_1042]
Rating: 5.0/5 (4 votes cast)
VN:F [1.8.2_1042]
Rating: +1 (from 1 vote)

Módulo MM SAP (Parte I)

Wednesday, February 4th, 2009

El módulo de SAPMaterials Management“, comúnmente llamado MM, administra y controla los materiales y servicios de la organización. Es decir, participa dentro del proceso de una organización desde que surge la necesitad de compra de un material / servicio hasta que el mismo es recibido / consumido, y finalmente facturado.

 

Como todo módulo dentro de SAP, MM tiene una estructura y datos maestros a definir antes de poder ejecutar transacciones…. pero que es un dato maestro? Cómo defino la estructura de la organización dentro de SAP?

 

Acá van las respuestas!

 

Un dato maestro es una entidad que puede ser utilizada en varios módulos de SAP, pero se encuentra almacenada en un único repositorio, buscando de esta manera evitar datos repetidos, unificar información y por ende poder guardar historiales permitiendo sacar métricas, resúmenes, etc

Un ejemplo de dato maestro es el listado de materiales de la compañía, ya que los mismos se agrupan en “el maestro de materiales”, el cual puede ser utilizado por el módulo MM seleccionando el material que se quiere adquirir, así como también por el módulo PM seleccionando el material que debo utilizar para arreglar una determinada máquina. Otros ejemplos de datos maestros son: los proveedores y clientes.

 

Dentro del módulo MM se manejan los siguientes datos maestros: Materiales, proveedores y registros info (almacena datos de compras teniendo en cuenta materiales, proveedores, planta/centro, etc)

 

Otro punto a tener en cuenta para trabajar dentro de SAP es la definición de la estructura, es decir la representación de la organización dentro del sistema. Dentro de dicha estructura hay que definir: de qué cliente estamos hablando, las compañías que son parte del cliente, y dentro de las compañías, cada planta/centro y almacén que son parte de la misma.

Esta es una breve introducción al módulo de SAP MM, el cual tiene bastante implicancias directas con el armado de la seguridad en SAP, las cual más adelante vamos a ver… como ser el armado de estrategias de liberación, roles por centro, almacen, organización de compras, etc.


VN:F [1.8.2_1042]
Rating: 4.5/5 (2 votes cast)
VN:F [1.8.2_1042]
Rating: +2 (from 2 votes)

Perfiles de autorización

Thursday, January 29th, 2009

En un post anterior explicamos lo que era un Rol o Grupo de Autorizaciones, bueno ahora vamos a tratar de explicar que es un Perfil (o Perfil de autorizaciones).

Antiguamente la seguridad de SAP era un poco más rudimentaria que la actual, era manejada mediante Perfiles de Autorización. Los perfiles no tienen una diferencia sustancial conceptual con lo que es un Rol, simplemente las herramientas para trabajar con ellos eran más límitadas (transacciones SU02, SU03).

Básicamente un perfil era un conjunto de autorizaciones, y el pérfil se le asignaba directamente a un usuario.

Ahora porque explicar que es un perfil si lo relatamos en pasado, como algo que ya no existe… porque esto no es tan así… Al margen de las instalaciones más viejas de SAP (4.0 y anteriores), en las versiones actuales SAP trabaja con perfiles por debajo de los roles.

¿Qué quiere decir eso? Que lo que vemos como roles es simplemente una capa superior a la capa de perfiles que está debajo solo que con la complejidad del manejo de perfiles simplificada porque lo hace SAP automáticamente.

Basicamente por cada rol creado pueden existir uno o más perfiles creados automáticamente por SAP que van a ser los que efectivamente nos den las autorizaciones.

Por eso si ustedes van a ver las autorizaciones específicas van a encontrarse que tienen una pestaña de Roles y otra de Perfiles (que su nombre empieza con la letra T y no pueden ser modificados manualmente) a través de los cuales tienen los permisos asignados.

Hasta ahora es bastante anécdótico el motivo por el que explico los pérfiles, pero hay un motivo más profundo, todavía pueden crearse perfiles manualmente y asignarselos a un usuario, o utilizar un perfil creado anteriormente de la misma manera.

Y adicionalmente… existen perfiles que vienen en la instalación de SAP que pueden ser asignados a los usuarios finales y que muchas veces contienen permisos sumamente amplios, como es el caso del famoso perfil SAP_ALL.

El caso específico del perfil SAP_ALL podemos tratarlo en un post separado pero básicamente podemos decir que nos brinda un acceso irrestricto al sistema a través de sus permisos.

Aprovechando la introducción del perfil SAP_ALL puedo contarles que existen a su vez perfiles simples y perfiles compuestos, siendo la diferencia que los segundos son perfiles de perfiles, o perfiles que solamente contienen otros perfiles dentro (con sus consiguientes autorizaciones)

Resumiendo este post… Existen perfiles que son creados automáticamente por SAP (T-*), existen otros que ya vienen con el sistema y poseen autorizaciones sumamente amplias (SAP_ALL), y a su vez los perfiles pueden contener dentro de si otros perfiles (perfiles compuestos).

Uno de los riesgos a tener en cuenta es que por como está dispuesta la pantalla donde uno consulta los usuarios (una pestaña de roles y otra de perfiles) uno puede llegar a confundirse pensando que un usuario no tiene ninguna autorización crítica mirando el contenido de la pestaña de roles, cuando en realidad si uno revisara la pestaña de perfiles uno podría ver que adicionalmente tiene asignado por ejemplo, los permisos de SAP_ALL.

Un error común, algunos pueden llamarlo tonto, pero sepan que puede pasar. Igualmente más adelante vamos a ver maneras más prácticas de revisar los permisos que efectivamente tiene un usuario.

Ejemplo de uso de la PFCG y vínculo de roles y perfiles

VN:F [1.8.2_1042]
Rating: 5.0/5 (1 vote cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)

La seguridad en SAP – Roles y permisos

Friday, January 23rd, 2009

Tema complicado si los hay… explicar como funciona la seguridad en SAP… trataré de hacer lo más simple posible algo lo suficientemente complicado.

Una vez que accedimos a SAP si nuestro usuario no tiene efectivamente ningún tipo de permiso al sistema (solo el acceso) no vamos a poder realizar ninguna actividad sobre el mismo.

La manera de asignar estos permisos es a través de Roles (alias Papeles, alias Grupos de Autorización).

Los Roles, son un medio para permitir que un usuario acceda a una transacción o pueda ejecutar una función determinada dentro de alguna transacción.

Para entender el concepto hace falta explicar el concepto de Objeto de Autorización: Es un objeto que nos brinda SAP como marco para crear Autorizaciones y es la unidad fundamental de la seguridad en SAP.

Un Objeto de Autorización tiene el siguiente formato:

Nombre del Objeto: S_TCODE (Permiso de acceso a las transacciones)
Campo: TCD (Código de Transacción)

Este es el objeto por excelencia (S_TCODE), en donde uno determina las transacciones a las que el usuario debería tener acceso. Para ser más claros:

Paso 1: El usuario pfernandez necesita acceder a las transacciones SU01 (ABM de Usuarios) y SU10 (Gestión de Usuarios en Lote)

Paso 2: Ante la necesidad se crea un ROL de nombre Z:GESTION_USUARIOS al cual se le asignan las dos transacciones en el menú a través de la transacción PFCG.

Paso 3: Automáticamente SAP crea una autorización para el rol Z:GESTION_USUARIOS para el objeto S_TCODE, al que le agrega en el campo TCD los valores: SU01 y SU10.

Paso 4: Se asigna al usuario pfernandez el rol Z:GESTION_USUARIOS dándole a través del mismo el acceso a las transacciones SU01 y SU10

Paso 5: El usuario  pfernandez, accede al sistema con su usuario y contraseña y una vez dentro, ejecuta la transacción SU01.

Paso 6: SAP analiza el pedido de ejecución de la transacción SU01, y se fija que entre los permisos de pfernandez se encuentre el objeto de autorización S_TCODE con el campo TCD con el valor SU01. Si es correcto permite el acceso a la transacción.

Cabe destacar que el control del objeto S_TCODE está implícito en SAP y se realiza siempre que se llama a una transacción, por eso el objeto S_TCODE es tan “popular” dentro de la segurida SAP

Esta explicación es a fines educativos solamente, más adelante vamos a ver que la generación de un rol, es mucho más compleja que los pasos seguidos anteriormente, pero da una idea general de como es el proceso.

También recuerden que según la versión de SAP con la que trabajemos a veces pueden llamarse Roles, o pueden ser Grupos de Autorización o en algún lugar también pueden ser Papeles.

Una explicación sobre perfiles la podemos ver en el siguiente post

En un próximo post también, vamos a explicar como es el proceso de autorización completo y con ejemplos de mayor complejidad.

Ejemplo en SAP del uso de la transacción PFCG

VN:F [1.8.2_1042]
Rating: 4.5/5 (2 votes cast)
VN:F [1.8.2_1042]
Rating: +1 (from 1 vote)

Módulos de SAP

Friday, January 23rd, 2009

SAP está organizado mediante módulos, agrupando las funcionalidades de distintas áreas de la organización, a su vez los módulos se dividen varios submódulos… algunos de los más conocidos los detallamos a continuación:

BC Basis (Administración del Sistema)
AM Asset Management  (Gestión de Activos Fijos)
CO Controlling (Contabilidad de Costos)
FI Financial Accounting  (Contabilidad Financiera)

  • FI-AP Accounts Payable (Cuentas a Pagar)
  • FI-AR Accounts Receibable (Cuentas a Cobrar)
  • FI-GL General Ledger (Libro de Mayor)
  • FI-TR Tresoury (Tesorería)
  • FI-LC Consolidation (Consolidación)
  • FI-BL Bank Ledger (Bancos)

HR Human Resources (Administración de Recursos Humanos)

  • HR-PY Payroll (Nómina)
  • HR-PA Personell Administration (Administración del personal)
  • HR-OM Gestión Organizacional

IS Industry Specific Solutions (Soluciones dependientes de la industria)
PM Plant Maintenance (Mantenimiento de Planta)
PP Production Planning (Planeamiento de la producción)
PS Project System (Gestión de Proyectos)
QM Quality Management (Control de Calidad)
SD Sales and Distribution (Ventas y Distribución)
MM Materials Management (Gestión de Materiales)
WF Business Work Flow

No necesariamente todos los módulos necesitan estar instalados en una implementación SAP, por ejempo muchas empresas solo manejan su contabilidad (Módulo FI) o no implementan los módulos de ventas SD o lo correspondiente a PP o PM por ser empresas de servicio.

VN:F [1.8.2_1042]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)