Управление безопасностью данных с помощью Section Access
Section Access используется для управления безопасностью приложения. Практически это часть скрипта загрузки данных, в которую добавляется таблица безопасности, определяющая, кто что может просматривать. Qlik Sense использует эту информацию для сокращения объема данных до соответствующей области, когда пользователь открывает приложение, то есть часть данных в приложении будет скрыта от пользователя в зависимости от его удостоверения. Section Access тесно интегрирован с данными в приложении и полагается на них для управления доступом. Эта форма динамического сокращения данных может предназначаться для строк таблицы, столбцов таблицы или их комбинации. Для получения дополнительной информации см. раздел Доверие и безопасность в Qlik.
Разделы в скрипте загрузки
Управление доступом к данным осуществляется с помощью одной или нескольких таблиц безопасности, загруженных так же, как обычно загружаются данные. Таким образом, эти таблицы можно хранить в стандартной базе данных или в электронной таблице. Операторы скрипта, управляющие таблицами безопасности, даны в секции авторизации, которая в скрипте запускается оператором Section Access.
Если в скрипте определена секция авторизации, то часть скрипта, загружающая данные приложения, должна быть помещена в другой раздел, запускаемый оператором Section Application.
Пример:
Обратите внимание, что после внесения изменений в скрипт загрузки всегда необходимо перезагружать данные, чтобы изменения вступили в силу.
Системные поля Section Access
Уровни доступа назначаются пользователям в одной или нескольких таблицах безопасности, загруженных в части Section Access скрипта. Эти таблицы должны содержать как минимум два системных поля: ACCESS — поле, которое определяет уровень доступа, и USERID или USER.EMAIL. Другие дополнительные системные поля можно добавить в зависимости от варианта использования. Ниже описан полный набор системных полей Section Access.
ACCESS
Определяет, какой уровень доступа должен иметь соответствующий пользователь.
Доступ к приложениям Qlik Sense может быть авторизован для указанных пользователей. В таблице безопасности пользователям могут быть назначены уровни доступа ADMIN или USER. Пользователь с правами ADMIN имеет доступ ко всем данным в приложении, если они не ограничены таблицей безопасности. Пользователь с правами USER имеет доступ только к данным, определенным в таблице безопасности. Если уровень доступа не назначен, пользователь не сможет открыть приложение.
Если Section Access используется в сценарии перезагрузки, сервисному пользователю планировщика INTERNAL\SA_SCHEDULER требуется доступ ADMIN для выполнения перезагрузок. Пример.
Если нежелательно использовать учетную запись INTERNAL\SA_SCHEDULER, альтернативный метод см. в разделе Использование олицетворения для перезагрузки данных.
Если в сценарии создания приложения On-demand (ODAG) в приложении шаблона используется Section Access, пользователя INTERNAL\SA_API необходимо включить в таблицу Section Access в качестве ADMIN. Пример.
USERID
Содержит строку, соответствующую имени домена Qlik Sense и имени пользователя. Программа Qlik Sense получит сведения о входе в систему из прокси-службы и сравнит ее со значением в данном поле.
Знак подстановки (*) интерпретируется как все пользователи согласно дальнейшим условиям, указанным в таблице безопасности. Например, в следующей таблице безопасности пользователи, которые относятся к администраторам клиента Qlik Sense, могут просматривать все перечисленные значения поля REDUCTION.
NTNAME
Поле, в котором должна содержаться строка, соответствующая имени пользователя или имени группы домена Windows NT. Если применяется другая система проверки подлинности, она должна содержать имя аутентифицируемого пользователя. Программа Qlik Sense получит сведения о входе в систему из ОС и сравнит ее со значением в данном поле.
GROUP
Содержит строку, соответствующую группе в программе Qlik Sense. Программа Qlik Sense разрешит пользователя, предоставленного прокси-службой, по этой группе.
SERIAL
Содержит строку, соответствующую платформе. Если поле содержит строку ‘QLIKSENSE’ или знак подстановки ‘*’, доступ может быть предоставлен в зависимости от других полей в таблице безопасности.
OMIT
Содержит имя поля, которое должно быть опущено для этого конкретного пользователя. Могут использоваться подстановочные знаки, и поле может быть пустым.
Управление доступом пользователя к приложению
Section Access в своей самой простой форме может использоваться для ограничения доступа определенных пользователей к приложению. Доступ пользователям к приложению запрещен посредством исключения. Другими словами, если определенный идентификатор пользователя не указан в таблице безопасности, он не сможет получить доступ к приложению. Единственное исключение из этого правила — знак подстановки (*) присвоен полю USERID в одной из строк таблицы безопасности. В этом случае знак подстановки означает, что все аутентифицированные пользователи могут получить доступ к приложению. Вот пример таблицы безопасности со списком идентификаторов пользователей:
Управление доступом пользователя к определенным данным в приложении
Динамическое сокращение данных ограничивает доступ к строкам и столбцам в таблицах данных в рамках приложений Qlik Sense приложений после того, как пользователь получил авторизацию на доступ к самому приложению.
Управление доступом к данным на уровне строк
Ограничьте доступ к данным на уровне строк, добавив столбец сокращения количества данных в таблицу безопасности в разделе доступа скрипта загрузки. Определенные записи (строки) можно скрыть от пользователей путем привязки данных Section Access к реальным данным. Выбор данных для отображения или исключения управляется с помощью одного или нескольких полей с общими именами в разделах скрипта Section Access и Section Application. После входа пользователя в систему программа Qlik Sense сопоставляет выборки в полях секции доступа с любыми полями приложения секции приложения с точно такими же именами (имена полей должны быть написаны в верхнем регистре). После создания выборок программа Qlik Sense постоянно скрывает все данные, исключенные этими выборками, от пользователя. Если знак подстановки (*) используется в качестве значения поля в столбце сокращения количества данных, он интерпретируется как разрешение доступа пользователю к записям, связанным со всеми выбранными полями сокращения в таблице безопасности.
Когда Qlik Sense сравнивает поле сокращения в Section Access с полями в модели данных, ожидается следующее поведение:
Если значение какого-либо поля в модели данных соответствует значению поля сокращения в Section Access, приложение откроется и в нем будут отображаться данные, связанные с этими совпадающими полями, для указанного пользователя. Остальные данные будут скрыты.
Если значение поля сокращения не соответствует ни одному из значений полей в модели данных, приложение не откроется для обычного ПОЛЬЗОВАТЕЛЯ. Но оно откроется без сокращений для пользователя с ролью АДМИНИСТРАТОР.
Не рекомендуется использовать несколько полей сокращения в Section Access, так как это позволит использовать другие комбинации доступа, отличные от предусмотренных.
Знак подстановки * в столбце сокращения количества данных относится только ко всем значениям в таблице безопасности. Если в разделе Section Application существуют значения, недоступные в столбце сокращения таблицы безопасности, они будут сокращены.
Пример: Сокращение количества данных на уровне строки на основе удостоверения пользователя
В этом примере поле 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. Следующий пример построен на предыдущем примере, в котором сокращение количества данных строки уже выполнено.
Пример: Сокращение количества данных столбца на основе удостоверения пользователя
Поле 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.
Пример: Сокращение количества данных на основе групп пользователей
Будет получен следующий результат:
- Пользователям из группы 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 в таблице безопасности. Вот как может выглядеть таблица безопасности.
ACCESS | USERID | USER.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 | Доступ в облаке | Швеция |
Скрипт авторизации:
Обратите внимание, что у каждого пользователя есть две записи: одна для локального и одна для облачного доступа. Знаки подстановки обеспечивают использование только соответствующих полей проверки подлинности. В этом примере 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 это приложение можно сделать доступным для Insight Advisor Chat. Когда приложение перезагрузится, оно станет доступным в Insight Advisor Chat.
Использование QVD с Section Access
QVD можно считывать как обычную загрузку или как оптимизированную загрузку. Оптимизированной является загрузка, когда при загрузке не выполняются преобразования данных и отсутствуют фильтры с предложением WHERE.
Оптимизированные загрузки не работают при использовании файлов QVD с Section Access. Если требуется использовать файл QVD для загрузки данных в Section Access, необходимо расширить файл QVD. Самый простой способ расширения файла QVD — изменить форматирование при загрузке данных.
В следующем примере файл QVD не расширяется, так как к данным не применяется форматирование.
Пример: Неработающий пример без форматирования данных (оптимизированная загрузка)
Вместо этого можно использовать функцию upper() для форматирования данных, в результате чего произойдет расширение файла QVD.
Пример: Рабочий пример с форматированием данных
Также можно добавить предложение Where 1=1 в оператор LOAD.
Пример: Еще один рабочий пример с форматированием данных
Инструкции и советы по использованию 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.