2012-08-02 3 views
2

우리는 SSAS 2008을 사용하고 있습니다. 우리는 데이터 관련 사용 권한 문제가 있습니다. 들어오는 사용자의 (Active Directory [AD]) 컨텍스트에 SSAS 역할을 성공적으로 적용 할 수 있습니다. 즉, 반환 된 결과는 사용자의 SSAS 역할을 기반으로하며 역할에 따라 차원에서 반환 된 데이터를 제한합니다.SSAS 역할 - OR이 아닌 AND

알고있는 한 사용자에게 여러 역할을 적용하여 차원이 관련 역할을 수행하고 결과를 제한 할 수 있습니다. 그러나이 조건은 교차로 (예 : AND)로 적용될 수 있습니다. 조합으로 적용됨 (예 : OR)

몇 가지주의해야 할 점이 있습니다.
- 우리는 Excel을 통해 큐브에 액세스하므로 사용자가 모든 차원에서 쿼리 할 수 ​​있으므로 일부 MDX 내에서 위의 인텔리전스를 사용하는 것이 반드시 가능하지는 않습니다 (일부는 역할에 따라 제한 될 수 있지만 일부는 역할이 제한 될 수 있음)
- 사용자 당 두 개의 서로 다른 userIds (서로 다른 AD 그룹에 있음)와 결합 된 두 개의 큐브를 갖는 아이디어. 사용자는보고 싶은 데이터 (따라서 쿼리하는 큐브)에 따라 Excel에서 데이터를 추출합니다. 사용자 결과가 모두 두 개의 개별 결과가 아닌 하나의 결과 집합에 모두 포함되기를 원하기 때문에 이것은 어수선한 것입니다.

경험이 있거나 위에서 해결책을 얻은 사람이 있습니까? 다른 대안이 있습니까?

답변

1

평가할 데이터베이스 역할의 쉼표로 구분 된 목록을 포함하는 SSAS 연결 문자열에 Roles 속성을 추가 할 수 있습니다. 그 목록에 적용된 역할 만 서버에 의해 적용됩니다.

Data Source=localhost;Initial Catalog=MySSASDb;Roles=RoleA,RoleB 
+0

저는이 접근법을 좋아합니다. 이것은 꽤 깨끗합니다.하지만 보안 관점에서 볼 때 연결 문자열과 함께 전달되는 역할에 관계없이 적절한 데이터를 노출 할 수 있어야합니다. –

1

당신이 2 차원의 OR 조건이 필요한 경우, 2 단계는 2 초기 ​​차원의 동일한 수준 인과 또 다른 차원을 추가 할 수 있습니다

는 예를 들어, 당신의 역할을 제한하려면 [ [CountryThenCurrency] 차원을 추가하고 [CountryThenCurrency]. [France]. [*] 및 [CountryThenCurrency]. [*] 경로를 허용 할 수 있습니다. [USD]

즉, 단일 차원에서 모든 OR 조건을 충족하려면 차원을 추가하십시오.

+0

이 접근 방식이 효과적 일 수 있습니다. –

0

저는이 문제에 대한 해결책을 찾고 있었고 Chris Webb의 훌륭한 기사를 발견했습니다.

http://cwebbbi.wordpress.com/2011/12/22/replacing-cell-security-with-dimension-security/

아이디어는 DIM_Security라는 이름의 정크 차원을 만들고 거기에 두 차원의 모든 고유 한 조합을 넣어하는 것입니다. 이제 MDX 식을 통해 dimension1 = 'allowedvalue'또는 dimension2 = 'allowedvalue'를 갖는 모든 멤버의 UNION을 얻습니다. 따라서 OR 액세스 권한이 있습니다.

웹에서는 동적 보안을 사용하여이를 수행하는 방법을 설명합니다.

MDX를 원래 게시물로 복사하지 않으면 여러 장이 길고 많은 스크린 샷이 있고 웹 전체에 여러 번 링크되어 있습니다.