데이터에 대한 액세스 필터링

필터는 Essbase 큐브에서 데이터 값에 대한 보안 액세스를 제어합니다. 필터는 사용 가능한 보안의 가장 세부적인 형태입니다. 필터는 특정 큐브 셀 또는 셀 범위에 대해 일련의 제한사항을 지정합니다. 관리자 또는 관리자는 필터를 지정하여 사용자 또는 그룹에 대한 접근 권한을 규제합니다.

고유의 보안 롤에 따라 필터를 생성, 지정, 편집, 복사 또는 삭제하거나 필터 이름을 바꿀 수 있는지 여부가 결정됩니다.

  • 애플리케이션 관리자 롤을 보유한 경우 사용자 또는 그룹에 대한 모든 필터를 관리할 수 있습니다. 자신에게는 필터가 적용되지 않습니다.
  • 데이터베이스 업데이트 롤을 보유한 경우 직접 생성한 애플리케이션에 대한 필터를 관리할 수 있습니다.
  • 데이터베이스 관리자 롤을 보유한 경우 애플리케이션 또는 큐브 내에서 필터를 관리할 수 있습니다.
  • 데이터베이스 액세스 롤(기본값)을 보유한 경우 필터로 액세스 권한이 추가로 제한되지 않는 한 모든 셀의 데이터 값에 대해 읽기 액세스 권한을 갖습니다.

Essbase 웹 인터페이스를 사용하여 필터 생성

Essbase 웹 인터페이스의 데이터베이스 사용자정의 섹션에서 사용자 또는 그룹에 대한 큐브 액세스를 제한하는 보안 필터를 생성할 수 있습니다.

큐브에 대한 필터를 여러 개 생성할 수 있습니다. 필터를 편집하는 경우 해당 필터의 모든 사용자가 관련 정의에 대한 수정사항을 상속합니다.

  1. 필터 편집기로 이동합니다.
    1. 홈 페이지에서 애플리케이션을 연 다음 데이터베이스(큐브)를 엽니다.
    2. 필터를 누릅니다.
  2. 추가를 누릅니다.
  3. 필터 이름 텍스트 상자에 필터 이름을 입력합니다.
  4. 필터 편집기에서 추가를 누릅니다.
  5. 액세스 아래에서 드롭다운 메뉴를 눌러 여기서 액세스 레벨을 선택합니다.
    • 없음: 검색 또는 업데이트할 수 있는 데이터가 없습니다.

    • 읽기: 데이터를 검색할 수 있지만 업데이트할 수 없습니다.

    • 쓰기: 데이터를 검색 및 업데이트할 수 있습니다.

    • 메타 읽기: 메타데이터(차원 및 멤버 이름)를 검색 및 업데이트할 수 있습니다.

      메타 읽기 액세스 레벨은 기타 모든 액세스 레벨을 무효화합니다. 추가 데이터 필터는 기존 메타 읽기 필터 내에서 적용됩니다. AND 관계를 사용한 멤버 조합 필터링은 메타 읽기에 적용되지 않습니다. 메타 읽기는 OR 관계를 사용하여 각 멤버를 별도로 필터링합니다.

  6. 멤버 지정에서 행을 선택하고 멤버 이름을 입력한 다음 저장을 누릅니다.

    멤버를 별도로 필터링할 수도 있고, 멤버 조합을 필터링할 수도 있습니다. 함수나 대체 변수 이름(앰퍼샌드(&)로 시작)으로 정의된 차원 또는 멤버 이름, 별칭 이름, 멤버 조합, 멤버 집합을 지정합니다. 다중 항목은 콤마로 구분합니다.

  7. 필요에 따라 필터에 대한 추가 행을 생성합니다.

    필터 행이 겹치거나 충돌하는 경우 더 자세한 큐브 영역 지정이 간단한 지정보다 우선하고, 허용 범위가 더 큰 액세스 권한이 허용 범위가 작은 권한보다 우선합니다. 예를 들어, 사용자에게 Actual에 대한 읽기 액세스 권한과 Jan에 대한 쓰기 액세스 권한을 부여하면 사용자는 Jan Actual에 대해 쓰기 액세스 권한을 갖습니다.

  8. 검증을 눌러 필터가 적합한지 확인합니다.
  9. 저장을 누릅니다.

필터를 편집하려면 큐브를 선택하고 왼쪽 패널에서 필터 옵션을 누릅니다. 그런 다음, 필터 이름을 누르고 필터 편집기에서 변경을 수행하여 필터를 편집합니다. 기존 행을 편집하려면 해당 행을 두 번 누릅니다.

필터 이름 오른쪽에 있는 [작업] 메뉴를 누르고 옵션을 선택하여 필터를 복사하고 이름을 바꾸거나 삭제할 수 있습니다.

필터를 생성한 후 사용자 또는 그룹에 할당합니다.

보안 필터를 사용하여 데이터베이스 셀에 대한 액세스 제어를 참조하십시오.

효율적인 동적 필터 생성

외부 소스 데이터를 기반으로 동적 필터를 생성하여 필요한 필터 정의 수를 줄일 수 있습니다.

많은 사용자를 위한 하드 코딩된 데이터 액세스 필터 집합을 관리하는 대신 멤버 및 사용자 이름을 기반으로 외부 소스 데이터에서 큐브 셀에 대한 액세스를 필터링할 수 있습니다.
@datasourceLookup 메소드 및 $LoginUser$LoginGroup 변수 등 동적 필터 정의 구문을 사용하면 됩니다. 외부 소스 데이터는 csv 파일 또는 관계형 테이블입니다. 관계형 소스 데이터의 경우 관계형 테이블에 .csv를 로드할 수 있습니다.

동적 필터 구문

동적 필터 구문을 사용하여 여러 사용자와 그룹에 지정할 수 있는 유연한 필터를 생성합니다.

필터 행에는 멤버 표현식과 함께 정의의 일부로 다음 요소가 포함될 수 있습니다.

$loginuser

이 변수는 런타임 시 현재 로그인한 사용자의 값을 저장합니다. @datasourcelookup 메소드와 함께 사용할 수 있습니다.

$logingroup

이 변수는 현재 로그인한 사용자가 속한 모든 그룹의 값을 저장합니다. 직접 그룹과 간접 그룹이 모두 포함됩니다. @datasourcelookup 메소드와 함께 사용할 때 각 그룹은 데이터 출처에 대해 개별적으로 조회됩니다.

@datasourcelookup

이 메소드는 데이터 소스에서 레코드를 인출합니다.

구문

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
매개변수 설명
dataSourceName

Essbase에서 정의된 외부 데이터 소스의 이름입니다. 애플리케이션 레벨 데이터 소스의 경우 이름에 애플리케이션 이름과 마침표를 접두어로 사용합니다.

columnName

제공된 columnValue를 검색할 데이터 소스 열의 이름입니다.

columnValue

columnName에서 검색할 값입니다.

returnColumnName

값 목록을 반환할 데이터 소스 열의 이름입니다.

주:

데이터 소스 열 이름에는 USER, GROUP 또는 ROLE과 같은 SQL 예약어가 사용되지 않아야 합니다. 예약어를 사용하면 SQL 구문 분석 오류 또는 예상치 않은 필터 동작이 발생할 수 있습니다.

설명

@datasourcelookup 호출은 다음 SQL 질의와 동등합니다.

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup은 제공된 데이터 출처를 조회하고 columnNamecolumnValue가 포함된 레코드를 검색합니다. columnValue$loginuser로 지정할 경우 이 메소드는 columnName에 현재 로그인한 사용자 이름이 포함된 레코드를 검색합니다.

Essbase는 콤마로 구분된 문자열로 목록 요소를 결합하여 필터 정의 행을 구성합니다. 레코드에 특수 문자 또는 공백이 포함되거나 숫자만 포함된 경우 따옴표로 묶입니다.

주:

@options 매개변수는 조회 실패 동작을 제어하는 데 사용할 수 있습니다. strictLookup=true인 경우 조회 실패가 치명적 오류로 처리되고 필터 결과가 반환되지 않습니다.

예제

매개변수를 따옴표로 묶습니다.

다음 호출은 전역 데이터 소스를 조회하고 Mary가 상점 관리자인 상점 이름 목록을 반환합니다.

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

다음 호출은 애플리케이션 레벨 데이터 소스를 조회하고 현재 로그인한 사용자가 상점 관리자인 상점 이름 목록을 반환합니다.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

다음 호출은 애플리케이션 레벨 데이터 소스를 조회하고 로그인한 사용자가 속한 그룹과 상점 부서가 일치하는 상점 이름 목록을 반환합니다.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

로그인한 사용자가 3개 그룹에 속하는 경우 위의 @datasourcelookup 메소드는 각 그룹에 대해 모든 일치 열 값을 반환합니다.

다음 예제에서는 동적 필터 표현식 내의 SQL 함수를 사용합니다.

@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")

다음 예제는 명시적 대소문자 구분 함수를 사용하여 대소문자 구분 평가를 수행합니다.

@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")

다음 예에서는 Sales 또는 Marketing 부서에 속한 점포를 반환합니다.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")

다음 예에서는 @datasourceLookup과 함께 멤버 세트 함수를 사용합니다.

@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))

다음 예에서는 데이터 소스 조회와 함께 중첩된 멤버 세트 함수를 사용합니다.

@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))

다음 예에서는 엄격한 조회 동작을 사용합니다. 조회가 실패하면 필터 결과가 반환되지 않습니다.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))

동적 필터를 생성하는 워크플로우

다음과 같은 일반적인 워크플로우를 사용하여 동적 필터를 생성할 수 있습니다.

이 동적 필터 워크플로우에서는 이미 큐브가 있고 프로비전된 사용자 및 그룹이 있다고 간주합니다.

  1. 데이터 소스가 파일인지 아니면 관계형 소스인지 식별합니다.
  2. 전역적으로 또는 애플리케이션 레벨에서 Essbase 내에서 접속 및 데이터 소스를 정의합니다.
  3. 큐브 레벨에서 필터를 생성합니다. 큐브로 이동하고 필터를 선택합니다.
  4. 동적 필터 구문에서 필요에 따라 $loginuser 변수, $logingroup 변수와 @datasourcelookup 메소드를 사용하여 각 필터의 필터 행을 정의합니다.
  5. 사용자 또는 그룹에 필터를 지정합니다.
  6. 필터를 그룹에 지정한 경우 필터링할 애플리케이션에 그룹을 지정합니다. 애플리케이션으로 이동하고 권한을 선택합니다.

동적 필터의 예

다음 동적 필터는 갤러리에서 샘플 템플리트로 사용 가능한 Efficient.UserFilters라는 큐브에서 작동합니다.


로그인한 사용자에게 메타 읽기 액세스 권한을 부여하는 세 행을 가진 동적 필터입니다.

이 동적 필터를 생성하고 적용하는 방법을 알아보려면 갤러리의 기술 섹션에서 워크북 템플리트 Efficient_Filters.xlsx를 다운로드하고 워크북의 README 지침을 따릅니다. 갤러리는 Essbase 웹 인터페이스의 파일 섹션에서 사용할 수 있습니다.