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

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

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

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

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

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

Пример:  

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 постоянно скрывает все данные, исключенные этими выборками, от пользователя. Если знак подстановки (*) используется в качестве значения поля в столбце сокращения количества данных, он интерпретируется как разрешение доступа пользователю к записям, связанным со всеми выбранными полями сокращения в таблице безопасности.

Когда Qlik Sense сравнивает поле сокращения в Section Access с полями в модели данных, ожидается следующее поведение:

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

  • Если значение поля сокращения не соответствует ни одному из значений полей в модели данных, приложение не откроется для обычного ПОЛЬЗОВАТЕЛЯ. Но оно откроется без сокращений для пользователя с ролью АДМИНИСТРАТОР.

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

Примечание к информации

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

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

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

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. Следующий пример построен на предыдущем примере, в котором сокращение количества данных строки уже выполнено.

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

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.

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

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 разрешено просматривать все поля и только те записи, которые другие пользователи могут просматривать в данном примере, когда для поля REDUCTION указано значение 1, 2 или 3.
  • Пользователи, принадлежащие к группе 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 таблицы безопасности проверяется прокси-службой. В Qlik Cloud роль проверки подлинности берет на себя поставщик удостоверений. Следовательно, Section Access, который настроен для локальной среды, такой как Qlik Sense Enterprise on Windows, не будет работать в облачной среде.

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

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

ACCESSUSERIDUSER.EMAILКомментарийCOUNTRY
USER

ABC\Joe

*Локальный доступСША
USER*

joe.smith@example.com

Доступ в облакеСША
USER

ABC\Ursula

*Локальный доступГермания
USER*

ursula.schultz@example.com

Доступ в облакеГермания
USER

ABC\Stefan

*Локальный доступШвеция
USER*

stefan.svensson@example.com

Доступ в облакеШвеция

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

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 и Insight Advisor Chat

Чтобы приложения, использующие Section Access стали доступны в Insight Advisor Chat, в скрипте Section Access необходимо предоставить административные права доступа следующим пользователям службы:

  • INTERNAL/sa_repository: Благодаря этому скрипт Section Access становится доступным в службе репозитория для управления доступом пользователей.

  • INTERNAL/sa_scheduler: Это позволяет приложению выполнять перезагрузку с помощью задач QMC.

Примечание к предупреждению

Если в именах приложений, полей и основных элементов содержится конфиденциальная информация, они могут стать видимыми в результате обеспечения доступности приложений с Section Access для Insight Advisor Chat. Рекомендации приложений для запросов включают приложения в потоках, к которым пользователь имеет доступ. Эти потоки могут включать приложения, к которым у пользователя нет доступа в Section Access приложения. Однако при выборе таких приложений ничего не произойдет. При выборе Измерения или Меры для просмотра доступных элементов в приложении с использованием Section Access, пользователи могут увидеть объекты, к которым у них нет доступа. Однако при выборе этих элементов пользователи не увидят соответствующих данных.

Пример.

Section Access; LOAD * inline [ USERID ,ACCESS INTERNAL\sa_repository ,ADMIN INTERNAL\sa_scheduler ,ADMIN DOMAINNAME\user1 ,ADMIN DOMAINNAME\user2 ,USER DOMAINNAME\user3 ,USER ];

После добавления этих пользователей в скрипт Section Access это приложение можно сделать доступным для Insight Advisor Chat. Когда приложение перезагрузится, оно станет доступным в Insight Advisor Chat.

Использование QVD с Section Access

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

Оптимизированные загрузки не работают при использовании файлов QVD с Section Access. Если требуется использовать файл QVD для загрузки данных в Section Access, необходимо расширить файл QVD. Самый простой способ расширения файла QVD — изменить форматирование при загрузке данных.

В следующем примере файл QVD не расширяется, так как к данным не применяется форматирование.

Пример: Неработающий пример без форматирования данных (оптимизированная загрузка)

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd);

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

Пример: Рабочий пример с форматированием данных

section access; LOAD ACCESS, USERID, PASSWORD, upper([GROUP]) as [GROUP] FROM SAccess.qvd (qvd);

Также можно добавить предложение Where 1=1 в оператор LOAD.

Пример: Еще один рабочий пример с форматированием данных

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd) where 1=1;

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

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

  • Для написания всех имен и значений полей, перечисленных в операторе LOAD или SELECT, следует использовать верхний регистр. Имя любого поля с буквами в нижнем регистре в базе данных должно быть преобразовано в верхний регистр с помощью функции 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.

Помогла ли вам эта страница?

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