Posts Tagged ‘Seguridad’

El sistema de transporte en SAP

Wednesday, March 18th, 2009

El sistema de transporte en la plataforma SAP es de suma importancia para nosotros, desde el punto de vista de la seguridad. A través del mismo nos garantizamos la separación de los ambientes, y el control de cambios. En el presente post vamos a hacer una introducción a los principales aspectos del mismo.

Mediante el sistema de transporte nosotros vamos a realizar el pasaje de datos, estructuras, programas, parametrizaciones, roles, etc. entre los distintos ambientes, a través de lo que en SAP se conocen como órdenes de transporte.

Un breve pantallazo sobre los ambientes lo vimos anteriormente aquí.

Las órdenes de transporte son la estructura en la que se almacena la información a transportar, las mismas están constituidas por tareas individuales (pueden tener una sola) las cuales deben asociarse a usuarios individuales, los cuales adjuntaran sus modificaciones en las mismas.

Cuando uno modifica un objeto en el sistema (ABAP, Customizing, etc) el tipo de objeto es seleccionado automáticamente y se solicita una orden de transporte la cual si uno posee los permisos puede crearla, o simplemente asignarla a una orden ya creada que tengamos asignada con su correspondiente tarea.

Siempre dependiente de los permisos que poseamos (S_CTS_ADMI) podríamos reasignar ordenes de otros usuarios, crear ordenes para otros usuarios, etc.

Una vez creada la orden o asignadas las modificaciones a una tarea, la misma debe liberarse para que sea incluida en la orden y la misma pueda procesarse, la documentación que se desee debe incluirse antes de liberar la tarea. A su vez la orden también necesita ser Liberada por la persona con la responsabilidad y los permisos adecuados para hacerlo, para poder realizar esta tarea deben estar todas las tareas de la misma liberadas.

Cuando la orden es liberada, el sistema se encarga de guardar el versionado de los objetos involucrados, desbloquear los objetos tomados por la orden, y guardados los archivos de datos en el directorio correspondiente del sistema operativo, a su vez se marca la orden como import en el sistema destino.

Dentro del “Transport Organizer” (SE09) se realizan todas las tareas de liberación y monitoreo de las órdenes. Adicionalmente puede utilizarse como sistema de consulta la transacción SE03.

Dentro del workflow de transporte debe incluirse la verificación de tablas, programas, y demás objetos modificados, para verificar que los cambios que se realizan no afectan la seguridad e integridad del sistema.

Los objetos de autorización que principalmente regulan el comportamiento del usuario respecto al sistema de transportes son el S_CTS_ADMI para las funciones administrativas y el S_TRANSPRT, en lo referente a las autorizaciones de crear, modificar y liberar órdenes y tareas.

Este post no trata de ser más que una introducción a la temática del sistema de transporte el cual es mucho más amplio y el cual en breve cubriremos con más información.

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

Proyectos: Metodología de Construcción de Roles en SAP

Thursday, March 12th, 2009

A lo largo de un proyecto de implementación de SAP o una reingeniería de la seguridad del sistema nos encontramos con distintas tareas a realizar para construir los roles que le sean funcionales a la organización.

En el presente post evaluaremos una alternativa metodológica para trabajar utilizada en varios proyectos exitosos de implementación de la seguridad de SAP.

image

El gráfico que vemos arriba representa el proceso completo el cual pasamos a detallar:

Etapa 1 – Identificación de Roles

Entradas: Mapa de Procesos de la organización

Tareas: Una vez que los procesos se encuentran modelados se comienzan a identificar las actividades indivisibles que pueden ser agrupadas en roles. A su vez sobre estos roles se realizar un primer análisis de segregación de funciones para detectar

Salidas: Mapas de procesos con roles asignados a las actividades.

Actores: Analistas de Procesos, Analistas Funcionales SAP, Usuarios Clave, Control Interno, Administración de Seguridad.

Etapa 2 – Selección de Transacciones

Entradas: Mapas de procesos con roles asignados a las actividades.

Tareas: Definición de transacciones necesarias para ejecutar las actividades definidas en el mapa de procesos. Armado de roles y análisis de Segregación de Funciones por código de transacción. Apertura de roles de negocio en roles del sistema de acuerdo a las necesidades de mantenimiento u optimización (agrupar actividades de visualización, incorporar reportes necesarios para ejecutar la actividad principal, etc.)

image

Salidas: Definición de roles del sistema con sus respectivas transacciones. Planilla de Roles, Transacciones y Objetos de Autorización a completar.

Actores: Analistas Funcionales SAP, Control Interno, Administración de Seguridad

image

Etapa 3 – Definición de Variantes

Entradas: Definición de roles del sistema con sus respectivas transacciones. Planilla de Roles, Transacciones y Objetos de Autorización a completar.

Tareas: Elaboración de una planilla de criterios de apertura por niveles organizativos u otras necesidades específicas. Definición de las necesidades de apertura basándose en la confidencialidad, requerimientos del negocio, distribución geográfica, y control interno. Construcción de las variantes.

Salidas: Variantes de rol construidas y listas para las pruebas.

Actores: Usuarios Clave Control Interno, Administración de Seguridad, Analistas Funcionales SAP (apoyo)

Etapa 4 – Prueba de Roles

Entradas: Roles y variantes construidos (al menos uno de prueba).

Tareas: Elaboración de los casos de pruebas positivas y negativas (que no tiene que poder hacer). Ejecución de las pruebas. Registración de resultados y corrección de errores.

Salidas: Roles Aceptados y Construidos.

Actores: Usuarios Clave, Control Interno, Administración de Seguridad, Analistas Funcionales SAP.

image

Etapa 5 – Asignación a Usuarios

Entradas: Planilla de Roles y Variantes (Puede comenzar el relevamiento de asignación antes de la finalización de la prueba)

Tareas: Relevamiento de asignación de usuarios a roles. Puede hacerse un relevamiento previo para validar el criterio de roles con el negocio, y luego abrirlo en las variantes respectivas. Análisis de Segregación de funciones en la asignación.

image

Salidas: Seguridad creada y documentada.

Actores: Usuarios Clave, Control Interno, Administración de Seguridad.

Comentarios sobre el proceso:

- Es de suma importancia incorporar una actividad anterior a todas estas etapas, involucrando a los participantes del proyecto desde el lado funcional, para comentarles como es el proceso, cual sería su participación y el grado en que deberán involucrarse en el proceso. Del éxito, y la comprensión de esta charla dependerá mucho el éxito final del proyecto.

- Las dos revisiones de segregación de funciones a lo largo del proyecto atacan problemas distintos. El primero trata que los roles en si mismos no contengan problemas de segregación, de ser así, la simple asignación del rol estaría dándole un problema al usuario al que se le asigna. Este caso no puede ocurrir nunca porque implicaría una mala definición del rol por parte de los responsables. La segunda revisión es ya para controlar que a un usuario no se le presenten problemas de segregación de funciones por poseer más de un rol y estos entren en conflicto entre sí, y es distinto al control anterior.

Espero que les sea útil el presente post y espero sus comentarios.

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

Parámetros: Mejores prácticas (parte II)

Tuesday, March 10th, 2009

Siguiendo con el post del día de ayer nos quedaron algunos parámetros para seguir con las recomendaciones de “las mejores prácticas”:

Multiloguin

login/disable_multi_gui_login = Debe estar configurado en uno (1) para minimizar dos riesgos. Primero, que los usuarios no compartan su Id y su contraseña de manera que no sea identificable el responsable de las acciones, y segundo que no pueda loguearse concurrentemente un usuario que obtuvo una contraseña de otro, si el primero ya estaba logueado al sistema (quedando registrado el intento de loguin)

login/multi_login_users = Bajo este parámetro pueden definirse excepciones al caso anterior, pero lo ideal es no hacerlo salvo necesidad explícita y justificada.

login/failed_user_auto_unlock = Esto debe ser (0) para evitar que los usuarios bloqueados se habiliten automáticamente. Como mecanismo de control es importante la participación y control por parte del administrador para desbloquearlo.

login/fails_to_session_end = Si bien no es una medida de seguridad en si misma, permite molestar en los intentos de adivinar una contraseña. Lo ideal sería definirlo al menos en un número menos al valor de login/fails_to_user_lock

login/fails_to_user_lock = Para evitar los multiples intentos de adivinar una contraseña lo ideal es definir este parámetro en (3).

Otros parámetros

login/disable_cpic = Si no son necesarias este tipo de conexiones lo ideal es deshabilitar este tipo de acceso. (1)

login/no_automatic_user_sapstar = Lo ideal es deshabilitarlo (1) deshabilita). Para más información ver el artículo:  http://www.seguridadsap.com/sap/usuarios-por-defecto-sap-ddic-earlywatch-etc/.

rdisp/gui_auto_logout = Es interesante definir este parámetro por cuestiones de performance (sesiones activas) y para evitar que las estaciones de trabajo queden logueadas en ausencia del usuario (en conjunto con las políticas locales de las estaciones). Un valor lógico sería  20 minutos (1200)

login/system_client = Preferentemente podría dejarse que el usuario tenga que especificar el número de mandante como una medida adicional de seguridad para los intentos casuales de acceso.

La lista no trata de ser exhaustiva, y tiene fines didácticos e incluso está abierta a la discusión por parte de ustedes si así lo desean en los comments.

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

Nomenclatura de Roles

Friday, March 6th, 2009

A esta altura repasamos ya en el blog varios temas básicos, y hasta tuvimos un pantallazo de la transacción PFCG para poder crear y modificar roles (grupos de autorización o papeles).

Pero ahora hay un tema bastante importante que tratar, porque tiene implicancias bastante serias para el éxito o fracaso de un proyecto de seguridad SAP. Este tema es, justamente, el NOMBRE que les vamos a asignar a estos roles, siendo que el mismo está acotado a 30 caracteres como máximo.

El tema es bastante crítico y existen pocas reglas universales a aplicar al momento de bautizar a los pequeños roles, pero vamos a tratar de enumerar algunas pautas importantes:

1 – La única regla universal… TODOS los roles deben empezar con la letra Z (a lo sumo con la Y)… Esta notación nos va a servir como en cualquier ámbito de SAP para diferenciar lo que nosotros creamos, de lo que es estándar de SAP. Adicionalmente. si trabajamos con los roles estándar sin modificar su nombre y el día de mañana actualizamos la versión de SAP (cosa probable), es también altamente probable que sean sobrescritos por los nuevos, entre otros problemas.

2- Se acabaron las reglas universales… y a partir de ahora arranca la creatividad del diseñador de la seguridad para hacer un buen trabajo. Si aunque parezca mentira, algo de creatividad podemos aplicar en este trabajo ;-)

3- Si existe el requerimiento organizacional que la seguridad sea descentralizada tenemos que preocuparnos por los primeros caracteres que vienen después de la Z. Por ejemplo… si tenemos que crear una seguridad en donde cada oficina de cada país que acceda a SAP va a tener un administrador propio, podríamos empezar nuestro roles como: “ZAR” para Argentina, ZUY para Uruguay, y así sucesivamente.

De esta manera podemos hacer que cada administrador de seguridad esté limitado a gestionar los roles que comiencen con las siglas de su país. Esto se logra limitando a los administradores de seguridad en el objeto S_USER_AGR. Cómo podrán imaginar esta restricción puede hacerse para muchas cosas y por muchos motivos distintos, por ejemplo, para restringir la modificación de roles de base, restringir la modificación de los roles de seguridad, y un largo etc.

El hecho es que solo vamos a poder hacerlo por el principio del nombre de los roles, con lo cual es importante determinar este requerimiento apenas comenzamos a definir la nomenclatura.

4- Otra alternativa es definir, después de la Z, el módulo sobre el que “mayoritariamente” los roles van a dar acceso. Aunque no soy particularmente afecto a esto ya que depende el criterio que se use para construir los roles puede que este no respete los “límites de los módulos de SAP”. En este caso nuestros roles serían algo como “ZAP*”, “ZTR”, etc.

También puede hacerse uso de criterios que nos ayuden a identificar el proceso al que pertenecen los roles (si se encuentran tipificados en la organización)

5- Las posibilidades para las primeras letras son númerosas y mucho va a depender de las necesidades organizacionales. En algunas ocasiones para facilitar la lectura puede utilizarse un separador, pero siempre tengamos en cuenta que la cantidad de caracteres que tenemos para nomenclar un rol son relativamente escasos. Ejemplo: “ZMM:CMPR”, “ZUY:SLCT”

6- Ahora ya utilizamos los primero para la Z, los segundos para el país y hasta a lo mejor alguno más, y nos encontramos parados después de un separador. El resto va a depender mucho de como construyamos en si los roles, si nos enfocamos en puestos de trabajo, en actividades, etc.

En un próximo artículo vamos a tratar especificamente esto, pero hoy escapa un poco a lo que es la nomenclatura. Lo ideal independientemente de esto sería generar nomencladores estandar de 4 letras (+ o – según las variantes) por ejemplo de manera que un rol se llame: “ZAR:CMPR_SLCT”. Así estaríamos creando un rol propio (Z), para Argentina (AR), el cual pertenece al circuito de COMPRAS (CMPR) y su función es la de SOLICITANTE (SLCT).

7- Hasta aquí identificamos un rol, pero nos faltaría identificar en el mismo las variantes, ya que por ejemplo en este caso podrían existir roles separados por Centro, Organización de Compra, etc. Con lo cual el rol si el centro es A001 podría pasar a llamarse “ZAR:CMPR_SLCT-AR01″. De esta manera si utilizamos roles con herencia (Padre e Hijo) podriamos llamar al padre ZAR:CMPR_SLCT y los sucesivos hijos para cada centro serían *-AR01, *-AR02, etc. Podría seguir extendiendose para posibles variantes con Organización de compra hasta que los caracteres alcancen.

Es importante tomar conciencia que la nomenclatura es sumamente importante a la hora de definir los roles, y que adicionalmente es muy importante instalar el tema, incluso, al momento de realizar las definiciones más “grandes” del proyecto. Ya que la complejidad o simplicidad de la seguridad puede verse muchas veces afecta por la nomenclatura que utilizan los Analistas Funcionales a la hora de definir cosas tan globales para SAP como las Sociedades, Centros, Organización de Compras, Tipos de Documento, Divisiones, y un largo Etc.


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

Roles Derivados (Padres e Hijos, Herencia)

Thursday, March 5th, 2009

Ya sabemos que existen roles simples (los grupos de autorización o papeles que ya conocemos), otros que pueden ser compuestos (los roles que contienen roles simples, una suerte de grupo), pero hasta ahora no habíamos oído hablar de Roles Derivados o Herencia de Roles.

Los Roles Derivados son  un concepto muy vinculado con los niveles organizacionales. Ya que básicamente nos permiten definir un Rol como Padre, y después un conjunto de Hijos que van a heredar de este algunas características.

Entre estas características los hijos van a heredar los códigos de transacción que el padre posea, como así también (si están definidos) los valores de los objetos de autorización. Pero ahí se encuentra la diferencia con una simple copia de roles… Van a heredar todos los valores MENOS los que estén definidos como niveles organizacionales, estos últimos van a variar de cada hijo en hijo. Esto resulta muy util a la hora de crear permisos abiertos por locación geográfica o por departamento dentro de la organización, o por cualquier criterio para el que se hayan definido criterios como Sociedad, División, Centro, Organización de Compras, etc. De esta manera estos roles compartiran por ejemplo, las actividades que pueden realiarse sobre una Sociedad, pero no la Sociedad sobre las que pueden realizarse.

Por ejemplo: Podríamos tener un rol de nombre Z:ANLS_CBLE como padre, y dos hijo llamados Z:ANLS_CBLE-1000 y Z:ANLS_CBLE-2000 cada uno con permisos a una sociedad distinta. El día de mañana en caso de necesitarse una modificación en la funcionalidad, solo se tocarían los roles padre y la misma se distribuiría en los roles hijos.

Cuando estén trabajando con este tipo de roles, podrán apreciar que en los hijos no pueden realizarse inclusiones de nuevas transacciones, ya  que SAP limita esto y solo pueden realizarse en el padre y heredadas en los hijos.

En un próximo post explicaremos paso a paso la creación de un rol derivado de otro y como se trabaja con los mismos ya que tienen algunas diferencias particulares.

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

¿Qué es un nivel organizacional en SAP?

Tuesday, March 3rd, 2009

Como ya sabemos, en SAP nos encontramos con Roles (Grupos de Autorización o Papeles), Transacciones, Objetos de Autorización, Campos y Valores.

Ahora profundizando un poco en este último tema… los valores que le damos a los campos de los objetos de autorización.

Si estuvieron experimentando con SAP , seguramente ya notaron que ciertos valores de campos tienen un signo $ antes de un identificador y que al querer modificarlos manualmente SAP nos advierte que se trata de un nivel organizacional y si queremos romper la relación con el mismo.

¿Qué significa nivel organizacional?

SAP nos brinda esta herramienta para simplificar un poco la administración de los roles, ya que los campos denominados “nivel organizacional” son muchas veces campos que aparecen numerosas veces dentro de los objetos de autorización y que suelen tomar el mismo valor en todos los casos. De esta manera que haciendo click en el botón niveles organizacionales cambiamos todas las ocurrencias de ese campo a lo largo de todos los objetos de autorización de dicho rol.

Los niveles organizacionales son unos pocos campos como ser Sociedad, Centro, División, Organización de Compras, y varios más que hacen a la representación de la organización dentro de SAP.

Es habitual que cuando creemos un rol estemos autorizando a que las acciones que pueden realizarse mediante el mismo sean sobre un mismo “nivel organizacional” o grupo de niveles organizacionales.

Por ejemplo el campo “centro” puede utilizarse para definir distintas locaciones o almacenes de materiales, es probable que nosotros creemos un rol que sea “Comprador para el almacen AR01″ (Por Ejemplo: Z-CMPR_AR01) y varias transacciones hagan referencia a objetos de autorización que utilicen el campo centro, de esta manera definimos al nivel organizacional como AR01 y solamente lo cambiamos en un solo lugar y no en todos los objetos manualmente.

Adicionalmente a esto los niveles organizacionales tienen importancia a la hora de crear “roles derivados” o con herencia padre-hijo pero esto lo vamos a tratar en un próximo post.

VN:F [1.8.2_1042]
Rating: 4.0/5 (2 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 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)