섹션 액세스를 사용하여 보안 관리

데이터 로드 스크립트에서 섹션 액세스를 사용하여 보안을 처리할 수 있습니다. 이 방법으로, 하나의 파일만 사용하여 많은 사용자 또는 사용자 그룹을 위해 데이터를 보관할 수 있습니다. Qlik Sense는 인증 및 권한 부여에 섹션 액세스의 정보를 사용하며 사용자만이 본인의 데이터를 볼 수 있도록 데이터의 용량을 동적으로 축소합니다.

보안이 파일 자체에 구축되어 있으므로 다운로드한 파일도 어느 정도까지는 보호됩니다. 단, 보안 요구가 높은 경우에는 파일 다운로드 및 오프라인 사용이 방지되어야 하며, 파일이 Qlik Sense 서버에서만 게시되어야 합니다. 모든 데이터가 한 파일에 보관되므로 이 파일의 크기는 매우 커질 가능성이 높습니다.

경고:

제한된 데이터를 노출하지 않으려면 앱을 게시하기 전에 섹션 액세스 설정이 있는 모든 첨부 파일을 제거합니다.

앱이 게시될 때 첨부 파일이 포함됩니다. 게시된 앱을 복사하는 경우 복사본에 첨부 파일이 포함됩니다. 하지만 첨부된 데이터 파일에 섹션 액세스 제한이 적용된 경우, 파일을 복사할 때 섹션 액세스 설정이 유지되지 않으므로 복사된 앱 사용자는 첨부된 파일에서 모든 데이터를 볼 수 있습니다.

경고: 스냅샷은 스냅샷을 만드는 사용자의 액세스 권한에 따라 데이터를 표시하며, 스토리에서 공유될 수 있습니다. 그러나 사용자가 앱에서 라이브 데이터를 보기 위해 스토리에서 시각화로 되돌아가면 자체 액세스 권한에 따라 제한됩니다.
경고:

섹션 액세스를 사용하거나 중요한 데이터로 작업할 경우에는 값이 노출될 수 있으므로 마스터 차원 값에 색을 할당해서는 안 됩니다.

스크립트의 섹션

액세스 제어는 Qlik Sense가 일반적으로 데이터를 로드하는 것과 동일한 방식으로 로드한 하나 이상의 보안 테이블을 통해 관리됩니다. 따라서 이러한 테이블을 일반 데이터베이스에 저장할 수 있습니다. 보안 테이블을 관리하는 스크립트 문은 스크립트에서 Section Access 문으로 시작하는 액세스 섹션 내에 지정됩니다.

스크립트에 액세스 섹션이 정의되어 있는 경우 앱 데이터를 로드하는 스크립트 부분은 Section Application 문으로 시작하는 다른 섹션에 지정해야 합니다.

Example:  

Section Access;
LOAD * inline
[ACCESS,USERID
USER,U ];
Section Application;
LOAD... ... from... ...

섹션 액세스 시스템 필드

액세스 수준은 섹션 액세스 내에서 로드되는 하나 또는 여러 개의 테이블을 통해 사용자에게 할당됩니다. 이러한 테이블에는 여러 가지 사용자 관련 시스템 필드(일반적으로 USERID 및 액세스 수준 ACCESS를 정의하는 필드)가 포함될 수 있습니다. 모든 섹션 액세스 시스템 필드는 인증 또는 권한 부여에 사용됩니다. 전체 섹션 액세스 시스템 필드에 대한 설명이 아래에 나와 있습니다.

ACCESS

해당 사용자에게 있어야 하는 액세스 권한을 정의합니다.

지정된 사용자 또는 사용자 그룹에 대해 Qlik Sense 앱에 대한 액세스 권한을 부여할 수 있습니다. 보안 테이블에서 사용자에게 ADMIN 또는 USER 액세스 수준을 할당할 수 있습니다. 유효한 액세스 수준이 할당되지 않은 사용자는 앱을 열 수 없습니다.

ADMIN 권한이 있는 사용자는 앱의 모든 데이터에 액세스할 수 있습니다. USER 권한이 있는 사용자는 보안 테이블에서 정의된 대로만 데이터에 액세스할 수 있습니다.

USERID

Qlik Sense 사용자 이름에 해당하는 문자열이 포함되어 있습니다. Qlik Sense는 프록시에서 로그인 정보를 가져와서 이 필드의 값과 비교합니다.

GROUP

Qlik Sense의 그룹에 해당하는 문자열이 포함되어 있습니다. Qlik Sense는 이 그룹에 대해 프록시에서 제공되는 사용자를 해결합니다.

참고: 그룹을 사용하여 데이터를 줄일 때 INTERNAL\SA_SCHEDULER 계정 사용자는 Qlik Management Console 작업에서 계속 스크립트를 다시 로드해야 합니다.

OMIT

이 특정 사용자에 대해 생략할 필드의 이름이 포함되어 있습니다. 와일드카드가 사용될 수 있으며 필드는 비워둘 수 있습니다. 이 작업을 수행하는 간편한 방법은 하위 필드를 사용하는 것입니다.

참고: 키 필드에 OMIT를 적용하지 않는 것이 좋습니다. 생략된 키 필드는 데이터 모델 뷰어에 표시될 수 있지만 콘텐츠는 사용할 수 없으므로 사용자에게 혼란을 줄 수 있습니다. 또한 시각화에서 사용되는 필드에 OMIT를 적용하면 생략된 필드에 액세스 권한이 없는 사용자에게는 시각화가 불완전할 수 있습니다.

Qlik Sense는 프록시에서 제공된 사용자를 UserID와 비교하고 테이블의 그룹에서 사용자를 확인합니다. 액세스가 허용되는 그룹에 사용자가 속하거나 사용자가 일치하는 경우 앱에 대한 액세스 권한을 얻게 됩니다.

참고:

섹션 액세스를 설정하여 앱에서 사용자 자신을 잠근 경우에는 데이터 없이 앱을 열고 데이터 로드 스크립트에서 액세스 섹션을 편집할 수 있습니다. 그러려면 데이터 로드 스크립트를 편집하고 다시 로드할 수 있는 액세스 권한이 있어야 합니다.

자세한 내용은 데이터 없이 앱 열기를 참조하십시오.

Qlik Sense의 상징인 동일한 내부 논리가 액세스 섹션에서도 사용되므로 보안 필드는 다른 테이블에 배치될 수 있습니다. 섹션 액세스의 LOAD 또는 SELECT 문에 나열된 모든 필드는 대문자로 작성해야 합니다. 데이터베이스에서 소문자를 포함한 필드 이름은 LOAD 또는 SELECT 문으로 필드를 읽기 전에 Upper 함수를 사용하여 대문자로 변환하십시오.

자세한 내용은 Upper - 스크립트 및 차트 함수를 참조하십시오.

와일드카드(*)는 이 필드의 (나열된) 모든 값, 즉 이 테이블 내의 다른 위치에 나열된 값으로 해석됩니다. 스크립트의 액세스 섹션에서 로드된 테이블의 시스템 필드(USERID, GROUP) 중 하나에서 사용된 경우 이 필드에 사용 가능한(나열되지 않은) 모든 값으로 해석됩니다.

참고: QVD 파일에서 데이터를 로드할 경우 upper 함수를 사용하면 로딩 속도가 저하됩니다.
참고: 섹션 액세스를 활성화한 경우 여기에 나열된 섹션 액세스 시스템 필드 이름을 데이터 모델의 필드 이름으로 사용할 수 없습니다.

Example:

이 예에서는 재무 그룹의 사용자만 문서를 열 수 있습니다.

문서에 액세스
액세스 그룹
USER Finance

동적 데이터 축소

Qlik Sense는 섹션 액세스 로그인에 따라 사용자에게 앱의 데이터 일부를 숨길 수 있는 동적 데이터 축소를 지원합니다.

  • 필드(열)는 시스템 필드 OMIT를 사용하여 숨길 수 있습니다.
  • 레코드(행)는 섹션 액세스 데이터를 실제 데이터와 연결하여 숨길 수 있습니다. 표시하거나 제외할 값의 선택은 섹션 액세스 및 섹션 응용 프로그램에 공통적인 이름이 있는 하나 이상의 필드를 가짐으로써 제어됩니다. 사용자 로그인 후 Qlik Sense는 섹션 액세스의 필드 선택을 정확하게 동일한 필드 이름(필드 이름은 대문자로 작성되어야 함)으로 섹션 응용 프로그램의 필드에 일치시키려고 시도합니다. 선택이 완료되면 Qlik Sense는 이러한 선택에 의해 제외된 모든 데이터를 해당 사용자에게 영구적으로 숨깁니다.
참고: 섹션 액세스에서는 모든 필드 이름 및 필드 값이 기본적으로 대문자로 변환되므로 위에서 설명한 전송에 사용된 모든 필드 이름과 이 필드의 모든 필드 값은 대문자여야 합니다.
참고: ADMIN 액세스 권한이 있는 INTERNAL\SA_SCHEDULER 계정 사용자는 Qlik Management Console 작업에서 스크립트를 다시 로드할 수 있어야 합니다.

Example: 사용자 ID를 기반으로 데이터 축소

section access;
LOAD * inline [
ACCESS, USERID,REDUCTION, OMIT
USER, 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;

이제 REDUCTION(대문자) 필드가 섹션 액세스 및 섹션 응용 프로그램 모두에 있습니다(모든 필드 값도 대문자임). 두 필드는 일반적으로 완전히 다르고 별개이지만 섹션 액세스를 사용할 경우 서로 연결되어 사용자에게 표시되는 레코드 수가 축소됩니다.

섹션 액세스에서 OMIT 필드는 사용자에게 숨겨야 하는 필드를 정의합니다.

결과는 다음과 같습니다.

  • 사용자 ADMIN은 모든 필드와 REDUCTION이 1,2 또는 3일 때 다른 사용자가 이 예에서 볼 수 있는 레코드를 볼 수 있습니다.
  • 사용자 A는 모든 필드를 볼 수 있지만 REDUCTION=1에 연결된 레코드만 해당됩니다.
  • 사용자 BREDUCTION=2에 연결된 레코드 중 NUM를 제외한 모든 필드를 볼 수 있습니다.
  • 사용자 CREDUCTION=3에 연결된 레코드 중 ALPHA를 제외한 모든 필드를 볼 수 있습니다.

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 그룹에 속한 사용자는 NUM 필드를 제외하고 REDUCTION=2에 연결된 데이터를 볼 수 있습니다.
  • C 그룹에 속한 사용자는 ALPHA 필드를 제외하고 REDUCTION=3에 연결된 데이터를 볼 수 있습니다.
  • GROUP1 그룹에 속한 사용자는 모든 필드에서 REDUCTION=3에 연결된 데이터를 볼 수 있습니다.
  • INTERNAL\SA_SCHEDULER 사용자는 어느 그룹에도 속하지 않지만 모든 필드에서 모든 데이터를 볼 수 있습니다.

    참고:

    이 행에서 와일드카드(* 문자)는 섹션 액세스 테이블 내의 모든 값만 참조합니다. 섹션 액세스의 REDUCTION 필드에서 사용할 수 없는 섹션 응용 프로그램에 값이 있는 경우에는 값이 줄어듭니다.

상속된 액세스 제한

이진 로드의 경우 액세스 제한이 새로운 Qlik Sense 앱에서 상속됩니다.