차원 데이터에 대한 사용자 지정 액세스 부여(Analysis Services)

큐브에 대한 읽기 권한을 설정한 후 차원 구성원에 대한 권한을 명시적으로 허용하거나 거부하는 추가 사용 권한을 설정할 수 있습니다(큐브에 사용된 모든 측정값을 포함한 측정값 차원에 포함된 측정값 포함). 예를 들어 여러 범주의 재판매인을 고려할 때 특정 비즈니스 유형의 데이터를 제외하도록 사용 권한을 설정할 수 있습니다. 다음 그림은 Reseller 차원에서 Warehouse 비즈니스 유형에 대한 액세스를 거부하기 이전과 이후의 결과를 보여 줍니다.

차원 구성원이 있는 피벗 테이블 및 차원 구성원이 없는 피벗 테이블

기본적으로 Analysis Services 큐브의 데이터를 읽을 수 있는 경우 해당 큐브와 연결된 모든 측정값 및 차원 구성원에 대한 읽기 권한이 자동으로 부여됩니다. 많은 시나리오에서 이러한 권한 부여만으로도 충분할 수 있지만, 때로는 보안 요구 사항에 따라 동일 차원에 대해 사용자마다 액세스 수준을 달리하는 보다 세분화된 권한 부여 전략이 필요합니다.

액세스를 허용(AllowedSet) 또는 거부(DeniedSet)할 구성원을 선택해서 액세스를 제한할 수 있습니다. 차원 구성원을 선택하거나 선택 취소하여 역할에 포함하거나 역할에서 제외하는 방법으로 이 작업을 수행할 수 있습니다.

기본 차원 보안은 가장 간단합니다. 단지 역할에 포함하거나 제외할 차원 특성 및 특성 계층만 선택하면 됩니다. 고급 보안은 좀 더 복잡하며 MDX 스크립팅에 대한 전문 지식이 있어야 합니다. 두 가지 방법은 아래에서 설명합니다.

필수 구성 요소

사용자 지정 액세스 시나리오에서는 일부 측정값 또는 차원 구성원을 사용할 수 없습니다. 역할에 따라 기본 측정값 또는 구성원에 대한 액세스가 제한되거나, 측정값 식의 일부인 측정값에 대한 액세스가 제한되는 경우 연결에 실패합니다.

차원 보안에 대한 장애물 확인: 기본 측정값, 기본 구성원, 측정값 식에 사용된 측정값

  1. SQL Server Management Studio에서 큐브를 마우스 오른쪽 단추로 클릭하고 큐브 스크립팅 | ALTER To | 새 쿼리 편집기 창을 선택합니다.

  2. DefaultMeasure을 검색합니다. 큐브와 각 큐브 뷰에 대해 각각 하나씩 있어야 합니다. 차원 보안을 정의할 때 기본 측정값에 대한 액세스를 제한하지 마세요.

  3. 그런 다음 MeasureExpression을 검색합니다. 측정값 식은 측정값입니다. 계산에 따라 다른 측정값이 계산에 포함되는 경우도 있습니다. 제한하려는 측정값이 식에 사용되지 않았는지 확인하세요. 또는 계속해서 액세스를 제한하고 큐브 전체에서 해당 측정값에 대한 모든 참조도 제외해야 합니다.

  4. 마지막으로 DefaultMember를 검색합니다. 특성의 기본 구성원 역할을 하는 특성을 기록해 둡니다. 차원 보안을 설정할 때 해당 특성에 대한 제한을 설정하지 마세요.

기본 차원 보안

  1. SQL Server Management Studio에서 Analysis Services 인스턴스에 연결하고 개체 탐색기에서 해당 데이터베이스에 대한 역할을 확장한 다음 데이터베이스 역할을 클릭하거나 새 데이터베이스 역할을 만듭니다.

    해당 역할에 큐브에 대한 읽기 권한이 이미 있어야 합니다. 이 단계에 대한 도움이 필요한 경우 큐브 또는 모델 권한 부여(Analysis Services)을 참조하세요.

  2. 차원 데이터 | 기본에서 사용 권한을 설정 중인 차원을 선택합니다.

  3. 특성 계층을 선택합니다. 일부 특성을 사용할 수 없게 됩니다. AttributeHierarchyEnabled인 특성만 특성 계층 목록에 표시됩니다.

  4. 액세스를 허용 또는 거부할 구성원을 선택합니다. 멤버 모두 선택 옵션을 통해 액세스를 허용하는 것이 기본값입니다. 이 기본값을 유지하고 이 역할을 통해 멤버 자격 창에서 Windows 사용자 및 그룹 계정에 표시하지 않아야 하는 개별 구성원의 선택을 취소하는 것이 좋습니다. 그러면 이 역할을 통해 연결된 사람은 향후 처리 작업 중에 추가되는 새 구성원을 자동으로 사용할 수 있다는 장점이 있습니다.

    또는 멤버 모두 선택 취소 옵션을 선택하여 액세스를 전부 취소한 후 허용할 구성원을 선택합니다. 그러면 향후 처리 작업 중에 차원 데이터 보안을 수동으로 편집하여 새 구성원에 대한 액세스를 허용할 때까지 해당 구성원이 표시되지 않습니다.

  5. 필요에 따라 고급을 클릭하여 이 특성 계층에 대해 보이는 값 합계를 사용하도록 설정합니다. 이 옵션은 역할을 통해 사용할 수 있는 구성원에 따라 집계를 다시 계산합니다.

    [!참고]

    차원 구성원을 제거하는 사용 권한을 적용할 경우 집계된 합계가 자동으로 다시 계산되지 않습니다. 사용 권한이 적용되기 전에 특성 계층의 모든 구성원이 200이라는 개수를 반환한다고 가정합니다. 일부 구성원에 대해 액세스를 거부하는 사용 권한을 적용한 후에 사용자에게 표시되는 구성원 값이 훨씬 적다고 해도 모든 구성원은 여전히 200을 반환합니다. 큐브 소비자의 혼란을 방지하기 위해 특성 계층의 모든 구성원 집계가 아니라 역할 구성원에 해당하는 구성원의 집계가 되도록 모든 구성원을 구성할 수 있습니다. 이러한 동작을 호출하려면 차원 보안을 구성할 때 고급 탭에서 Visual Totals를 사용하도록 설정합니다. 이렇게 설정하면 미리 계산된 집계에서 가져오지 않고 쿼리 시 집계가 계산됩니다. 그러면 쿼리 성능에 명확한 영향을 미치므로 필요한 경우에만 사용할 수 있습니다.

측정값 숨기기

셀 데이터에 대한 사용자 지정 액세스 부여(Analysis Services)에서 측정값의 셀 데이터뿐만 아니라 모든 시각적 측면을 완전히 숨기려면 차원 구성원에 대한 사용 권한이 필요하다고 설명했습니다. 이 섹션에서는 측정값의 개체 메타데이터에 대한 액세스를 거부하는 방법에 대해 설명합니다.

  1. 차원 데이터 | 기본에서 큐브 차원이 나올 때까지 차원 목록을 아래로 스크롤한 후 측정값 차원을 선택합니다.

  2. 측정값 목록에서 이 역할을 통해 연결된 사용자에게 표시하지 않아야 하는 측정값의 확인란 선택을 취소합니다.

[!참고]

필수 구성 요소를 확인하여 역할 보안을 중단할 수 있는 측정값을 식별하는 방법을 알아보세요.

고급 차원 보안

MDX에 대한 전문 지식이 있는 경우 액세스를 허용 또는 거부할 구성원에 대한 기준을 설정하는 MDX 식을 작성할 수도 있습니다. 역할 만들기 | 차원 데이터 | 고급을 클릭하여 스크립트를 제공합니다.

MDX Builder를 사용하여 MDX 문을 작성할 수 있습니다. 자세한 내용은 MDX 작성기 대화 상자(Analysis Services - 다차원 데이터)를 참조하십시오. 고급 탭에는 다음 옵션이 있습니다.

  • 특성
    멤버 보안을 관리할 특성을 선택합니다.

  • 허용된 멤버 집합
    AllowedSet는 멤버 없음(기본값), 모든 멤버 또는 일부 멤버로 확인될 수 있습니다. 특성에 대한 액세스를 허용하고 허용 집합의 멤버를 정의하지 않으면 모든 멤버에 대한 액세스 권한이 부여됩니다. 특성에 대한 액세스를 허용하고 특정한 특성 멤버 집합을 정의하면 명시적으로 허용된 구성원만 표시됩니다.

    AllowedSet를 만들면 특성이 여러 수준 계층에 참여할 때 파급 효과가 발생합니다. 예를 들어 역할이 워싱턴주에 대한 액세스를 허용한다고 가정합니다. 여기서 회사의 워싱턴주 영업부에 사용 권한을 부여하는 시나리오를 가정합니다. 이 역할을 통해 연결된 사람은 상위 항목(미국) 또는 하위 항목(시애틀 및 레드먼드)이 포함된 쿼리를 통해 워싱턴주를 포함한 체인의 구성원만 볼 수 있습니다. 다른 주는 명시적으로 허용되지 않았기 때문에 결과는 다른 주를 거부한 것과 같습니다.

    [!참고]

    빈 특성 구성원 집합({})을 정의하는 경우 데이터베이스 역할에서 볼 수 있는 특성 구성원이 없습니다. 허용 집합이 없는 경우가 빈 집합으로 해석되지는 않습니다.

  • 거부된 멤버 집합
    DeniedSet 속성은 구성원 없음, 모든 구성원(기본값) 또는 일부 특성 구성원으로 확인될 수 있습니다. 거부된 집합에 특정한 특성 구성원 집합만 포함된 경우 해당 구성원의 데이터베이스 역할 액세스만 거부되며 특성이 여러 수준의 계층에 있다면 하위 항목에 대한 액세스도 거부됩니다. 워싱턴주 영업부 예제를 생각해 보세요. 워싱턴주가 DeniedSet에 포함되어 있는 경우 이 역할을 통해 연결된 사람은 워싱턴주와 하위 항목 특성을 제외한 다른 모든 주를 볼 수 있습니다.

    거부된 집합이 고정 컬렉션인 이전 섹션 내용을 상기해 보세요. 후속 처리 작업에서 액세스를 거부해야 하는 새 구성원이 생기는 경우 목록에 해당 구성원을 추가하려면 이 역할을 편집해야 합니다.

  • 기본 멤버
    DefaultMember 속성은 쿼리에 특성이 명시적으로 포함되어 있지 않을 때 클라이언트에 반환되는 데이터 집합을 결정합니다. 특성이 명시적으로 포함되어 있지 않으면 Analysis Services에서 특성에 대해 다음 기본 멤버 중 하나를 사용합니다.

    • 데이터베이스 역할이 특성에 대한 기본 멤버를 정의하면 Analysis Services에서 이 기본 멤버를 사용합니다.

    • 데이터베이스 역할이 특성에 대한 기본 멤버를 정의하지 않으면 Analysis Services에서 특성 자체에 대해 정의된 기본 멤버를 사용합니다. 특성이 집계할 수 없는 것으로 정의된 경우를 제외하고는 달리 지정하지 않는 한 특성에 대한 기본 멤버는 All 멤버입니다.

    예를 들어 데이터베이스 역할이 Male을 Gender 특성에 대한 기본 구성원으로 지정한다고 가정합니다. 쿼리가 Gender 특성을 명시적으로 포함하면서 이 특성에 대해 다른 멤버를 지정하는 경우가 아니면 Analysis Services에서 남성 고객만 포함하는 데이터 집합을 반환합니다. 기본 멤버를 설정하는 방법은 기본 멤버 정의를 참조하십시오.

  • 보이는 값 합계 사용
    VisualTotals 속성은 표시되는 집계된 셀 값이 모든 셀 값에 따라 계산되는지 또는 데이터베이스 역할에 표시되는 셀 값에 따라서만 계산되는지 나타냅니다.

    기본적으로 VisualTotals 속성은 해제(False)되어 있습니다. 이 기본 설정을 사용하면 Analysis Services가 계산할 셀 값을 선택하는 데 시간을 들이는 대신 모든 셀 값의 합계를 빠르게 계산할 수 있기 때문에 성능이 향상됩니다.

    그러나 VisualTotals 속성이 해제된 경우 사용자가 집계된 셀 값을 사용하여 자신의 데이터베이스 역할이 액세스할 수 없는 특성 멤버의 값을 추론할 수 있다면 보안 문제가 발생할 수 있습니다. 예를 들어 Analysis Services가 세 개의 특성 멤버 값을 사용하여 집계된 셀 값을 계산한다고 가정합니다. 이 경우 데이터베이스 역할은 이러한 세 개의 특성 멤버 중 두 개를 볼 수 있는 액세스 권한을 가집니다. 이 데이터베이스 역할의 멤버는 집계된 셀 값을 사용하여 세 번째 특성 멤버의 값을 추론할 수 있습니다.

    VisualTotals 속성을 True로 설정하면 이 위험을 제거할 수 있습니다. VisualTotals 속성을 설정한 경우 데이터베이스 역할은 해당 역할이 사용 권한을 갖는 차원 멤버에 대해 집계된 합계만 볼 수 있습니다.

  • 검사
    이 페이지에서 정의한 MDX 구문을 테스트하려면 클릭합니다.

참고 항목

태스크

데이터 마이닝 구조 및 모델에 대한 권한 부여(Analysis Services)

데이터 원본 개체에 대한 권한 부여(Analysis Services)

개념

큐브 또는 모델 권한 부여(Analysis Services)

셀 데이터에 대한 사용자 지정 액세스 부여(Analysis Services)