Restricciones de acceso a datos en roles 1s. Derechos de acceso al SCP. RLS. Información general y configuración. Restringir el acceso a nivel de registro

Todas las configuraciones de derechos de usuario que realizaremos en el marco de este artículo se encuentran en la sección 1C 8.3 "Administración" - "Configuración de usuarios y derechos". Este algoritmo es similar en la mayoría de las configuraciones en formularios administrados. El programa 1C Contabilidad se utilizará como ejemplo, pero la configuración de derechos en otros programas (1C UT 11, 1C ZUP 3, 1C ERP) se realiza exactamente de la misma manera.

Vayamos a la sección "Usuarios" de la ventana de configuración. Aquí vemos dos hipervínculos: "Usuarios" y "Configuración de inicio de sesión". El primero de ellos le permite ir directamente a la lista de usuarios de esta base de datos. Antes de crear un nuevo usuario, considere las posibles configuraciones de inicio de sesión (hipervínculo a la derecha).

En este formulario de configuración, puede establecer la complejidad de la contraseña (al menos 7 caracteres, contenido obligatorio de varios tipos de caracteres, etc.). Aquí también puede especificar la duración de la contraseña, su período de validez y la prohibición de acceso al programa para usuarios que no hayan tenido actividad durante un período de tiempo determinado.

Ahora puede ir directamente a agregar un nuevo usuario a 1C. Puede hacerlo haciendo clic en el botón "Crear", como se muestra en la imagen a continuación.

En primer lugar, indicamos el nombre completo: "Antonov Dmitry Petrovich", y seleccionamos a una persona del directorio correspondiente. Aquí también puede especificar el departamento en el que trabaja nuestro empleado.

El nombre de inicio de sesión "AntonovDP" se sustituyó automáticamente como abreviatura del nombre completo "Antonov Dmitry Petrovich". Establezca una contraseña y autenticación para 1C Enterprise. Aquí también puede especificar si este usuario puede cambiar la contraseña por su cuenta.

Supongamos que queremos que Dmitry Petrovich Antonov esté disponible en la lista de selección al iniciar esta base de datos. Para hacer esto, debe establecer la bandera en el elemento "Mostrar en la lista de selección". Como resultado, la ventana de autorización al iniciar el programa se verá como la que se muestra en la figura a continuación.

Prestemos atención a otra configuración importante en la tarjeta de guía del usuario: "Se permite iniciar sesión en el programa". Si no se establece el retraso, el usuario simplemente no podrá ingresar a esta base de información.

Derechos de acceso

Después de completar todos los datos en la tarjeta de usuario, Antonov Dmitry Petrovich, los anotaremos y procederemos a configurar los derechos de acceso, como se muestra en la figura a continuación.

Ante nosotros abrió una lista de perfiles de acceso previamente ingresados ​​​​en el programa. Marque las casillas que se requieran.

Acceder a perfiles de grupo

Los perfiles de grupo de acceso se pueden configurar desde el formulario principal para configurar usuarios y derechos. Vaya a la sección "Grupos de acceso" y haga clic en el hipervínculo "Perfiles de grupos de acceso".

Vamos a crear un nuevo grupo desde el formulario de lista abierto. En la sección tabular de la pestaña "Acciones permitidas (roles)", es necesario marcar las casillas de aquellos roles que afectarán a los derechos de acceso de los usuarios incluidos en el grupo que estamos creando. Todos estos roles se crean y configuran en el configurador. No se pueden modificar ni crear desde el modo usuario. Solo puede elegir de una lista existente.

RLS: Restricción de acceso a nivel de registro

Le permite configurar de manera más flexible el acceso a los datos del programa en ciertas secciones. Para activarlo, coloque la bandera en el elemento del mismo nombre en el formulario de configuración de usuarios y derechos.

Tenga en cuenta que habilitar esta configuración puede afectar negativamente el rendimiento del sistema. El punto es que el mecanismo RLS cambia todas las solicitudes según las restricciones establecidas.

Vayamos al perfil de grupo de acceso "Grupo de prueba" que creamos anteriormente. La siguiente figura muestra que después de habilitar la restricción de acceso a nivel de registro, apareció una pestaña adicional "Restricciones de acceso".

Supongamos que queremos que los usuarios a los que se asigna el grupo de prueba tengan acceso a los datos de todas las organizaciones de esta base de datos, excepto las especificadas en el perfil.

En la sección tabular superior, establezca la restricción de acceso por organización. En la parte inferior, aclaramos que no se brindará acceso a datos (documentos, directorios, etc.) para la organización Roga LLC.

A menudo existe la necesidad de restringir parcialmente el acceso a los datos. Por ejemplo, cuando un usuario necesita ver documentos solo para su organización. En tales casos, 1C utiliza un mecanismo de restricción de acceso a nivel de registro (el llamado RLS - Record Level Securiy).

Por ejemplo, supongamos que nos enfrentamos a la siguiente tarea. La empresa mantiene una contabilidad multiempresa y cada contraparte y usuario de la base de datos pertenece a una organización específica. Es necesario proporcionar acceso al directorio de “Contratistas” de tal manera que cada usuario pueda ver, editar y agregar contrapartes solo a su organización.

Para solucionar el problema utilizaremos la plataforma “1C:Enterprise 8.2″. Vamos a crear una nueva configuración en cuyas propiedades se seleccionará la opción "Aplicación administrada" como modo de inicio principal.

A continuación, creemos el directorio "Organizaciones" y dos directorios más: "Contratistas" y "Usuarios" con el atributo "Organización". Además de los directorios, necesitamos dos parámetros de sesión: "Organización" y "Usuario" (de los tipos apropiados). Los valores de estos parámetros se establecen al inicio de una sesión de configuración y se almacenan hasta que finaliza. Son los valores de estos parámetros los que usaremos al agregar condiciones de restricción de acceso a nivel de registro.

Los parámetros de sesión se establecen en un módulo especial - "Módulo de sesión"

En este módulo, describimos el procedimiento predefinido "SetSessionParameters" en el que llamamos a la función del módulo general preparado previamente "FullPermissions". Esto es necesario debido a las peculiaridades del funcionamiento de la base de datos en el modo de aplicación administrada, cuando parte del código del programa solo se puede ejecutar en el lado del servidor (no me detendré en explicar estos principios en este artículo).

Código 1C v 8.x Procedimiento Establecimiento de parámetros de sesión (parámetros obligatorios)
FullPermissions.SetSessionParameters();
Procedimiento final

En las propiedades del módulo “Permisos completos”, marque las casillas “Servidor”, “Llamada al servidor” y “Privilegiado” (este último significa que los procedimientos y funciones de este módulo se ejecutarán sin control de acceso). El texto del módulo se verá así:

Código 1C v 8.x Función DetermineUsuarioActual()
CurrentUser = Directorios.Usuarios.FindByName(UserName(), True);
Devolver usuario actual;
funciones finales

Procedimiento SetSessionParameters() Exportar
UsuarioActual = Determinar UsuarioActual();
OrganizaciónActual = Directorios.Organizaciones.ReferenciaVacía();
Si ValueFilled (Usuario actual) Entonces
OrganizaciónActual = UsuarioActual.Organización;
Terminara si;
SessionParameters.User = UsuarioActual;
SessionParameters.Organization = OrganizaciónActual;
Procedimiento final

FunctionSessionParameterSet(ParameterName) Exportar
Retornar ValueFilled(SessionParameters[ParameterName]);
funciones finales

Función RoleAvailableToUser(RoleName) Exportar
Devolver función disponible (nombre de función);
funciones finales

En el módulo de la aplicación administrada, verificaremos la presencia de un usuario de configuración en el directorio "Usuarios" (para simplificar, lo buscaremos por nombre) y apagaremos el sistema si no lo encontramos. Esto es necesario para garantizar que se completen los parámetros de la sesión.

Código 1C v 8.x Procedimiento de operación previa al sistema (falla)
// todos excepto el administrador serán verificados por presencia en el directorio "Usuarios"
Si no es FullPermissions.RoleAvailableToUser("FullPermissions") Entonces
Si NO es FullPermissions.SessionParameterSet("Usuario") Entonces
Advertencia("Usuario """ + Nombre de usuario() + """ no encontrado en el directorio!");
Rechazo = verdadero;
Devolver;
Terminara si;
Terminara si;
Procedimiento final

Ahora podemos ir directamente a la descripción de las restricciones de acceso. Para ello creamos el rol “Usuario” y vamos a la pestaña “Plantillas de restricción”, donde añadimos una nueva plantilla “AccountsReadingChange” con el siguiente texto de plantilla: WHERE Organización = Organización #Parámetro(1)


El texto de la plantilla de restricción es una extensión del lenguaje de consulta. A diferencia de una solicitud regular, el texto de restricción debe contener necesariamente la cláusula "DÓNDE". Como valores de los parámetros de consulta (en nuestro caso es “&Organization”), se utilizan los valores de los parámetros de sesión del mismo nombre. Una construcción de la forma #Parameter(1) significa que el sistema sustituirá el texto pasado como primer parámetro en el lugar donde se usa la plantilla en este lugar. Con la ayuda de la plantilla proporcionada, se verificará cada registro de la tabla (en nuestro caso, será la búsqueda de "Contratistas"). Para los registros cuyo valor del atributo “Organización” coincida con el especificado en el parámetro de sesión correspondiente, se cumplirá la condición descrita en la plantilla. Por lo tanto, estas entradas estarán disponibles para leer, editar o agregar (según a cuál de estos derechos se aplique la plantilla). Demostraré lo anterior con nuestro ejemplo.

Vayamos a la pestaña "Derechos" del rol "Usuario" y abramos la lista de derechos en el directorio "Cuentas". Usaremos la plantilla de restricción "AccountsReadChange" para los permisos "Leer", "Cambiar" y "Agregar".

Para el derecho de “Leer”, utilizaremos una plantilla con el parámetro “OR ThisGroup”. Al mismo tiempo, los usuarios de este rol podrán leer no solo los elementos del directorio "Cuentas" de su organización, sino también todos los grupos de este directorio.

#AccountsReadingChange("O este grupo")

Dado que al agregar nuevos elementos del directorio, el sistema realiza una lectura implícita de los atributos predefinidos (esto es necesario, por ejemplo, para la numeración), es necesario garantizar la lectura sin obstáculos de estos campos. Para hacer esto, agregue una línea adicional con un texto de restricción vacío a la tabla de restricción de acceso a datos y enumere los campos para los que se aplica esta regla: Enlace, Versión de datos, Principal, Código.

Así, se resuelve la tarea de restringir el acceso a nivel de registro. Los usuarios con restricciones existentes tendrán acceso para ver y editar datos solo para su organización.

La plataforma 1C:Enterprise 8 tiene un mecanismo integrado para restringir el acceso a los datos a nivel de registro. Puedes leer información general al respecto aquí. En resumen, RLS le permitirá restringir el acceso a los datos de acuerdo con algunas condiciones en los valores de los campos. Por ejemplo, puede restringir el acceso de los usuarios a los documentos según el valor del atributo "Organización". Algunos usuarios trabajarán con documentos para la organización "Empresa Administradora", y el resto con la organización "Planta Láctea". Como ejemplo.

Preparación

El ejemplo se implementa en la configuración de demostración de SCP 1.3. Vamos a crear un usuario "Storekeeper" y agregarle el rol "Storekeeper" del mismo nombre.

Ahora procedamos directamente a configurar los derechos de acceso a nivel de registro. Pasemos a la interfaz "Administración de usuarios". En el menú principal, seleccione "Acceso a nivel de registros -> Opciones". Aquí marcamos la casilla "Restringir el acceso a nivel de registro por tipos de objetos", y en la lista de objetos seleccionamos "Organizaciones".

Por lo tanto, hemos habilitado el uso de RLS. Ahora necesitas configurarlo.

El control de acceso a nivel de registro no se configura por separado para cada usuario o perfil de permisos. RLS está configurado para grupos de usuarios. Agreguemos un nuevo grupo de usuarios, llamémoslo "Tiendas"

La composición del grupo en el lado derecho del formulario muestra una lista de usuarios que pertenecen a este grupo. Agreguemos el usuario que creamos anteriormente. A la izquierda hay una tabla de restricciones de acceso. En la configuración de RLS, hemos elegido que el acceso esté limitado solo por organizaciones, por lo que vemos solo un tipo de objeto de acceso. Haga clic en el botón "Configuración de acceso". Se abre el proceso de configuración de permisos para el grupo actual.

En la lista de objetos de acceso para el grupo, agregue la organización "PPE "Emprendedor"". Dejaremos el tipo de herencia de derechos sin cambios. El derecho al objeto de acceso se establecerá en lectura y escritura. Haga clic en "Aceptar", la configuración está lista. Acabamos de configurar RLS a nivel de organización.

Lo que ve el usuario

Ejecute el programa con el usuario creado anteriormente y abra el directorio "Organizaciones". Así es como se verá la lista para nuestro usuario y para un usuario con todos los derechos:

Como podemos ver, el usuario almacenista ve solo una organización para la que hemos abierto el acceso de lectura. Lo mismo se aplica a los documentos, como recibos de bienes y servicios.

Por lo tanto, el usuario no solo no verá organizaciones, cuyo acceso no está configurado para él, sino que tampoco podrá leer / escribir documentos y otros objetos en la base de datos, para los cuales los derechos en el rol en el atributo "Organización " se establecen.

Hemos considerado el ejemplo más simple de configuración de RLS. En el próximo artículo, hablaremos sobre la implementación del mecanismo RLS en la configuración de la versión 1.3 de "Manufacturing Enterprise Management".

1C tiene un sistema de derechos de acceso incorporado (este sistema se llama roles 1C). Este sistema es estático, ya que el administrador ha establecido los derechos en 1C, que así sea.

Además, existe un sistema dinámico de derechos de acceso (llamado - RLS 1C). En él, los derechos 1C se calculan dinámicamente en el momento del trabajo del usuario en función de los parámetros especificados.

Una de las configuraciones de seguridad más comunes en varios programas es un conjunto de permisos de lectura/escritura para grupos de usuarios y luego, la inclusión o exclusión de un usuario de los grupos. Por ejemplo, un sistema similar se usa en Windows AD (Active Directory).

Tal sistema de seguridad en 1C se llama Roles 1C. Roles 1C se encuentra en la configuración en la rama General / Roles. Los roles 1C actúan como grupos para los que se asignan derechos 1C. A continuación, el usuario es incluido o excluido de este grupo.

Al hacer doble clic en el nombre de la función 1C, abrirá el editor de derechos para la función 1C. A la izquierda hay una lista de objetos 1C. Seleccione cualquiera y las opciones para los derechos de acceso se mostrarán a la derecha (como mínimo: leer, agregar, cambiar, eliminar).

Para la rama superior (el nombre de la configuración actual), se establecen derechos administrativos 1C y acceso para iniciar varias opciones.

Todos los derechos 1C se dividen en dos grupos: derecho "simple" y el mismo derecho con la adición de "interactivo". ¿Qué significa?

Cuando un usuario abre un formulario (por ejemplo, procesando) y presiona un botón en él, el programa en el lenguaje 1C incorporado realiza ciertas acciones, por ejemplo, eliminando documentos. Para el permiso de estas acciones (realizadas programáticamente) - "simplemente" los derechos de 1C son responsables.

Cuando un usuario abre un diario y comienza a hacer algo desde el teclado por su cuenta (por ejemplo, ingresar nuevos documentos), estos son derechos 1C "interactivos".

Un usuario puede tener varios roles disponibles, en cuyo caso los permisos se suman.

La sección sobre las posibilidades de establecer derechos de acceso usando roles es un objeto 1C. Es decir, puede habilitar el acceso al directorio o deshabilitarlo. No se puede encender un poco.

Para ello, existe una extensión del sistema de roles 1C denominada 1C RLS. Este es un sistema dinámico de derechos de acceso que le permite restringir parcialmente el acceso. Por ejemplo, el usuario solo ve documentos para un determinado almacén y organización y no ve el resto.

¡Con cuidado! Al utilizar el confuso esquema RLS 1C, diferentes usuarios pueden tener preguntas cuando intentan verificar el mismo informe generado por diferentes usuarios.

Tomas un cierto directorio (por ejemplo, organizaciones) y un cierto derecho (por ejemplo, lectura). Permite la lectura para el rol 1C. En el panel Restricción de acceso a datos, establece el texto de la consulta, que devuelve VERDADERO o FALSO según la configuración. La configuración generalmente se almacena en el registro de información (por ejemplo, el registro de información de configuración Contabilidad UserAccessRightsSettingsUsers).

Esta solicitud se ejecuta dinámicamente (al intentar implementar la lectura), para cada entrada de directorio. Así, para aquellos registros para los que la consulta de seguridad devolvió TRUE, el usuario lo verá, pero el resto no.
Los derechos 1C que están sujetos a restricciones RLS 1C están resaltados en gris.

La copia de la misma configuración de RLS 1C se realiza mediante plantillas. Crea una plantilla, asígnele el nombre (por ejemplo) MyTemplate, especifique una solicitud de seguridad en ella. A continuación, en la configuración de derechos de acceso de 1C, especifique el nombre de la plantilla de esta manera: "#MyTemplate".

Cuando un usuario trabaja en modo 1C Enterprise, cuando RLS 1C se está ejecutando, puede recibir un mensaje de error "Derechos insuficientes" (por ejemplo, para leer el directorio Xxx).

Esto significa que RLS 1C bloqueó la lectura de varios registros.

Para evitar que aparezca dicho mensaje, es necesario usar la palabra PERMITIDO () en el texto de la solicitud en el lenguaje 1C incorporado.

Por ejemplo:

El programa 1C tiene incorporado un sistema de derechos de acceso, que se encuentra en el Configurador - General - Roles.

¿Qué caracteriza a este sistema y cuál es su finalidad principal? Le permite describir conjuntos de derechos que corresponden a las posiciones de los usuarios o sus actividades. Este sistema de derechos de acceso es de naturaleza estática, lo que significa que, dado que el administrador estableció los derechos de acceso en 1C, lo es. Además del estático, existe un segundo sistema de derechos de acceso: dinámico (RLS). En este sistema, los derechos de acceso se calculan de forma dinámica, en función de los parámetros dados, en el curso del trabajo.

Papeles en 1C

Las configuraciones de seguridad más comunes en diferentes programas son el llamado conjunto de permisos de lectura/escritura para varios grupos de usuarios y en el futuro: inclusión o exclusión de un usuario específico de los grupos. Tal sistema, por ejemplo, se usa en el sistema operativo Windows AD (Active Directory). El sistema de seguridad utilizado en el software 1C se llama roles. ¿Lo que es? Roles en 1C es un objeto que se encuentra en la configuración en la rama: General - Roles. Estos roles 1C son grupos para los que se asignan derechos. En el futuro, cada usuario puede ser incluido y excluido de este grupo.

Al hacer doble clic en el nombre del rol, abrirá el editor de derechos para el rol. A la izquierda hay una lista de objetos, marque cualquiera de ellos y a la derecha verá opciones para posibles derechos de acceso:

— lectura: obtener registros o sus fragmentos parciales de una tabla de base de datos;
- añadir: nuevos registros manteniendo los existentes;
— cambio: realizar cambios en los registros existentes;
- borrado: algunos registros, manteniendo el resto sin cambios.

Tenga en cuenta que todos los derechos de acceso se pueden dividir en dos grupos principales: este es un derecho "simple" y un derecho de este tipo con la adición de la característica "interactiva". ¿Qué se quiere decir aquí? Y la cosa es la siguiente.

En el caso de que el usuario abra algún formulario, por ejemplo, el procesamiento, y al mismo tiempo haga clic en él con el mouse, el programa en el lenguaje 1C incorporado comienza a realizar acciones específicas, por ejemplo, eliminar documentos. Por el permiso de tales acciones realizadas por el programa, los derechos de 1C son responsables, respectivamente, "simplemente".

En el caso de que el usuario abra el diario y comience a ingresar algo por su cuenta desde el teclado (nuevos documentos, por ejemplo), entonces los derechos 1C "interactivos" se encargan de permitir tales acciones. Cada usuario puede tener varios roles disponibles a la vez, luego se agrega el permiso.

RLS en 1C

Puede habilitar el acceso al directorio (o documento) o deshabilitarlo. No puedes simplemente encenderlo un poco. Para este propósito, existe una cierta extensión del sistema de roles 1C, que se llama RLS. Este es un sistema de derechos de acceso dinámico que introduce restricciones de acceso parciales. Por ejemplo, solo los documentos de una determinada organización y almacén están disponibles para la atención del usuario, él no ve el resto.

Debe tenerse en cuenta que el sistema RLS debe aplicarse con mucho cuidado, ya que es bastante difícil entender su intrincado esquema y diferentes usuarios pueden tener preguntas cuando, por ejemplo, comparan el mismo informe, que se genera a partir de varios usuarios Consideremos tal ejemplo. Eliges un directorio específico (organizaciones, por ejemplo) y un derecho específico (lectura, por ejemplo), es decir, permites la lectura para el rol 1C. Al mismo tiempo, configura el texto de la solicitud en el panel remoto Restricciones de acceso a datos, según el cual se establece Falso o Verdadero, según la configuración. Por lo general, las configuraciones se almacenan en un registro de información especial.

Esta consulta se ejecutará dinámicamente (cuando se intente organizar la lectura), para todas las entradas del directorio. Funciona así: aquellos registros para los que ha asignado la solicitud de seguridad - Cierto, el usuario verá, pero otros no. Los derechos 1C con restricciones establecidas se resaltan en gris.

La operación de copiar configuraciones RLS idénticas se realiza mediante plantillas. Para empezar, crea una plantilla, nombrándola, por ejemplo, MyTemplate, en la que refleja la solicitud de seguridad. Luego, en la configuración de derechos de acceso, especifique el nombre de esta plantilla de esta manera: "#MyTemplate".

Cuando un usuario trabaja en modo 1C Enterprise, al conectarse a RLS, puede aparecer un mensaje de error como: “Derechos insuficientes” (para leer el directorio XXX, por ejemplo). Esto indica que el sistema RLS ha bloqueado la lectura de algunos registros. Para evitar que este mensaje vuelva a aparecer, debe ingresar la palabra PERMITIDO en el texto de la solicitud.

https://zabor-vam.ru/product/metallicheskie/zabory-iz-profnastila/

Artículos similares