Перейти к основному содержимому

Управление безопасностью данных с помощью Section Access

Section Access используется для управления безопасностью приложения. Практически это часть скрипта загрузки данных, в которую добавляется таблица безопасности, определяющая, кто что может просматривать. Qlik Sense использует эту информацию для сокращения данных до соответствующего объема, когда пользователь открывает приложение, то есть некоторые данные в приложении будут скрыты от пользователя на основе его удостоверения. Section Access тесно интегрирован с данными в приложении и полагается на них для управления доступом. Эта форма динамического сокращения данных может предназначаться для строк таблицы, столбцов таблицы или их комбинации.

Примечание: Insight Advisor Chat не поддерживает приложения, использующие Section Access.

Разделы в скрипте загрузки

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

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

Example:  

Section Access; Load * INLINE [ ACCESS, USERID, REDUCTION USER, AD_DOMAIN\ADMIN, * USER, AD_DOMAIN\A, 1 USER, AD_DOMAIN\B, 2 USER, AD_DOMAIN\C, 3 ADMIN, INTERNAL\SA_SCHEDULER, ]; Section Application; T1: Load *, NUM AS REDUCTION; LOAD Chr(RecNo()+ord('A')-1 AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

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

Системные поля Section Access

Уровни доступа назначаются пользователям в одной или нескольких таблицах безопасности, загруженных в части Section Access скрипта. Эти таблицы должны содержать как минимум два системных поля: ACCESS, которое определяет уровень доступа, и USERID или USER.EMAIL . Другие дополнительные системные поля можно добавить в зависимости от варианта использования. Ниже описан полный набор системных полей Section Access.

ACCESS

Определяет, какой уровень доступа должен иметь соответствующий пользователь.

Доступ к приложениям Qlik Sense может быть авторизован для указанных пользователей. В таблице безопасности пользователям могут быть назначены уровни доступа ADMIN или USER. Пользователь с правами ADMIN имеет доступ ко всем данным в приложении, если они не ограничены таблицей безопасности. Пользователь с правами USER имеет доступ только к данным, определенным в таблице безопасности. Если уровень доступа не назначен, пользователь не сможет открыть приложение.

Если Section Access используется в сценарии перезагрузки, сервисному пользователю планировщика INTERNAL\SA_SCHEDULER требуется доступ ADMIN для выполнения перезагрузок. Пример.

Section Access; LOAD * inline [ ACCESS, USERID ADMIN, INTERNAL\SA_SCHEDULER ];

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

Если в сценарии создания приложения On-demand (ODAG) в приложении шаблона используется Section Access, пользователя INTERNAL\SA_API необходимо включить в таблицу Section Access в качестве ADMIN. Пример.

Section Access; LOAD * inline [ ACCESS, USERID ADMIN, INTERNAL\SA_API ];

USERID

Содержит строку, соответствующую имени домена Qlik Sense и имени пользователя. Программа Qlik Sense получит сведения о входе в систему из прокси-службы и сравнит ее со значением в данном поле.

Знак подстановки (*) интерпретируется как все пользователи согласно дальнейшим условиям, указанным в таблице безопасности. Например, в следующей таблице безопасности пользователи, которые относятся к администраторам клиента Qlik Sense, могут просматривать все перечисленные значения поля REDUCTION.

Section Access; LOAD * INLINE [ ACCESS, USERID, GROUP, REDUCTION ADMIN, *, Qlik Sense Tenant Admins, * USER, QLIK-POC\SOMEOTHERUSER1, *, 1 USER, QLIK-POC\SOMEOTHERUSER2, *, 2 ... ];
Примечание: USERID и NTNAME используют ту же самую информацию для проверки подлинности, таким образом, не нужно проверять их обоих в той же строке в таблице безопасности. Разница между этими двумя полями в том, что NTNAME также проверяет группы.

NTNAME

Примечание: NTNAME — это поле из прежних версий QlikView, рекомендуется использовать USERID, если QlikView не использует ту же таблицу безопасности.

Поле, в котором должна содержаться строка, соответствующая имени пользователя или имени группы домена Windows NT. Если применяется другая система проверки подлинности, она должна содержать имя аутентифицируемого пользователя. Программа Qlik Sense получит сведения о входе в систему из ОС и сравнит ее со значением в данном поле.

GROUP

Содержит строку, соответствующую группе в программе Qlik Sense. Программа Qlik Sense разрешит пользователя, предоставленного прокси-службой, по этой группе.

SERIAL

Примечание: SERIAL — устаревшее поле программы QlikView и не используется, если применяется только Qlik Sense.

Содержит строку, соответствующую платформе. Если поле содержит строку ‘QLIKSENSE’ или знак подстановки ‘*’, доступ может быть предоставлен в зависимости от других полей в таблице безопасности.

Примечание: Если поле SERIAL содержит номер лицензии, то строка доступа к секции запретит доступ к документу. Этот параметр допустим только в QlikView.

OMIT

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

Примечание: Не рекомендуется применять OMIT к ключевым полям. Исключенные ключевые поля видны в просмотре модели данных, но их содержимое недоступно. Это может запутать пользователя. Кроме того, применение OMIT к полям, использующимся в визуализации, может привести к неполному отображению визуализации для пользователей, не имеющих доступа к опущенным полям.

Управление доступом пользователя к приложению

Section Access в своей самой простой форме может использоваться для ограничения доступа определенных пользователей к приложению. Доступ пользователям к приложению запрещен посредством исключения. Другими словами, если определенный идентификатор пользователя не указан в таблице безопасности, он не сможет получить доступ к приложению. Единственное исключение из этого правила — знак подстановки (*) присвоен полю USERID в одной из строк таблицы безопасности. В этом случае знак подстановки означает, что все аутентифицированные пользователи могут получить доступ к приложению. Вот пример таблицы безопасности со списком идентификаторов пользователей:

Section Access; LOAD * inline [ ACCESS, USERID ADMIN, AD_DOMAIN\ADMIN USER, AD_DOMAIN\A USER, AD_DOMAIN\B ]; Section Application;

Управление доступом пользователя к определенным данным в приложении

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

Управление доступом к данным на уровне строк

Ограничьте доступ к данным на уровне строк, добавив столбец сокращения количества данных в таблицу безопасности в разделе доступа скрипта загрузки. Определенные записи (строки) можно скрыть от пользователей путем привязки данных Section Access к реальным данным. Выбор данных для отображения или исключения управляется с помощью одного или нескольких полей с общими именами в разделах скрипта Section Access и Section Application. После входа пользователя в систему программа Qlik Sense сопоставляет выборки в полях секции доступа с любыми полями приложения секции приложения с точно такими же именами (имена полей должны быть написаны в верхнем регистре). После создания выборок программа Qlik Sense постоянно скрывает все данные, исключенные этими выборками, от пользователя. Если знак подстановки (*) используется в качестве значения поля в столбце сокращения количества данных, он интерпретируется как разрешение доступа пользователю к записям, связанным со всеми выбранными полями сокращения в таблице безопасности.

Примечание:

Знак подстановки * в столбце сокращения количества данных относится только ко всем значениям в таблице безопасности. Если в разделе Section Application существуют значения, недоступные в столбце сокращения таблицы безопасности, они будут сокращены.

Примечание: Имена всех полей, используемых в описанной выше передаче, и все значения в этих полях должны быть в верхнем регистре, поскольку все имена и значения полей по умолчанию преобразуются в верхний регистр в разделе Section Access.
Примечание: По умолчанию включение перезагрузки скрипта в задаче Qlik Management Console должен выполнять пользователь учетной записи INTERNAL\SA_SCHEDULER с правом доступа ADMIN. Если нежелательно использовать учетную запись INTERNAL\SA_SCHEDULER, альтернативный метод см. в разделе Использование олицетворения для перезагрузки данных.

Example: Сокращение количества данных на уровне строки на основе удостоверения пользователя

Section Access; Authorization: LOAD * inline [ ACCESS, USERID, REDUCTION ADMIN, AD_DOMAIN\ADMIN, * USER, AD_DOMAIN\A, 1 USER, AD_DOMAIN\B, 2 USER, AD_DOMAIN\C, * ADMIN, INTERNAL\SA_SCHEDULER, * ]; Section Application; T1: LOAD *, NUM AS REDUCTION; LOAD RecNo() AS NUM AUTOGENERATE 3;

В этом примере поле REDUCTION (в верхнем регистре) теперь присутствует и в разделе Section Access, и в разделе Section Application (все значения полей также должны быть в верхнем регистре). Обычно два поля будут разделены и различны, но если используется Section Access, поля будут связаны, а количество записей, отображаемых для пользователя, сокращено.

Будет получен следующий результат:

  • Пользователь ADMIN может просматривать все поля и только те записи, которые другие пользователи могут просматривать, когда REDUCTION = 1 или REDUCTION =2.
  • Пользователь A может просматривать все поля, но только те записи, которые связаны с REDUCTION=1.
  • Пользователь B может просматривать все поля, но только те записи, которые связаны с REDUCTION=2.
  • Пользователь C может просматривать все поля и только те записи, которые другие пользователи могут просматривать, когда REDUCTION = 1 или REDUCTION =2.

Управление доступом к данным на уровне столбцов

Ограничьте доступ к данным на уровне столбцов, добавив системное поле OMIT в таблицу безопасности в скрипт Section Access. Следующий пример построен на предыдущем примере, в котором сокращение количества данных строки уже выполнено.

Example: Сокращение количества данных столбца на основе удостоверения пользователя

Section Access; LOAD * inline [ ACCESS, USERID, REDUCTION, OMIT ADMIN, AD_DOMAIN\ADMIN, *, USER, AD_DOMAIN\A, 1, USER, AD_DOMAIN\B, 2, NUM USER, AD_DOMAIN\C, 3, ALPHA ADMIN, INTERNAL\SA_SCHEDULER, *, ]; Section Application; T1: LOAD *, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

Поле OMIT в разделе Section Access определяет поля, которые должны быть скрыты от пользователя.

Будет получен следующий результат:

  • Пользователь ADMIN может просматривать все поля и только те записи, которые другие пользователи могут просматривать в данном примере, когда для поля REDUCTION указано значение 1, 2 или 3.
  • Пользователь A может просматривать все поля, но только те записи, которые связаны с REDUCTION=1.
  • Пользователь B может просматривать все поля, кроме NUM, и только те записи, которые связаны с REDUCTION=2.
  • Пользователь C может просматривать все поля, кроме ALPHA, и только те записи, которые связаны с REDUCTION=3.
Примечание: Для выполнения некоторых визуализаций предъявляются минимальные требования к данным. В результате может появиться предупреждение «Неполная визуализация», когда поле на уровне столбца отсутствует в виде данных пользователя.

Управление доступом к группам пользователей

Section Access предлагает возможность ограничить объем данных, видимых пользователям, с помощью принадлежности к группе. Для ограничения данных с помощью групп пользователей добавьте имя поля GROUP в таблицу безопасности в разделе Section Access и определите значения для поля GROUP.

Example: Сокращение количества данных на основе групп пользователей

Section Access; LOAD * inline [ ACCESS, USERID, GROUP, REDUCTION, OMIT USER, *, ADMIN, *, USER, *, A, 1, USER, *, B, 2, NUM USER, *, C, 3, ALPHA USER, *, GROUP1, 3, ADMIN, INTERNAL\SA_SCHEDULER, *, *, ]; section application; T1: LOAD *, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

Будет получен следующий результат:

  • Пользователи, принадлежащие к группе ADMIN, могут просматривать все данные и все поля.
  • Пользователи, принадлежащие к группе A, могут просматривать данные, связанные с REDUCTION=1, во всех полях.
  • Пользователи, принадлежащие к группе B, могут просматривать данные, связанные с REDUCTION=2, во всех полях, кроме поля NUM
  • Пользователи, принадлежащие к группе C, могут просматривать данные, связанные с REDUCTION=3, во всех полях, кроме поля ALPHA
  • Пользователи, принадлежащие к группе GROUP1, могут просматривать данные, связанные с REDUCTION=3, во всех полях

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

Использование олицетворения для перезагрузки данных

Внутренняя системная учетная запись, SA_SCHEDULER, используется по умолчанию для выполнения задач перезагрузки. Эта учетная запись имеет повышенные права и технически может использовать любой источник данных. Однако в QMC есть параметр, который использует олицетворение для выполнения задач перезагрузки с разрешениями владельца приложения вместо внутренней системной учетной записи. Путем настройки этого параметра владелец приложения, а не SA_SCHEDULER будет использоваться для перезагрузок, то есть добавлять SA_SCHEDULER в таблицу Section Access не нужно, вместо этого нужно добавить владельца приложения. В цепочке задач у приложений могут быть различные владельцы с разрешениями на источники, зависящие от прав доступа каждого владельца. Для получения дополнительной информации см. кластер служб (только английский язык).

Управление доступом пользователей в многооблачной среде

Многооблачная среда Qlik Sense включает сочетание механизмов подлинности пользователя. Обычно в Qlik Sense Enterprise on Windows USERID в разделе Section Access таблицы безопасности проверяется прокси-службой. В SaaS editions of Qlik Sense роль проверки подлинности берет на себя поставщик удостоверений. Следовательно, Section Access, который настроен для локальной среды, такой как Qlik Sense Enterprise on Windows, не будет работать в облачной среде.

При использовании поставщика удостоверений OIDC (Qlik IdP или пользовательский IdP) с SaaS editions of Qlik Sense утверждение субъекта применяется для идентификации пользователей при входе в систему. Section Access сравнивает значение поля USERID в таблице безопасности со значением утверждения субъекта. При настройке клиента убедитесь, что имя учетной записи SAM сопоставлено с утверждением субъекта поставщика удостоверений. Так, например, если имя учетной записи SAM AD_DOMAIN\Dev, установите AD_DOMAIN\Dev для утверждения субъекта. Если нужно просмотреть значение утверждения субъекта в IdP, добавьте /api/v1/diagnose-claims к URL-адресу клиента в браузере, например: your-tenant.us.qlikcloud.com/api/v1/diagnose-claims. В ответе JSON утверждение субъекта называетcя sub.

Если не удается использовать имя учетной записи SAM, есть альтернативный способ проверить подлинность пользователя. Так как в разных средах обычно используются одни и те же адреса электронной почты, можно использовать поле USER.EMAIL вместо USERID в таблице безопасности. Вот как может выглядеть таблица безопасности.

ACCESS USERID USER.EMAIL Комментарий COUNTRY
USER ABC\Joe * Локальный доступ United States
USER * joe.smith@example.com Доступ в облаке United States
USER ABC\Ursula * Локальный доступ Germany
USER * ursula.schultz@example.com Доступ в облаке Germany
USER ABC\Stefan * Локальный доступ Sweden
USER * stefan.svensson@example.com Доступ в облаке Sweden

Скрипт авторизации:

Section Access; LOAD * INLINE [ ACCESS, USERID, USER.EMAIL, COUNTRY USER, ABC\Joe, *, United States USER, *, joe.smith@example.com, United States USER, ABC\Ursula, *, Germany USER, *, ursula.schultz@example.com, Germany USER, ABC\Stefan, *, Sweden USER, *, stefan.svensson@example.com, Sweden ];

Обратите внимание, что у каждого пользователя есть две записи: одна для локального и одна для облачного доступа. Знаки подстановки обеспечивают использование только соответствующих полей проверки подлинности. В этом примере COUNTRY используется в качестве поля для сокращения количества данных.

Инструкции и советы по использованию Section Access

Вот некоторые важные факты и полезные советы, которые нужно знать о Section Access.

  • Все поля, перечисленные в операторах LOAD или SELECT в Section Access, должны быть написаны в верхнем регистре. Имя любого поля с буквами в нижнем регистре в базе данных должно быть преобразовано в верхний регистр с помощью функции Upper до чтения поля с помощью оператора LOAD или SELECT.

    Для получения дополнительной информации см. Upper — функция скриптa и диаграммы.

  • Нельзя использовать имена системных полей Section Access, перечисленные в качестве имен полей, в вашей модели данных.
  • Перед тем как применить элементы управления Section Access, необходимо опубликовать приложения. Новые или измененные скрипты Section Access не применятся после перезагрузки приложения.
  • Снимок отображает данные в соответствии с правами доступа пользователя, создавшего снимок. Созданный снимок можно использовать в истории. Однако при возврате из истории в визуализацию для просмотра оперативных данных в приложении на пользователей распространяются ограничения, связанные с их правами доступа.
  • Не назначайте цвета значениям основного измерения, если используется Section Access или обрабатываются конфиденциальные данные, так как в этом случае значения можно определить по настройкам цвета.
  • Во избежание доступа к данным с ограниченным доступом после публикации приложения удалите все прикрепленные файлы с параметрами Section Access. Публикуемое приложение включает прикрепленные файлы. При копировании публикуемого приложения прикрепленные файлы включаются в копию. Однако, если к прикрепленным файлам данных были применены ограничения Section Access, при копировании прикрепленных файлов параметры Section Access не сохраняются, поэтому пользователи скопированного приложения могут видеть все данные прикрепленных файлов.
  • Знак подстановки (*) интерпретируется как все (перечисленные) значения поля в таблице. При использовании в одном из системных полей (USERID, GROUP) в таблице, загруженной в раздел Section Access скрипта, этот символ интерпретируется как все (также и неперечисленные) возможные значения этого поля.
  • Поля безопасности могут быть помещены в разные таблицы.
  • При загрузке данных из файла QVD использование функции Upper приведет к снижению скорости загрузки.
  • Если вы заблокировали себе доступ к приложению с помощью настройки Section Access, можно открыть приложение без данных и отредактировать Section Access в скрипте загрузки данных. Для этого требуется доступ для редактирования и перезагрузки скрипта загрузки данных.

    Для получения дополнительной информации см. Открытие приложения без данных.

  • Загрузка двоичного файла вызовет наследование ограничений доступа новым приложением Qlik Sense.