Imprimir (Ctrl+P)

Restringir el acceso a los datos

El mecanismo de restricción de acceso a datos (también conocido como RLS, Row Level Security) le permite gestionar los derechos de acceso no sólo a nivel de objetos de metadatos, sino también a nivel de objetos de base de datos 1C:Enterprise. Para restringir el acceso a los datos, se pueden utilizar los siguientes objetos 1C:Enterprise:
● roles,
● parámetros de sesión,
● opciones funcionales,
● módulos comunes privilegiados,
● palabra clave PERMITIDA en el lenguaje de consulta.
Compartir los objetos enumerados permite la máxima flexibilidad cuando es necesario diferenciar los derechos de acceso a los datos entre usuarios que realizan diferentes funciones.
Se pueden imponer restricciones de acceso a los datos en las siguientes operaciones de datos (derechos de acceso): leer (derecho de lectura), agregar (derecho de agregar), modificar (derecho de cambio) y eliminar (derecho de eliminar). El usuario actual podrá realizar la operación requerida en siguientes casos:
● Para operaciones de lectura y eliminación, el objeto que reside en la base de datos debe cumplir con una restricción de acceso a datos.
● Para una operación de adición, la restricción de acceso a datos debe coincidir con el objeto que planea escribir en la base de datos.
● Para una operación de cambio, la restricción de acceso a datos debe coincidir con el objeto tanto antes del cambio (para que el objeto se lea) como después del cambio (para que el objeto se escriba).
Al aplicar restricciones de acceso a datos, recuerde que puede especificar solo una condición para las operaciones de modificación, adición y eliminación, pero puede especificar más de una restricción de acceso a datos para una operación de lectura. Esto significa que se pueden establecer diferentes condiciones para leer diferentes campos de un objeto y, al configurar una condición, puede especificar tanto el nombre de un campo específico como el campo especial Otros campos. En el primer caso, la condición se impondrá solo si la selección (que lee los datos) contiene un campo para el cual se establece la restricción, y en el segundo caso, la restricción se impondrá para todos los campos del objeto, excepto para campos para los cuales se establecen restricciones explícitamente.
Al establecer una restricción en un campo específico, este campo se leerá si se cumple la restricción, y al establecer una restricción en Otros campos, los datos del objeto se leerán solo si la restricción se cumple para todos los campos del objeto incluidos en el Solicitud de lectura de datos.
Los siguientes tipos de objetos de base de datos pueden estar sujetos a varias restricciones en diferentes tipos cambios (añadir, modificar, eliminar):
● Planes de intercambio,
● Directorios,
● Documentos,
● Planes tipos de características,
● Planes de cuentas,
● Planes para tipos de cálculo,
● Procesos de negocio,
● Tareas.
Para los siguientes tipos de objetos de bases de datos, es posible imponer restricciones a la lectura no solo del objeto completo, sino también de sus campos individuales:
● Planes de intercambio,
● Directorios,
● Documentos,
● Registros de documentos,
● Planes para tipos de características,
● Planes de cuentas,
● Planes para tipos de cálculo,
● Registros de información,
● Procesos de negocio,
● Tareas.
¡ATENCIÓN! Al acceder a los campos de los objetos de la base de datos utilizando las propiedades de los objetos de la aplicación desde el lenguaje integrado 1C:Enterprise, se lee el objeto completo y no solo el valor del campo que se está utilizando. La excepción es al recibir una vista, cuando solo se leerán los valores de los campos involucrados en la generación de la vista.
Las restricciones de acceso están contenidas en roles, se pueden especificar para la mayoría de los objetos de metadatos y están escritas en un lenguaje especial que es un subconjunto del lenguaje de consulta.

Idioma de restricción de acceso a datos

Las restricciones de acceso a datos se describen en un lenguaje especial, que es un subconjunto del lenguaje de consulta ( descripción detallada lenguaje de consulta. El idioma de restricción de acceso a datos tiene los siguientes cambios en relación con el idioma de consulta:
● En una solicitud de restricción de acceso a datos, siempre hay una tabla como fuente de datos: esta es la tabla del objeto al que se aplica la restricción (el objeto principal de la restricción).
● La descripción de la solicitud se ha acortado. El lenguaje de restricción de acceso a datos utiliza solo las secciones DESDE y DÓNDE del lenguaje de consulta. Entonces, la descripción del lenguaje de consulta se ve así:
SELECCIONAR [PERMITIDO] [DIFERENTE] [ PRIMERO<Количество> ]
<Lista de campos de selección>
[DE <Список источников> ]
[DÓNDE<Условие отбора> ]
[Agrupar por <Поля группировки> ]
[TENIENDO<Условие отбора> ]
[PARA CAMBIAR [ <Список таблиц nivel superior> ]]
Mientras que la descripción del lenguaje de consulta de restricción de acceso a datos es la siguiente:
[Alias ​​de tabla del objeto de restricción principal]
[DE <Список источников> ]
[DÓNDE<Условие отбора> ]

En las consultas anidadas utilizadas en el lenguaje de restricción de acceso a datos, el conjunto de capacidades permitidas es limitado;
● Puede especificar parámetros de sesión y opciones funcionales como elementos de condición;
● En cualquier momento de una solicitud de restricción de acceso a datos, está permitido utilizar plantillas que simplifiquen las restricciones de escritura.
La parte principal de la restricción es una condición que se evalúa para cada registro de la tabla de la base de datos que está sujeto a una restricción de acceso a los datos. Un registro se considera disponible si, como resultado de la operación de la condición para un registro de tabla del objeto principal de la restricción, se obtiene una tabla no vacía (es decir, una tabla con 1 o más registros). Si la condición da como resultado una tabla vacía, el registro para el cual se cumplió la condición de esta manera se considera inaccesible. Además, cambiar la entrada de la tabla del objeto de restricción principal
Se considera válido si el asiento no contradice la restricción especificada para el derecho, tanto antes como después de realizarse la operación de modificación.

Campos de tabla

En restricciones de acceso a datos puedes utilizar:
● Campos de tabla del objeto para el cual se describe la restricción de acceso a datos.
Por ejemplo, si se impone una restricción a la lectura de elementos del directorio de Contrapartes, entonces la restricción puede utilizar los campos del directorio de Contrapartes y sus partes tabulares. En particular, las restricciones más simples para leer elementos del directorio Contrapartes pueden verse así:

DONDE Nombre = “Fábrica de Ladrillos”
O así:

DÓNDE Productos.Nombre= “El ladrillo es rojo”
Donde Productos es la parte tabular del directorio de Contratistas.
● Campos de tablas de objetos accesibles a través de enlaces en el objeto de restricción principal.
Por ejemplo, si el atributo Administrador principal del directorio de Contratistas tiene un tipo de enlace al directorio de Usuarios, entonces la restricción de acceso puede tener, por ejemplo, la siguiente forma:

DÓNDE Código de administrador principal= “Ivánov”
O:

DÓNDE Gerente principal.Nombre.individual= “Petrovsky”
● Campos de tablas de objetos asociados al objeto principal de restricciones por determinadas condiciones y expresiones sobre los mismos.
Por ejemplo, se podrá imponer la siguiente restricción en la lectura de elementos del directorio de Contrapartes:

Contrapartes
DE
Directorio.Contrapartes CÓMO Contrapartes
CONEXIÓN IZQUIERDA Directorio.Usuarios Usuarios AS
Software = Usuarios.Nombre
DÓNDE = “Petrovsky”
Esta restricción utiliza los campos de los elementos del directorio Usuarios asociados a este elemento del directorio Contrapartes por el valor de los campos Nombre.

Consultas anidadas

Las consultas anidadas se utilizan para formar conjuntos de registros que se pueden utilizar:
● vincular a la tabla del objeto de restricción principal;
● para uso como operando para operaciones de comparación B o NOT B.
Las consultas anidadas pueden utilizar cualquier característica del lenguaje de consulta excepto:
● operador EN JERARQUÍA;
● propuestas de RESULTADOS;
● los resultados de consultas anidadas no deben contener partes tabulares;
● algunas mesas virtuales, en particular Restos y pérdidas de balón.
En el siguiente ejemplo de una restricción de lectura del directorio Cuentas, se utiliza una subconsulta como un conjunto de registros para asociar con el objeto principal de la restricción:

Contrapartes
DE
Directorio.Contrapartes CÓMO Contrapartes
CONEXIÓN IZQUIERDA
(ELEGIR
Usuarios.Nombre, Usuarios.Individual
DE
Directorio.Usuarios Usuarios AS
DÓNDE
Usuarios.Código> “Petechkin”) Usuarios de AS
POR Nombre de las Contrapartes. = Usuarios.Nombre
DÓNDE Usuarios.Individual.Nombre= “Petrovsky”
El siguiente ejemplo muestra una restricción en la lectura del directorio Passport Data of Individuals, en el que se utiliza una consulta anidada en
como operando de la operación de comparación B:

DÓNDE
Datos del pasaporteIndividual.Individual EN
(ELIJA VARIOS
Trabajadores.Individual COMO INDIVIDUO
DE
Registro de Información.Empleados COMO TRABAJADORES)
Si en una consulta anidada es necesario obtener datos de la parte tabular, entonces en la sección FROM de la consulta anidada debes acceder directamente a la parte tabular. Por ejemplo, en lugar de:

SELECCIONE Enlace COMO Enlace.
Productos.Nombre CÓMO Nombre del producto
DE Directorio.Contrapartes
como consulta anidada dentro de una restricción, debes usar:

Opciones de sesión

Las solicitudes de restricción de acceso a datos pueden incluir parámetros de sesión. Por ejemplo, para leer elementos del directorio. Grupos de correo electrónico Se pueden establecer las siguientes restricciones de acceso:

DÓNDE Propietario.AccountAccess.User = & Usuario actual
Y Propietario.Acceso a cuenta.Administración= VERDADERO

CurrentUser es un parámetro de sesión

Opciones funcionales

Las solicitudes de restricción de acceso a datos pueden incluir opciones funcionales. Sólo se pueden utilizar opciones funcionales independientes de los parámetros. Por ejemplo, si el directorio de Artículos tiene el atributo MainWarehouse, entonces la restricción para leer este atributo puede verse así:

DONDE &Contabilidad de almacén = VERDADERO

Donde la Contabilidad de Almacén es una opción funcional

Características de uso

No todos los campos del objeto de datos de restricción principal pueden usarse en restricciones sobre los siguientes tipos de objetos de base de datos:
● en los registros de acumulación, las restricciones de acceso sólo pueden contener medidas del objeto principal de la restricción;
● en los registros contables, sólo se pueden utilizar en las restricciones las mediciones del balance del objeto principal de la restricción.
NOTA. Si, en condiciones de acceso limitado a los datos del registro de acumulación de facturación, se utilizan mediciones que no están incluidas en los totales, entonces
Al acceder a la tabla virtual de revoluciones no se utilizan los totales almacenados y la solicitud se realiza íntegramente según la tabla de movimientos.

Acciones de restricción de acceso

Las restricciones de acceso se verifican cada vez que se realizan operaciones apropiadas en los objetos de la base de datos (desde cuadros de diálogo, desde el lenguaje integrado, mediante consultas) y pueden actuar de dos maneras:
● Todo. El método "todos" implica que se debe realizar alguna operación sobre los datos (desde cuadros de diálogo, desde un lenguaje integrado o mediante consultas) en todos los objetos de la base de datos implicados en esta operación. Si dicha operación requiere leer o modificar objetos de la base de datos para los cuales no se cumplen las restricciones de acceso apropiadas, la operación finaliza
anormal debido a una infracción de acceso.
● Permitido. El método "permitido" implica que al realizar una operación con datos, solo se deben leer aquellos objetos de la base de datos que cumplan con las restricciones de acceso apropiadas. Los objetos de la base de datos que no cumplen con las restricciones de acceso se consideran faltantes al realizar dicha operación y no afectan el resultado de la operación.
Las restricciones de acceso a los datos se imponen a los objetos de la base de datos en el momento en que 1C:Enterprise accede a la base de datos. En la versión cliente-servidor de 1C:Enterprise, las restricciones se aplican en el servidor 1C:Enterprise.
El método de operación de las restricciones elegidas para realizar cada operación sobre datos está determinado por el propósito de esta operación y el grado de responsabilidad de sus resultados. En particular, el método "permitido" se utiliza cuando se muestran listas dinámicas y algunas otras acciones interactivas. El método "todos" se utiliza al realizar cualquier operación con objetos de la aplicación desde el lenguaje integrado 1C:Enterprise, incluidos los cambios en los objetos de la base de datos. Por lo tanto, por ejemplo, pueden surgir dificultades al construir una selección para el método Select() de administradores de directorios, documentos y otros, con posterior omisión del resultado, si se establece una restricción bastante compleja en el objeto correspondiente, ya que no todas las condiciones en el La restricción de los derechos de acceso se puede representar adecuadamente como una selección para el método Select().
En consultas, puede controlar cómo operan las restricciones de acceso a datos. Para ello, el lenguaje de consulta proporciona una palabra clave. PERMITIDO. Si la solicitud no especifica PERMITIDO, entonces las restricciones se aplican en la forma "todos". Si se especifica la palabra PERMITIDO, entonces se selecciona el método "permitido".
Es importante que si una consulta no especifica la palabra clave ALLOWED, todas las selecciones especificadas en esa consulta no deben entrar en conflicto con ninguna de las restricciones de lectura de los objetos de la base de datos utilizados en la consulta. Además, si la consulta utiliza tablas virtuales, las selecciones correspondientes deben aplicarse a las propias tablas virtuales.
Ejemplo:

ELEGIR
Información de contactoSecciónPrimera.Introducción
DE RegisterInformation.ContactInformation.SliceLast(, Tipo = &Tipo)
CÓMO ContactoInformaciónSliceFirst
DÓNDE
ContactInformationSliceFirst.Type = &Tipo
Cuando se utiliza tecnología de objetos, no se admite el acceso a datos en modo PERMITIDO. Se supone que la tecnología de objetos se utiliza para las operaciones más críticas con datos, incluido su cambio. Para obtener todos los datos utilizando tecnología de objetos, independientemente de restricciones establecidas, puede realizar las acciones necesarias en un módulo privilegiado o en nombre de un usuario con plenos derechos. En la tecnología de objetos no existen medios para obtener únicamente datos permitidos.

Mecanismo para imponer restricciones.

Cualquier operación con datos almacenados en una base de datos en 1C:Enterprise conduce en última instancia al acceso a la base de datos con algunos
Solicitud de lectura o cambio de datos. En el proceso de ejecución de consultas a la base de datos, los mecanismos internos de 1C:Enterprise imponen restricciones de acceso. En este caso:
● Se genera una lista de derechos (leer, agregar, cambiar, eliminar), una lista de tablas de la base de datos y una lista de campos utilizados por esta solicitud.
● De todos los roles del usuario actual, se seleccionan restricciones de acceso a datos para todos los derechos, tablas y campos involucrados en la solicitud. Además, si un rol no contiene restricciones de acceso a los datos de una tabla o campo, esto significa que los valores de los campos obligatorios de cualquier registro están disponibles en esta tabla. En otras palabras, la ausencia de restricciones de acceso a los datos significa la presencia de restricciones.
DÓNDE está la Verdad.
● Recupera los valores actuales de todos los parámetros de sesión y opciones funcionales involucradas en las restricciones seleccionadas.
Para obtener el valor de un parámetro de sesión, el usuario actual no necesita tener permiso para obtener ese valor. Sin embargo, si no se ha establecido el valor de algún parámetro de sesión, se producirá un error y no se ejecutará la consulta de la base de datos.
La recepción de opciones funcionales está influenciada por la propiedad Modo privilegiado al recibir la opción funcional.
Si se borra esta propiedad, entonces el usuario actual debe tener acceso de lectura al objeto en el que está almacenada la opción de función.
● Las restricciones derivadas de un rol se combinan mediante la operación AND.
● Las restricciones derivadas de diferentes roles se combinan mediante una operación OR.
● Las condiciones construidas se añaden a las consultas SQL con las que 1C:Enterprise accede al DBMS. Al acceder a datos desde condiciones de restricción de acceso, no se realiza la verificación de derechos (ni para objetos de metadatos ni para objetos de base de datos). Además, el mecanismo para agregar condiciones depende del método seleccionado para operar las restricciones "todas" o "permitidas".
Método "todo"
Al imponer restricciones utilizando el método "todos", se agregan condiciones y campos a las consultas SQL para que 1C:Enterprise pueda obtener información sobre si, durante la ejecución de una consulta a la base de datos, se utilizaron o no datos prohibidos para un usuario determinado. Si se utilizaron datos prohibidos, la solicitud fallará. La imposición de restricciones de acceso utilizando el método "todos" se presenta esquemáticamente en la Fig. 1:

Arroz. 1. Método "Todo"

Método "permitido"
Al aplicar restricciones utilizando el método "permitido", se agregan condiciones a las consultas SQL para que los registros prohibidos para el usuario actual no afecten el resultado de la consulta. En otras palabras, al imponer restricciones en el modo “permitido”, prohibido a este usuario los registros se consideran faltantes, lo cual se presenta esquemáticamente en la Figura 3

Otros objetos relacionados con restricciones de acceso a datos

Al diseñar configuraciones que utilizan restricciones de acceso a datos, los objetos de metadatos, como parámetros de sesión, opciones funcionales y módulos compartidos con un indicador Privilegiado, pueden resultar útiles.
Opciones de sesión
Los parámetros de sesión se pueden usar en restricciones de acceso a datos de la misma manera que los parámetros de solicitud se pueden usar en una solicitud.
Opciones funcionales
Las opciones funcionales independientes de los parámetros se pueden utilizar en las restricciones de acceso a datos de la misma manera que los parámetros de consulta se pueden utilizar en una consulta.
Módulos comunes privilegiados

Si se selecciona el indicador Privilegiado para un módulo común, entonces la ejecución de los procedimientos y funciones de este módulo adquiere detalles importantes:
● En la versión cliente-servidor de 1C:Enterprise, sólo se puede privilegiar el módulo que se ejecuta en el servidor.
● La ejecución de procedimientos y funciones del módulo privilegiado y todo lo que se llama desde ellos se realiza cuando el sistema de restricción está apagado.
derechos tanto sobre objetos de metadatos como sobre datos. Así, desde un módulo privilegiado se puede realizar cualquier operación sobre
cualquier objeto, incluso si el usuario actual no tiene los derechos adecuados.
Los módulos privilegiados están diseñados para instalación inicial Valores de parámetros de sesión utilizados en las restricciones de acceso a datos.
Se pueden utilizar módulos más generales para algunas acciones holísticas sobre datos por parte de un usuario con derechos limitados.
Por ejemplo, si las funciones del usuario incluyen ingresar y publicar documentos, pero el usuario no debe tener acceso a los datos que se ven afectados por la publicación de documentos, entonces la ejecución de la operación de publicación se puede mover a un módulo privilegiado. Esto permitirá al usuario publicar documentos sin otorgarle derechos sobre otra información (registros, por ejemplo).
Modo privilegiado
Es posible instalar mediante programación un modo privilegiado cuando se trabaja con datos. Instalación de software modo privilegiado
Puede ser necesario en el caso de operaciones masivas con datos de bases de datos, y no tiene sentido verificar los derechos de acceso a los datos.
Para obtener una descripción del modo privilegiado, consulte aquí.

Usando el preprocesador

Al editar el texto de restricción de acceso a datos, es posible utilizar instrucciones del preprocesador. Las siguientes instrucciones están disponibles:

#SI<Выражение>#ENTONCES
#ELSEIF<Выражение>#ENTONCES
#DE LO CONTRARIO
#ENDSIF
<Выражение>– una expresión lógica arbitraria en el lenguaje incorporado, cuyo resultado es de tipo booleano. La expresión puede contener:
● operaciones de comparación<, >, <=, >= , =, <> ;
operaciones lógicas Y, O, NO;
● parámetros de sesión: se utiliza la sintaxis &Parámetro, donde Parámetro es el nombre del parámetro de sesión.
Si el resultado de la expresión de la declaración #IF o #ELSEIF es Verdadero, entonces el texto resultante de la declaración de restricción de acceso contiene el texto ubicado después de la palabra clave #THEN. Si el resultado de la expresión es Falso, entonces el texto ubicado después de la palabra clave #THEN no se coloca en el texto de la declaración de restricción de acceso. El texto que sigue a la declaración #ELSE se colocará en el texto de restricción de acceso resultante si no se cumple ninguna de las condiciones anteriores.
NOTA. Si el texto de una restricción de acceso a datos contiene instrucciones del preprocesador, dicha restricción no pasa la verificación de sintaxis durante la edición y no se puede cambiar utilizando el constructor.
Ejemplo:

#SI y usuario actual<>“Klimova” #ENTONCES
<текст ограничения доступа>
#ENDSIF
Aquí Usuario actual– tipo de parámetro de sesión DirectoryLink.Usuarios.
Este diseño significa que la condición para establecer una restricción de acceso se verificará para todos los usuarios del directorio, excepto para el usuario Klimova.

Plantillas de texto de restricción de acceso

Un rol puede contener una lista de plantillas de restricción de acceso, que se describen en la pestaña Plantillas de restricción del formulario del rol. También puede editar plantillas de restricción de acceso en el editor para la edición grupal de plantillas y restricciones de acceso.
Cada plantilla de restricción de acceso tiene un nombre y un texto. El nombre de la plantilla sigue las reglas habituales para los nombres adoptados en el sistema 1C:Enterprise.
El texto de la plantilla contiene parte del texto en el lenguaje de restricción de acceso a datos y puede contener parámetros que se resaltan con el símbolo
“#”.
Después del símbolo “#” puede seguir:
● Uno de palabras clave:
● Parámetro seguido del número del parámetro en la plantilla entre paréntesis;
● CurrentTable – indica la inserción en el texto del nombre completo de la tabla para la cual se está creando la restricción;
Nombre de la tabla actual– indica la inserción en el texto del nombre completo de la tabla (como un valor de cadena, entre comillas) a la que se aplica la instrucción, en la versión actual del lenguaje integrado;
●Nombre del derecho de acceso actual: contiene el nombre del derecho al que se aplica la restricción actual: LEER/AÑADIR/INSERTAR/CAMBIAR/
ACTUALIZAR, ELIMINAR;
● nombre del parámetro de plantilla: significa la inserción de la restricción del parámetro de plantilla correspondiente en el texto;
● Símbolo “#”: indica la inserción de un símbolo “#” en el texto.

Una expresión de restricción de acceso puede contener:

● Plantilla de restricción de acceso, que se especifica en el formato
#TemplateName(“Valor del parámetro de plantilla 1”, “Valor del parámetro de plantilla 2”, ...). Cada parámetro de plantilla está entre comillas dobles. Si necesita especificar un carácter de comilla doble en el texto del parámetro, debe utilizar dos comillas dobles.
● Función La página contiene (dónde buscamos, qué buscamos). La función está diseñada para buscar una aparición de la cadena WhatWeLook en la cadena WhereWeLook. Devuelve True si se encuentra la ocurrencia y False en caso contrario.

● El operador + para la concatenación de cadenas.
Para facilitar la edición del texto de la plantilla, en la pestaña Plantillas de restricción en el formulario de rol, haga clic en el botón Establecer texto de plantilla. En el cuadro de diálogo que se abre, ingrese el texto de la plantilla y haga clic en Aceptar.
El sistema 1C:Enterprise verifica la sintaxis de los textos de las plantillas, verifica la sintaxis del uso de las plantillas y realiza macrosustituciones de los textos de las plantillas de restricción de acceso a funciones en el texto de la solicitud.
La sustitución de plantillas de macros es:
● reemplazar apariciones de parámetros en el texto de la plantilla con valores de parámetros de la expresión para usar la plantilla en el texto de la restricción;
● reemplazar la expresión de uso de la plantilla en el texto de la solicitud con el texto de la plantilla resultante.
Cuando llama al constructor de consultas para una condición que contiene plantillas de restricción de acceso, se emite una advertencia de que se reemplazarán todas las plantillas.
Los siguientes son ejemplos de plantillas de restricciones:

Para administrar de manera flexible el acceso de los usuarios a los datos de acuerdo con la funcionalidad al configurar restricciones de acceso a los datos, se recomienda
adherirse a los siguientes principios:
● Es necesario seleccionar un conjunto de información (puede depender del usuario actual) para el cual es adecuada una preparación preliminar. La información seleccionada debería, por un lado, simplificar al máximo las restricciones de acceso a los datos y, por otro lado, no debería ser demasiado amplia. Distribuirlo según los parámetros de la sesión.
● Establecer los valores de los parámetros de sesión en el controlador SetSessionParameters() del módulo de sesión.
● Establecer restricciones de acceso a aquellos datos para los que esté justificado (los datos son secretos o más importantes para mantener la integridad del sistema). Tenga en cuenta que establecer restricciones de acceso puede ralentizar el acceso a estos datos. La excesiva complejidad de las restricciones también puede provocar desaceleraciones.
● Si es necesario garantizar que un cierto número limitado de operaciones con datos sea realizado por un usuario al que no es práctico darle acceso completo a estos datos, mueva estas acciones a módulos privilegiados o habilite y deshabilite explícitamente el modo privilegiado en lugares apropiados en el código del programa.
● El acceso a datos para diversas comprobaciones realizadas por el sistema cuando se escriben objetos se realiza en modo privilegiado.

Esto le permite no deshabilitar las restricciones de permisos a nivel de registro para los campos correspondientes si la configuración funciona con estos datos.
planificado sólo en modo controlado:

● para directorios al verificar el padre, el propietario y la unicidad del código;
● para documentos, procesos comerciales y tareas al verificar la unicidad del número;
● deshabilitado para planes de intercambio al verificar la unicidad del código;
● para planes de cuentas y planes de tipos de características al comprobar el padre y la unicidad del código.

Existen algunas limitaciones y consideraciones que se deben tener en cuenta al crear una consulta de restricción de datos:

● Si se especifican restricciones de acceso a datos para una tabla de objetos y se utiliza una combinación con dicha tabla en la consulta de datos, entonces en la condición de conexión (sección de solicitud de software) se permite el uso de la parte tabular del objeto con la restricción de acceso especificada. no permitido.
● Si la consulta especifica una tabla para la cual no se utilizan campos en la consulta, todas las restricciones de acceso a los datos se imponen en esta tabla. Por ejemplo, solicitar SELECCIONE CANTIDAD(*) DEL Directorio.Contrapartes se ejecutará teniendo en cuenta todas las restricciones de acceso especificadas para el directorio de prueba. Las restricciones las impone “OR”. Esto significa que todos los registros que estén disponibles bajo al menos una condición estarán disponibles. Si no se especifican condiciones para algunos campos, la consulta se ejecutará para todos los registros de la tabla.
Si la consulta utiliza una tabla de nivel superior, no se imponen las restricciones especificadas para las columnas de las tablas anidadas.
Si una consulta utiliza una tabla anidada, se aplican restricciones tanto a la tabla anidada como a la tabla de nivel superior.
Por ejemplo, solicitar SELECCIONE CANTIDAD(*) DEL Directorio.Contrapartes.Acuerdos se ejecutará teniendo en cuenta todas las restricciones para el directorio de Contrapartes, así como teniendo en cuenta las restricciones relacionadas con la parte tabular del Acuerdo.

● Si las restricciones de acceso deniegan el acceso a los campos necesarios para obtener una representación del objeto de metadatos de referencia.
Si se deniegan los datos o el acceso al objeto en el nivel de derechos de acceso, la obtención de una representación de dicho objeto no afecta el progreso de la transacción actual.

Constructor de restricción de acceso a datos

Para llamar al constructor en el campo de la tabla Restricciones de acceso a datos en la columna Restricciones de acceso, debe ir al modo de edición y
Haga clic en el botón Seleccionar y, en el formulario que se abre, haga clic en el botón Generador de consultas….
El formulario del constructor se muestra en la pantalla:


Arroz. 3. Pestaña “Tablas y campos” del diseñador de restricciones

Con su ayuda, se crean las condiciones para establecer restricciones de acceso a datos.
En la pestaña Tablas y campos, seleccione los objetos requeridos en la lista Base de datos y muévalos a la lista Tablas. Si se especifican varias tablas, la pestaña Enlaces se agrega al formulario del diseñador.


Arroz. 4. Pestaña “Enlaces” del diseñador de restricciones

En la pestaña Enlaces, se forman condiciones que se imponen a los enlaces entre los campos de la tabla. Para ingresar una nueva condición, haga clic en el botón Agregar y seleccione una de las tablas en la columna Tabla1. En la columna Tabla2, seleccione la tabla cuyos campos están relacionados con los campos de la primera. Debajo de la lista de condiciones hay controles que se pueden usar para crear una condición para vincular tablas.
Si se selecciona un tipo de condición simple, en Campo1 y Campo2 se seleccionan los campos relacionados de las tablas especificadas y se establece la condición de comparación. Si se seleccionan campos que no se comparan, entonces en la línea de la lista de condiciones en la columna Condición de enlace se muestra el texto: Condición llena incorrectamente.
En la pestaña Condiciones, si es necesario, debe especificar las condiciones según las cuales se seleccionarán los datos de origen.


Arroz. 5. Pestaña “Condiciones” del diseñador de restricciones

Para cada campo seleccionado, debe seleccionar el tipo de condición y especificar el nombre del parámetro. El parámetro de sesión se puede utilizar como parámetro. Se permiten múltiples condiciones. En este caso, en la columna Condición del campo de la tabla de condiciones, el texto de la condición se muestra en varias líneas.
En cualquier momento durante la creación de una solicitud, el texto de la solicitud se puede ver haciendo clic en el botón Solicitar.

Edición por lotes de restricciones de permisos y plantillas.

El modo para la edición grupal de restricciones de derechos de acceso y plantillas se llama mediante el comando Todas las restricciones de acceso menú contextual Sucursales de Raleigh. El formulario que se abre contiene dos pestañas: Restricciones de acceso y Plantillas de restricciones.


Arroz. 6 Todas las restricciones de permisos y plantillas.

en el marcador Restricciones de acceso Puede ver todas las restricciones de acceso ingresadas en una lista general (para todos los roles, objetos, derechos, combinaciones de campos).
Es posible agregar restricciones de acceso para varios roles, objetos, derechos y combinaciones de roles a la vez.
Puede filtrar la lista según varios criterios.


Arroz. 7. Seleccionar restricciones de acceso

El modo de edición de grupo le permite eliminar las restricciones seleccionadas en la lista.
Es posible editar las restricciones seleccionadas. En este caso, podrá cambiar la composición de los campos y/o las restricciones de acceso.
El modo de edición de grupo también le permite copiar restricciones seleccionadas a otros roles.

en el marcador Plantillas de restricciones puede ver todas las plantillas de restricción de acceso presentes en la solución de la aplicación, mientras que desde el texto de la plantilla en sí, solo se muestran las primeras 10 líneas en la tabla, que terminan con el símbolo “…” si el texto de la plantilla tiene más de 10 líneas. La ventana de edición de la plantilla mostrará el texto completo de la plantilla.


Fig 8. Todas las plantillas de restricción de acceso

Es posible agregar una plantilla de restricción de acceso para varios roles a la vez.

Problema clásico: dar al usuario acceso a un objeto, pero no a todos los elementos/documentos, sino sólo a algunos.

Por ejemplo, para que el administrador pueda ver informes sólo de sus clientes.

O podría ser una limitación “todos menos algunos”.
O la restricción no está en libros/documentos de referencia, sino para registrar datos

Por ejemplo, para que los usuarios no puedan extraer datos sobre pagos a socios mediante ningún informe.

En esencia, es delgado y muy configuración flexible"Lo que este usuario puede ver y lo que no necesita adivinar".

¿Por qué SPI?

La mayoría de las implementaciones requieren que diferentes usuarios establezcan diferentes niveles de acceso a la información de la base de datos.

En las configuraciones, los objetos de metadatos especiales (roles) son responsables de los posibles derechos de acceso a los datos. A cada usuario de la base de datos se le asignan uno o más roles. Determinan si son posibles operaciones sobre objetos de metadatos específicos (lectura, escritura, publicación, etc.).

Pero eso no es todo.

Muchas veces es necesario no solo abrir/denegar el acceso a un determinado objeto, sino restringir el acceso a parte de los datos que contiene.

Este problema no se puede resolver utilizando roles únicamente.– para ello se ha implementado un mecanismo de restricción de acceso a nivel de registro (RLS).

Las restricciones representan condiciones bajo las cuales se permitirá una acción sobre los datos (lectura, escritura, etc.).

– de esta manera puede restringir el acceso no al objeto en su totalidad, sino sólo a una parte de sus datos.

Acerca de RLS - con más detalle: 8 vídeos y PDF

Dado que esta es una tarea común de administración de 1C, sugerimos consultar materiales más detallados:

Restringir el acceso a los datos mediante roles

Este vídeo explica cómo restringir el acceso a los datos mediante roles. Se aclara que los roles limitan el acceso a un tipo de objetos de la base de datos (un directorio separado, pero no a elementos específicos del directorio).

Limitación de nivel de registro (RLS) Este video habla sobre el mecanismo de restricciones de acceso a nivel de registro (RLS), cuando puede configurar el acceso no a todo el directorio en su conjunto, sino a sus elementos individuales, dependiendo de lo que esté almacenado en base de información

datos. Se prescriben restricciones similares en los roles.

Implementación de restricciones de acceso a nivel de registro para el directorio de Contratistas

Este video explica cómo configurar el acceso de administrador solo a sus propias contrapartes que se les asignaron en la configuración de demostración de la aplicación administrada.

Cómo funcionan las restricciones de acceso a nivel de registro de bajo nivel

Este video explica cómo la plataforma transforma las consultas enviadas al servidor DBMS para su ejecución cuando existen restricciones de acceso a nivel de registro.

Aplicación conjunta de múltiples restricciones de acceso a nivel de registro

A un usuario de la base de datos se le pueden asignar varios roles. Además, cada rol puede tener sus propias restricciones de acceso a nivel de registro. Este vídeo explica cómo se comporta el sistema cuando se imponen restricciones.

Imponer restricciones utilizando el método ALL

Este vídeo describe el primer método para imponer restricciones a nivel de registro: el método TODO. En este caso, si la selección incluye registros cuyo acceso está restringido, se mostrará un mensaje de error.

Imponer restricciones utilizando el método PERMITIDO

Este video describe el primer método para imponer restricciones a nivel de registro: el método PERMITIDO. En este caso, sólo se incluirán en la selección aquellos registros a los que el usuario tenga derechos de acceso.

  • A continuación se muestran algunos temas del curso: Instalación y actualización de la plataforma 1C:Enterprise 8 –
  • manual y automático, para Windows y Linux Inicio automático
  • para realizar operaciones de rutina Actualizando configuraciones
  • desde el modo usuario Cómo evitar problemas al actualizar configuraciones estándar modificadas
  • Crea el tuyo entrega de archivos ufc
  • herramientas BSP: formularios externos, tramitación de cumplimentación de documentos, etc.
  • Uso SGBD gratuito PostgreSQL
  • Instalación y lanzamiento clúster de servidores 1C:Empresa 8
  • Utilidad de administración para configurar un clúster y servidores de trabajo
  • Ajustes SPI usando el ejemplo de UPP 1.3 y ERP 2
  • ¿Qué hacer si Los datos en la seguridad de la información están corruptos.
  • Ajustes intercambios de datos entre configuraciones
  • Organización desarrollo grupal
  • Configuración y uso claves de protección de hardware
  • licencias de software 1C: instalación y unión a equipos externos

En cualquier caso, en algún momento tendrás que implementar 1C, configurar reservas, derechos de acceso, varios modos de lanzamiento, probar la integridad de las bases de datos, asegurar el funcionamiento de los servidores, etc.

Y es mejor hacerlo de inmediato.

Para que no pase después “...! ¡Pues qué...! Tuyo...!" – y otras expresiones de arrepentimiento :)

SPI- esta es la capacidad del desarrollador para establecer condiciones en las tablas de la base de datos para ciertos usuarios (grupos de usuarios) y evitar que vean cosas innecesarias. La condición es de tipo booleano. Si la condición se evalúa como verdadera, se concede el acceso; de lo contrario, se deniega el acceso.

RLS se utiliza simultáneamente con la configuración de los derechos de acceso normales. Por lo tanto, antes de comenzar a configurar RLS, debe asignar derechos regulares a los objetos de configuración.

RLS se utiliza para los siguientes tipos de derechos de acceso:

  • Lectura
  • Suma
  • Cambiar
  • Eliminación

Cómo configurar RLS

Veamos un ejemplo sencillo de cómo configurarlo. Las capturas de pantalla se tomaron en la versión 1C Enterprise 8.2 (8.2.9.356). La sintaxis de las plantillas de texto de restricciones se describe en la documentación de 8.2 en el libro “Guía del desarrollador. Parte 1”, así que no nos detendremos en ello.

Entonces, el primer paso es definir plantillas de restricciones para cada rol existente.

Después de esto, según las plantillas especificadas, se establecen restricciones sobre los objetos necesarios. Para editar el texto de una condición, puede utilizar el diseñador de restricciones de acceso a datos.

Para editar múltiples roles, es conveniente administrar a través de la ventana "Todos los roles".

Puede utilizar la ventana Todas las restricciones de acceso para copiar condiciones a otros roles. Las plantillas solo se pueden copiar manualmente a otros roles.

Eso es todo. Puedes comprobar el resultado.

Desventajas de usar RLS:

  1. El uso del mecanismo de restricción de acceso a nivel de registro conlleva un aumento implícito de las tablas que participan en la consulta, lo que puede provocar errores en modo cliente-servidor funcionamiento de la base de datos.
  2. Puede resultar difícil o imposible implementar una lógica de aplicación compleja para el control de escritura. En tales casos, es mejor utilizar condiciones en el procedimiento OnWrite().
  3. Escribir una condición (consulta) requiere ciertas calificaciones del desarrollador.
  4. Se pueden crear dificultades adicionales por la imposibilidad de depurar una condición (consulta).

En configuraciones típicas, los derechos a nivel de registro se pueden establecer de forma interactiva para los siguientes objetos: organizaciones, contrapartes, artículos, almacenes, divisiones, individuos, solicitudes de candidatos y otros.

Debe recordarse que las restricciones de derechos de acceso a nivel de registro son un mecanismo que consume muchos recursos y cuanto más complejas sean las restricciones que establezca, más lento funcionará el programa, especialmente con una base de datos grande.

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 formas controladas. El programa 1C Accounting 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 permite acceder directamente al listado de usuarios de esta base de información. Antes de crear un nuevo usuario, veamos las posibles configuraciones de inicio de sesión (hipervínculo a la derecha).

En este formulario de configuración, puede configurar la complejidad de la contraseña (al menos 7 caracteres, contenido obligatorio varios tipos símbolos, etcétera). También puede especificar la longitud de la contraseña, su período de validez y prohibir a los usuarios iniciar sesión en el programa si no han estado activos durante un período de tiempo determinado.

Ahora puede proceder directamente a agregar un nuevo usuario a 1C. Esto se puede hacer 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 lo seleccionamos del directorio correspondiente. individual. Aquí también podrá indicar el departamento en el que trabaja nuestro empleado.

El nombre de usuario "AntonovDP" se sustituyó automáticamente como abreviatura del nombre completo "Dmitry Petrovich Antonov". Configuremos una contraseña y autenticación 1C Enterprise. Aquí también podrás indicar si este usuario puede cambiar su contraseña de forma independiente.

Digamos que queremos que Dmitry Petrovich Antonov esté disponible en la lista de selección al iniciar esta base de información. Para hacer esto, debe marcar la casilla de verificación en el elemento "Mostrar en la lista de selección". Como resultado, la ventana de autorización al iniciar el programa se verá como se muestra en la siguiente figura.

Prestemos atención a otra configuración importante en la tarjeta del directorio de usuarios: "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, Dmitry Petrovich Antonov, los anotaremos y procederemos a configurar los derechos de acceso, como se muestra en la siguiente figura.

Se abrió ante nosotros una lista de perfiles de acceso previamente ingresados ​​en el programa. Marque las casillas que sean obligatorias.

Acceder a perfiles de grupo

Los perfiles de grupo de acceso se pueden configurar desde el formulario principal de configuración de 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 nuevo grupo del formulario de lista que se abre. En la sección tabular de la pestaña “Acciones permitidas (roles)”, marque las casillas de aquellos roles que afectarán 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 cambiar ni crear nuevos desde el modo usuario. Sólo puedes elegir de la 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 áreas. Para activarlo, marque la casilla 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 caso es que Mecanismo SPI modifica todas las solicitudes en función de las restricciones establecidas.

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

Digamos que queremos que los usuarios asignados a un grupo de prueba tengan acceso a los datos de todas las organizaciones en esta base de información, excepto aquellas especificadas en el perfil.

En la parte tabular superior estableceremos las restricciones de acceso por organización. En la parte inferior aclararemos que no se proporcionará acceso a los datos (documentos, directorios, etc.) a la organización “Roga LLC”.

¿Cómo configurar los derechos de acceso en 1C 8.3?

En este artículo veremos cómo trabajar con usuarios en 1C Accounting 8.3:

  • crear un nuevo usuario
  • configurar derechos: perfiles, roles y grupos de acceso
  • cómo configurar la restricción de derechos a nivel de registro (RLS) en 1C 8.3, por ejemplo, por organización

Las instrucciones son adecuadas no sólo para programa de contabilidad, pero también para muchos otros creados sobre la base de BSP 2.x: 1C Trade Management 11, Salary and Personnel Management 3.0, ERP 2.0, Small Firm Management y otros.

En la interfaz del programa 1C, la gestión de usuarios se realiza en la sección "Administración", en el elemento "Configuración de usuarios y derechos":

Cómo crear un nuevo usuario en 1C

Para crear un nuevo usuario en 1C Accounting 3.0 y asignarle ciertos derechos de acceso, en el menú "Administración" hay un elemento "Configuración de usuario y derechos". Vayamos allí:

La lista de usuarios se gestiona en la sección “Usuarios”. Aquí puede crear un nuevo usuario (o grupo de usuarios) o editar uno existente. Sólo un usuario con derechos administrativos puede gestionar la lista de usuarios.

Creemos un grupo de usuarios llamado "Contabilidad", y habrá dos usuarios en él: "Contable 1" y "Contable 2".

Para crear un grupo, haga clic en el botón resaltado en la figura anterior e ingrese un nombre. Si hay otros usuarios en la base de información que sean adecuados para el rol de contador, puede agregarlos inmediatamente al grupo. En nuestro ejemplo no hay ninguno, por lo que hacemos clic en "Grabar y cerrar".

Ahora creemos usuarios. Coloque el cursor en nuestro grupo y haga clic en el botón “Crear”:

En el nombre completo ingresaremos “Contador 1” y el nombre de inicio de sesión se establecerá en “Contador1” (esto es lo que se mostrará al ingresar al programa). La contraseña será “1”.

Asegúrese de que las casillas de verificación "Se permite iniciar sesión en el programa" y "Mostrar en la lista de selección" estén marcadas; de lo contrario, el usuario no se verá a sí mismo durante la autorización.

Deje el “Modo de inicio” como “Automático”.

Configurar derechos de acceso: roles, perfiles

Ahora debe especificar "Derechos de acceso" para este usuario. Pero primero debe escribirlo; de lo contrario, aparecerá una ventana de advertencia como se muestra en la imagen de arriba. Haga clic en "Grabar", luego en "Derechos de acceso":

Seleccione el perfil de Contador. este perfil estándar y configurado para los derechos básicos requeridos por un contador. Haga clic en "Grabar" y cierre la ventana.

En la ventana "Usuario (creación)", haga clic en "Guardar y cerrar". También estamos creando un segundo contador. Nos aseguramos de que los usuarios estén habilitados y puedan trabajar:

Cabe señalar que un mismo usuario puede pertenecer a varios grupos.

Elegimos los derechos de acceso para los contadores entre los que estaban incluidos en el programa de forma predeterminada. Pero hay situaciones en las que es necesario añadir o quitar algún derecho. Para hacer esto, es posible crear su propio perfil con un conjunto de derechos de acceso necesarios.

Vayamos al apartado "Acceder a perfiles de grupo".

Digamos que necesitamos permitir que nuestros contadores vean el asiento del diario.

Crear un perfil desde cero requiere bastante mano de obra, así que copiemos el perfil "Contable":

Y hagamos los cambios necesarios: agreguemos la función "Ver registro":

Démosle al nuevo perfil un nombre diferente. Por ejemplo, “Contador con adiciones”. Y marque la casilla de verificación "Ver registro de registro".

Ahora necesitamos cambiar el perfil de los usuarios que creamos anteriormente.

Restricción de derechos a nivel de grabación en 1C 8.3 (RLS)

Averigüemos qué significa restringir derechos a nivel de registro, o como lo llaman en 1C - RLS (Seguridad de nivel de registro). Para aprovechar esta oportunidad, debe marcar la casilla correspondiente:

El programa requerirá confirmación de la acción y le informará que dicha configuración puede ralentizar considerablemente el sistema. A menudo es necesario que algunos usuarios no vean documentos de determinadas organizaciones. Precisamente para estos casos existe una configuración de acceso a nivel de registro.

Nos dirigimos nuevamente a la sección de gestión de perfiles, hacemos doble clic en el perfil “Contador con Altas” y vamos a la pestaña “Restricciones de Acceso”:

“Tipo de acceso” seleccione “Organizaciones”, “Valores de acceso” seleccione “Todos permitidos, las excepciones se asignan en grupos de acceso”. Haga clic en "Guardar y cerrar".

Ahora volvemos al apartado “Usuarios” y seleccionamos, por ejemplo, el usuario “Contador 1”. Haga clic en el botón "Derechos de acceso":

Usando el botón "Agregar", seleccione la organización cuyos datos serán vistos por el "Contador 1".

¡Prestar atención! El uso de un mecanismo para separar derechos a nivel de registro puede afectar el rendimiento del programa en su conjunto. Nota para el programador: la esencia de RLS es que el sistema 1C agrega a cada solicitud condición adicional, solicitando información sobre si el usuario tiene permiso para leer la información.

Otras configuraciones

Las secciones "Copiar configuración" y "Borrar configuración" no plantean ninguna pregunta, sus nombres hablan por sí solos. Estas son configuraciones para la apariencia del programa y los informes. Por ejemplo, si configuras un hermoso apariencia libro de referencia "Nomenclatura": se puede replicar para otros usuarios.

En la sección "Configuración de usuario" puede cambiar la apariencia del programa y hacer configuraciones adicionales para facilitar su uso.

La casilla de verificación "Permitir acceso a usuarios externos" le permite agregar y configurar usuarios externos. Por ejemplo, desea organizar una tienda en línea basada en 1C. Los clientes de la tienda serán usuarios externos. Los derechos de acceso se configuran de la misma manera que los usuarios normales.

Basado en materiales de: programmist1s.ru