Ограничение доступа к данным на уровне записей (rls) в 1с 8.3

Номер для подключения отсутствует, или указан номер в другой стране

Важно! Функция «Международные звонки в Google Meet» доступна для встреч, созданных пользователями Google Workspace

  • Во всех приглашениях, отправляемых из аккаунта Google Workspace, указан американский номер для подключения.

    • В некоторых версиях бесплатно доступны дополнительные номера.
    • При оформлении подписки «Международные звонки в Google Meet» появляется доступ к номерам из . Может взиматься плата за звонки.
  • Сервисы Календарь и Meet предлагают подходящий номер для подключения исходя из того, в какой стране вы находитесь.
  • Если на компьютере и в Календаре эти настройки не совпадают, номера для подключения на устройстве и в приглашении Календаря могут различаться.

Проверьте, поддерживается ли возможность подключения по телефону в вашей стране.

Устранение неполадок с приложением календаря Teams

Примечание

Ниже приведены шаги по устранению неполадок, применимые только к .

Шаг 1. Убедитесь, что приложение календаря Teams включено

  1. Откройте центр администрирования Microsoft Teams, перейдите в раздел Пользователи и выберите Просмотр политик для пострадавшего пользователя.

  2. Выберите политику установки приложений, назначенную для этого пользователя. В приведенном выше примере используется глобальная политика (по умолчанию для всей организации). Подтвердите, что отображается приложение календаря (ID ).

    Если приложение календаря отсутствует, восстановите его. Дополнительные сведения см. в статье Управление политиками установки приложений в Microsoft Teams.

Шаг 2. Убедитесь, что в режиме сосуществования обновлений Teams разрешены собрания Teams

  1. Откройте центр администрирования Microsoft Teams.

  2. Перейдите в раздел Пользователи и выберите требуемого пользователя.

  3. Убедитесь, что параметр Режим сосуществования имеет значение, отличное от Skype для бизнеса или Совместная работа между пользователями Teams и Skype для бизнеса.

  4. Если пользовательский режим сосуществования был установлен на Использовать параметры на уровне организации, то будет использоваться режим сосуществования клиента по умолчанию.

  5. Перейдите в Параметры на уровне организации и выберите Переход на Teams.

  6. Убедитесь, что для параметра Режима сосуществования по умолчанию установлено значение, отличное от Только Skype для бизнеса или Совместная работа между пользователями Teams и Skype для бизнеса.

Шаг 3. Убедитесь, что Teams не заблокирован для доступа к EWS для всей организации.

Выполните следующую команду Exchange PowerShell, чтобы проверить, установлено ли для параметра EwsApplicationAccessPolicy значение EnforceAllowList для всей организации.

Если для параметра было установлено значение EnforceAllowList, то доступ к EWS разрешен только клиентам, перечисленным в EwsAllowList.

Убедитесь, что MicrosoftNinja/*_, _*Teams/* и SkypeSpaces/*_ перечислены в качестве элементов массива параметра _ EwsAllowList. Если у них доступа нет, выполните следующую команду, чтобы добавить их.

Если параметр EwsEnabled установлен на Ложь, необходимо установить его на Истина или Пустой (пусто). В противном случае службе Teams будет заблокирован доступ к EWS.

Шаг 4. Убедитесь, что Teams не заблокирован от доступа к EWS для пострадавшего пользователя

Выполните следующую команду Exchange PowerShell, чтобы проверить, установлено ли для параметра EwsApplicationAccessPolicy значение EnforceAllowList для почтового ящика пользователя.

Если для параметра было установлено значение EnforceAllowList, то доступ к EWS разрешен только клиентам, перечисленным в EwsAllowList.

Убедитесь, что MicrosoftNinja/*_, _*Teams/* и SkypeSpaces/*_ перечислены в качестве элементов массива параметра _ EwsAllowList. Если это не так, выполните следующую команду Exchange PowerShell, чтобы добавить их.

Если для параметра EwsEnabled установлено значение Ложь, необходимо установить значение Истина. В противном случае службе Teams также будет заблокирован доступ к EWS.

Шаг 5. Убедитесь, что тестирование приложения календаря Microsoft Teams прошло успешно.

  1. Попросите пользователя перейти в анализатор удаленного подключения (Майкрософт).
  2. Введите запрашиваемую информацию.
  3. Выберите кнопку Выполнить проверку для запуска тестирования приложения календаря Microsoft Teams.

Если тестирование не было успешно завершено, попытайтесь решить проблему и повторно выполните тестирование.

Шаг 6. Эскалация проблемы

Если вы проверили, что нет никаких проблем с обязательными условиями и конфигурациями, упомянутыми в этой статье, отправьте запрос на обслуживание в службу поддержки Microsoft с этой информацией.

  • UserPrincipalИмя пострадавшего пользователя.
  • Время в формате UTC, когда проблема была воспроизведена.
  • Клиентские журналы отладки Teams. Для получения дополнительной информации о том, как собирать эти журналы, см. Используйте файлы журнала для устранения неполадок Microsoft Teams.

«Логика разрешений» как правило пересечения ролей.

Важно понимать, что в 1С общая логика управления доступом это логика разрешений. В платформе 1С вообще нет никаких механизмов запрета доступа

Есть только механизмы выдачи доступа. По умолчанию доступ ко всем данным запрещен, и настройка доступа заключается в выдаче каждому пользователю нужных ему прав. Это означает, что если какой-то ролью пользователю дано право на просмотр документов «Реализация товаров», то никакими способами нельзя это право отнять другими ролями или любыми другими механизмами платформы и конфигурации. Можно изначально выдать не полный доступ к справочнику, а отфильтровать с помощью RLS данные, на которые мы даем доступ. Но если доступ уже выдан, то забрать его другими ролями уже нельзя.

Именно поэтому при ограничении ролями доступа пользователям к справочнику очень важно проверять, что пользователю не назначена никакая другая роль на тот же справочник. Иначе первая роль даст нужный доступ, который не сможет запретить вторая

В платформе есть возможность дать пользователю дополнительные права на время выполнения отдельной операции. Эта возможность называется «Привилегированный режим». Он позволяет пользователю выполнять действия над данными, которые ему не доступны. Однако, в платформе нет возможности даже временно уменьшить имеющиеся у пользователя права.

Создание пользователей AD из CSV в Powershell New-ADUser

Я создал в Excel такой файл и сохранил как CSV:

Для того что бы импортировать файл есть командлет Import-Csv

Нужно обратить внимание какой разделитель (делимитер) в файле и у вас в системе. Увидеть это можно так:

Если есть отличия, то тогда в команде импорта нужно добавить ключ ‘-Delimiter’ и указать тот, который в файле. Отличия будут, например, если файл был создан в русской локализации, а импорт идет на сервере с английской.

Импорт и создание пользователей делается так:

Сложение в Path сделано для демонстрации такой возможности и не является обязательным.

У меня так же была ошибка:

  • new-aduser указанное имя не является корректным именем пользователя
  • New-ADUser : The object name has bad syntax
  • New-ADUser : Directory object not found

Причины возникновения не совсем ясны. Хоть ошибка и указывала на начало командлета New-AdUser, но проблема была в Path. Из рекомендаций были убрать в CSV файле пустые строки, проверить, что у нас нет путаницы с кавычками ( что мы не используем » ‘ в одном объекте), а так же вынести значение Path вне цикла в переменную. Мне помогло, как я понял, замена кавычек в ключе, экранирование скобками и удаление пробелов в этом ключе.

Само собой мы можем в Csv файле создать больше колонок. Например мы можем там создать и пароль, что бы у всех пользователей он был разный, но нужно будет обязательно сконвертировать его через ConvertTo-SecureString.

Если вы не уверены в том, что все данные корректны, то можете добавить ключ -WhatIf, который покажет результаты выполнения команды, но не выполнит ее физически.

Рекомендую

Режимы RLS

RLS может работать в двух режимах:

  1. Все
  2. Разрешенные

Режим «Все» подразумевает, что нужно прочитать все записи таблицы, а потом проверить права доступа на них. «Все» используется при обычном выполнении запроса, например:

ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Код КАК Код,
Контрагенты.Наименование КАК Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты

1
2
3
4
5
6

ВЫБРАТЬ

Контрагенты.СсылкаКАК Ссылка,

Контрагенты.КодКАК Код,

Контрагенты.НаименованиеКАК Наименование
ИЗ

Справочник.КонтрагентыКАК Контрагенты

В этом случае в текст запроса будет добавлено еще одно вспомогательное поле булевого типа, в котором будет признак наличия прав доступа на эту запись. На языке запросов 1С это выглядело бы примерно так:

ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Код КАК Код,
Контрагенты.Наименование КАК Наименование,
ВЫБОР
КОГДА Контрагенты.ГруппаДоступа = ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьПраваНаЗапись
ИЗ
Справочник.Контрагенты КАК Контрагенты

1
2
3
4
5
6
7
8
9
10
11

ВЫБРАТЬ

Контрагенты.СсылкаКАК Ссылка,

Контрагенты.КодКАК Код,

Контрагенты.НаименованиеКАК Наименование,

ВЫБОР

КОГДАКонтрагенты.ГруппаДоступа=ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

ТОГДАИСТИНА

ИНАЧЕЛОЖЬ

КОНЕЦ КАК ЕстьПраваНаЗапись
ИЗ

Справочник.КонтрагентыКАК Контрагенты

Если в поле ЕстьПраваНаЗапись хотя бы в одной строке будет Ложь, то запрос будет завершен с ошибкой нарушения прав доступа.

Режим «Разрешенные» подразумевает, что нужно прочитать только те записи, на которые есть права доступа. В этом случае в текст запроса будет добавлено дополнительное условие. Для того же самого запроса это выглядело бы примерно так:

ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Код КАК Код,
Контрагенты.Наименование КАК Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.ГруппаДоступа = ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

1
2
3
4
5
6
7
8

ВЫБРАТЬ

Контрагенты.СсылкаКАК Ссылка,

Контрагенты.КодКАК Код,

Контрагенты.НаименованиеКАК Наименование
ИЗ

Справочник.КонтрагентыКАК Контрагенты
ГДЕ

Контрагенты.ГруппаДоступа=ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

В результате из базы данных будут выбраны только те записи, на которые у пользователя есть права доступа.

Добавление вспомогательного поля или дополнительного условия выполняется сервером 1С при обращении к базе данных.

По умолчанию при выполнении запросов используется режим «Все». Указав ключевое слово РАЗРЕШЕННЫЕ его можно изменить на режим «Разрешенные»:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Код КАК Код,
Контрагенты.Наименование КАК Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты

1
2
3
4
5
6

ВЫБРАТЬ РАЗРЕШЕННЫЕ

Контрагенты.СсылкаКАК Ссылка,

Контрагенты.КодКАК Код,

Контрагенты.НаименованиеКАК Наименование
ИЗ

Справочник.КонтрагентыКАК Контрагенты

В объектной технике встроенного языка тоже используется режим «Все». Его нельзя изменить. При получении объекта из ссылки, при записи объекта в базу данных всегда будет использоваться режим «Все».

В формах списках для отображения списка объектов используется Динамический список. В нем всегда используется режим «Разрешенные». Поэтому после настройки RLS нет необходимости менять тексты запросов динамических списков.

Чем сложнее текст ограничения доступа, тем сложнее будет выполняемый запрос. Это может приводить к заметной потере производительности.

Если в каких-то ситуациях не нужно выполнять контроль прав доступа, то для повышения производительности можно перенести часть кода в привилегированный общий модуль или программно включить привилегированный режим.

Configuring the default shell for OpenSSH in Windows

The default command shell provides the experience a user sees when connecting to the server using SSH.
The initial default Windows is the Windows Command shell (cmd.exe).
Windows also includes PowerShell and Bash, and third-party command shells are also available for Windows and may be configured as the default shell for a server.

To set the default command shell, first confirm that the OpenSSH installation folder is on the system path.
For Windows, the default installation folder is SystemDrive:WindowsDirectory\System32\openssh.
The following command shows the current path setting, and add the default OpenSSH installation folder to it.

Command shell Command to use
Command path
PowerShell $env:path

Configuring the default ssh shell is done in the Windows registry by adding the full path to the shell executable to Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH in the string value DefaultShell.

As an example, the following PowerShell command sets the default shell to be powershell.exe:

Общие действия по устранению неполадок

Примечание

Эти шаги по устранению неполадок применяются ко всем проблемам, приведенным выше.

Шаг 1. Убедитесь, что служба автообнаружения работает хорошо

Служба Microsoft Teams использует службу автообнаружения Exchange для поиска URL-адреса EWS, опубликованного сервером, на котором запущен Exchange Server. Чтобы убедиться, что процесс автообнаружения работает нормально:

  1. Попросите пользователя перейти к анализатору удаленного подключения (Майкрософт).
  2. Введите запрошенную информацию (убедитесь, что установлен флажок Используйте автообнаружение параметров сервера).
  3. Выберите кнопку Выполнить проверку для запуска проверки автообнаружения.

Если проверка завершилась неудачно, сначала необходимо решить проблему автообнаружения.

Примечание

Для проблемы делегирования Teams почтовый ящик представителя является целевым почтовым ящиком для тестирования. Для проблемы с приложением календаря Teams и проблемы со статусом присутствия Teams почтовый ящик затронутого пользователя является целевым почтовым ящиком для тестирования.

В Windows PowerShell выполните следующую команду.

Примечание

Для проблемы делегирования Teams почтовый ящик представителя является целевым почтовым ящиком для тестирования. Для проблемы с приложением календаря Teams и проблемы со статусом присутствия Teams почтовый ящик затронутого пользователя является целевым почтовым ящиком для тестирования.

Для почтового ящика, размещенного локально, URL-адрес EWS должен указывать на локальный внешний EWS. Вывод должен иметь следующий вид:

Если при тестировании выявлена ошибка, или если URL-адрес EWS неверен, просмотрите раздел Это связано с тем, что проблема, скорее всего, вызвана ошибкой гибридной конфигурации Exchange или брандмауэром или обратным прокси-сервером, который блокирует внешние запросы.

Шаг 3. Убедитесь, что протокол проверки подлинности Exchange OAuth включен и работает

Чтобы убедиться, что проверка подлинности Exchange OAuth включена и работает, запустите команду, , описанную в .

Кроме того, запустите тест на подключение Сведения о доступности, который доступен в анализаторе удаленного подключения (Майкрософт) Для этого выполните следующие действия:

  1. Перейдите к анализатору удаленного подключения (Майкрософт)

  2. Выберите тест Сведения о доступности, чтобы убедиться, что почтовый ящик Office 365 может получить доступ к информации о доступности локального почтового ящика, и наоборот.

    Необходимо запустить этот тест два раза, заменив адрес электронной почты исходного почтового ящика на адрес электронной почты целевого почтового ящика. Это потому, что каждый запуск является однонаправленным. Этот тест необязательно запускать с использованием затронутых учетных записей. Тест можно запустить с помощью любой пары локального почтового ящика и почтового ящика Office 365.

    Чтобы узнать больше о том, как устранять проблемы с занятостью в гибридном развертывании локальной сети и Exchange Online в Office 365, см. эту статью.

Запретить доступ по SSH пользователю или группе

Чтобы отключить или запретить доступ по SSH для пользователя или группы, вам необходимо добавить/изменить следующие директивы в файле sshd_config вашего удаленного сервера.

  • DenyUsers
  • DenyGroups

Чтобы запретить доступ по SSH конкретному пользователю с именем «sk», отредактируйте файл sshd_config:

$ sudo vi /etc/ssh/sshd_config

Добавьте/отредактируйте следующую строку в файле sshd_config.

DenyUsers sk

Убедитесь, что отступы правильные. Не используйте клавишу пробела. Нажмите клавишу Tab и добавьте имя пользователя.

Аналогичным образом, чтобы запретить доступ по SSH нескольким пользователям, укажите имена пользователей через пробел, как показано ниже.

DenyUsers user1 user2

Аналогичным образом, чтобы запретить доступ по SSH для всей группы, например root , добавьте:

DenyGroups root

Сохраните и выйдите из файла конфигурации ssh. Перезапустите службу ssh, чтобы изменения вступили в силу.

$ sudo systemctl restart sshd

Теперь попробуйте ssh на свой Linux-компьютер из заблокированной учетной записи пользователя, например sk:

$ ssh [email protected]

Вы получите следующее сообщение:

[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password:

4.1. Функциональные опции.

К системе управления доступом иногда относят механизм функциональных опций. Это не совсем верно, так как функциональные опции никак не влияют на доступ к данным. Это исключительно интерфейсный механизм, предназначенный для упрощения интерфейса для пользователя. Он появился в платформе 8.2 как результат усложнения функционала конфигураций. Функциональные опции предназначены для скрытия из интерфейса функционала, не используемого в данной конкретной компании или данным конкретным пользователем. Механизм влияет только на отображение данных. Из интерфейса исчезают команды, а на формах скрываются реквизиты, отключенные функциональными опциями. При этом у пользователя остается доступ ко всем этим командам и реквизитам. Он может без каких-либо проблем работать со скрытыми данными программно при помощи обработок. 

Подробнее о работе с функциональными опциями можно почитать на ИТС

Предварительные условия

Чтобы интегрировать службу Microsoft Teams с установленным вами Exchange Server, убедитесь, что локальная среда Exchange Server соответствует следующим требованиям.

  • В Microsoft Teams необходимо настроить как будет размещаться почтовый ящик — в Exchange Online или в локальной среде. требует развертывания гибридного сервера Exchange. Службы Teams вызывают службы Exchange Online через REST API, когда на основе гибридной конфигурации в соответствующих случаях их перенаправляют локальные серверы, на которых находится данный почтовый ящик.

  • Интегрируется ли Exchange Online со средой локального сервера Exchange, как описано в статье . Предпочтительно, чтобы вы настраивали это с помощью мастера гибридной конфигурации Exchange, хотя это можно сделать и вручную, как описано в статье Настройка проверки подлинности OAuth между организациями Exchange и Exchange Online. Exchange Online представляется идентификатором приложения .

  • Кроме того, службы Microsoft Teams, когда необходимо проверить подлинность от имени пользователя, чтобы получить доступ к локальному почтовому ящику, также используют OAuth. В этом случае идентификатор приложения Skype для бизнеса Online используется службой планирования Teams в комбинации с параметром MailUser, который описан в статье Настройка интеграции и авторизации OAuth между Skype для бизнеса Online и Exchange Server:

    • Учетная запись скрыта из адресной книги Exchange. Лучше всего скрыть учетную запись из адресной книги, потому что это отключенная учетная запись пользователя.
    • Учетная запись имеет назначенную роль управления Exchange UserApplication.
    • Для удержания и архивирования требуется назначение роли ArchiveApplication.
    • Все шаги в этой статье необходимы для полных конфигураций Teams и локального сервера Exchange.

Примечание

Пример платформы идентификации Майкрософт и использования OAuth 2.0 можно найти здесь

  • Необходимо настроить брандмауэр с выходом в Интернет или обратный прокси-сервер, чтобы разрешить Microsoft Teams доступ к серверам, на которых работает Exchange Server, путем добавления URL-адресов и диапазонов IP-адресов для Skype для Business Online и Microsoft Teams в список разрешенных. Для получения дополнительной информации см. раздел «Skype for Business Online и Microsoft Teams» в

  • Exchange Autodiscover V2 требуется, чтобы служба Teams могла выполнять обнаружение без проверки подлинности почтового ящика пользователя, расположенного на сервере Exchange Server. Autodiscover V2 полностью поддерживается в Exchange Server 2013 Cumulative Update 19 или в более поздней версии. Этого достаточно для того, чтобы делегирование Teams работало правильно. Однако для приложения календаря Teams требуется установка Exchange Server 2016 Cumulative Update 3 или более поздней версии. Поэтому для полной поддержки функций требуется Exchange Server 2016 Cumulative Update 3 или более поздняя версия.

Неделя 8, задача 2: разрешить и запретить пользователям ssh удаленный вход с помощью конфигурации sshd

Я пробую очень конкретную конфигурацию для директивы AllowUsers, которая следует следующей логике:

  • Разрешить user1 использовать ssh с host1
  • Запретить пользователю user1 использовать ssh с любого другого хоста
  • Разрешить всем другим пользователям с любого хоста

Я пробовал следующее:

К сожалению, когда-либо @ присутствует, он отменяет предыдущие параметры и независимо от того, в каком порядке.

У меня два вопроса; существует ли порядок, в котором выполняются параметры в директиве AllowUsers, и возможна ли приведенная выше логика?

sshd_config человек говорит, что порядок обработки:

Таким образом, если «user1» также имеет свою собственную группу «user1», вы можете использовать эту конфигурацию:

Другой вариант — использовать отрицание:

Приведенная выше логика невозможна с одним экземпляром sshd. Однако это возможно, если вы запустите второй экземпляр sshd (настроенный для прослушивания на другом порту).

Настройте первый экземпляр с помощью:

Настройте второй экземпляр с помощью:

Скажите user1 подключиться ко второму экземпляру (другой порт). Скажите всем другим пользователям подключиться к первому экземпляру (порт по умолчанию).

ПРИМЕЧАНИЕ. Вы также можете разрешить или запретить доступ по ssh с помощью SSH PAM CONFIG (рекомендуется для большого количества пользователей) или с помощью TCP Wrappers, но вам потребуется библиотека libwrap.a, чтобы она работала с SSH.

Если вы хотите ограничить доступ через SSHD CONFIG, вы можете использовать эти четыре записи:

AllowUsers AllowGroups DenyUsers DenyGroups

Сопоставление с образцом происходит в следующем порядке: DenyUsers, AllowUsers, DenyGroups, AllowGroups. Это означает, что, например, если вы добавите пользователя в обе записи (AllowUsers и DenyUsers), это приведет к тому, что пользователю будет отказано независимо от порядка, в котором правила появляются в сценарии конфигурации.

Чтобы выполнить 3 упомянутых вами ограничения, вы можете попробовать создать группу sshgroup и настроить каждую учетную запись пользователя, кроме user1, для включения в группу. Наконец, вы можете создать сценарий для добавления пользователей в sshgroup к правилу в вашем файле sshd_config, которое всегда включает:

AllowUsers user1 @ host1

в результате чего:

AllowUsers пользователь1 @ хост1 пользователь2 пользователь3 …

Чтобы поддерживать файл конфигурации sshd в актуальном состоянии, вы можете вызывать скрипт каждый раз, когда создается / удаляется пользователь. Не забывайте перезапускать демон ssh после каждого изменения файла конфигурации.

Здесь вы можете найти скрипт pop_user_allow_ssh, который также пытается создать список пользователей.

Вы не упоминаете свою ОС, но вот как я это сделал в AIX. Надеюсь, идея поможет.

1 Пожалуйста, попытайтесь ответить на оба вопроса с пояснением.

Примеры RLS

Чтобы лучше разобраться как работает RLS в 1С настроим ограничения доступа на справочник Контрагенты, чтобы менеджеры по продажам видели только покупателей.

У справочника Контрагенты есть реквизит ГруппаДоступа, который имеет тип ПеречислениеСсылка.ГруппыДоступаКонтрагентов:

По значению данного реквизита можно определить кем является контрагент.

Сейчас в списке контрагентов 2 покупателя и 2 поставщика:

Создадим роль Покупатели и для справочника Контрагенты и права Чтение настроим следующее ограничение:

Контрагенты ГДЕ Контрагенты.ГруппаДоступа = ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

1 КонтрагентыГДЕ Контрагенты.ГруппаДоступа=ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

И дадим пользователю только эту роль. В результате ему будут доступны только покупатели:

Удалим ограничение доступа для права Чтение и добавим такое же, но для права Добавление:

В результате пользователь может видеть всех контрагентов, но создать нового контрагента может только с группой Покупатели. Если указать любую другую группу, то будет выдана ошибка «У пользователя недостаточно прав на исполнение операции над базой данных»:

Удалим ограничение для права Добавление и добавим такое же для права Изменение:

Теперь пользователь может добавлять контрагентов с любой группой доступа, но изменять может только покупателей. При этом нельзя сначала изменить группу доступа на Покупатели, а потом изменить сам объект. Проверка выполняется как до изменения, так и после изменения.

Удалим ограничения для права Изменение и добавим такое же для права Удаление:

Теперь пользователь может и читать и добавлять и изменять любых контрагентов, но удалить может только покупателей. Именно удалить, а не пометить на удаление.

Вернем снова ограничение только для права Чтение, чтобы пользователь мог видеть только покупателей. Если сейчас пользователю дать еще одну роль, которая дает права на чтение и просмотр контрагентов, но для нее не настроены RLS, то пользователь увидит всех контрагентов. Так происходит, потому что из разных ролей RLS складываются по условию ИЛИ. Если хотя бы в одной роли нет ограничений, то считается, что разрешены все контрагенты.

Если для права Чтение добавить еще одно ограничение с условием:

Контрагенты ГДЕ ЛОЖЬ

1 КонтрагентыГДЕ ЛОЖЬ

То пользователь не увидит ни одного контрагента. В рамках одной роли ограничения складываются по условию И. Условие ГДЕ ЛОЖЬ никогда не будет истинным, поэтому у пользователя не будет прав ни на одного контрагента.

Вернем снова только одно ограничение на чтение покупателей и создадим 2 документа, где используется контрагент. Один с покупателем, второй с поставщиком. Под полными правами будут доступны оба документа:

С правами только на покупателей тоже будут доступны оба документа, но вместо поставщика будет надпись «Объект не найден», так как у пользователя нет прав на чтение поставщиков, но есть права на чтение документов:

Чтобы скрыть документы с запрещенными контрагентами нужно настроить RLS для документа:

ПриходТовара ГДЕ ПриходТовара.Контрагент.ГруппаДоступа = ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

1 ПриходТовараГДЕ ПриходТовара.Контрагент.ГруппаДоступа=ЗНАЧЕНИЕ(Перечисление.ГруппыДоступаКонтрагентов.Покупатели)

Теперь документы с запрещенными контрагентами не будут доступны:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: