역할

적용 대상: SQL Server Analysis Services Azure Analysis Services 패브릭/Power BI Premium

테이블 형식 모델의 역할은 모델에 대한 멤버 권한을 정의합니다. 역할의 멤버는 모델에 대해 역할 권한에 정의된 동작을 수행할 수 있습니다. 또한 읽기 권한을 갖도록 정의된 역할은 행 수준 필터를 사용하여 행 수준에서 추가적인 보안을 제공할 수 있습니다.

Azure Analysis Services 및 Power BI 데이터 세트의 경우 사용자는 Microsoft Entra ID에 있어야 하며, 지정된 사용자 이름과 그룹은 조직 전자 메일 주소 또는 UPN에 의해 지정되어야 합니다. SQL Server Analysis Services 역할에는 Windows 사용자 이름 또는 Windows 그룹별 사용자 멤버 및 권한(읽기, 프로세스, 관리자)이 포함됩니다. Azure Analysis Services 및 Power BI 의미 체계 모델의 경우 사용자는 Azure Active Directory에 있어야 하며 사용자 이름 및 지정된 그룹은 조직 전자 메일 주소 또는 UPN으로 지정되어야 합니다. SQL Server Analysis Services 역할에는 Windows 사용자 이름 또는 Windows 그룹별 사용자 멤버 및 권한(읽기, 프로세스, 관리자)이 포함됩니다.

중요

Visual Studio를 사용하여 역할을 만들고 Azure Analysis Services 또는 Power BI에 배포할 테이블 형식 모델 프로젝트에 조직 사용자를 추가하는 경우 통합 작업 영역을 사용합니다.

중요

사용자가 보고 클라이언트 애플리케이션을 사용하여 배포된 모델에 연결하려면 해당 사용자가 구성원인 읽기 권한으로 하나 이상의 역할을 만들어야 합니다.

이 문서의 정보는 SSDT의 역할 관리자 대화 상자를 사용하여 역할을 정의하는 테이블 형식 모델 작성자를 위한 것입니다. 모델을 작성하는 중에 정의된 역할은 모델 작업 영역 데이터베이스에 적용됩니다. 모델 데이터베이스가 배포된 후 모델 데이터베이스 관리자는 SSMS를 사용하여 역할 멤버를 관리(추가, 편집, 삭제)할 수 있습니다.

역할 이해

역할은 Analysis Services에서 모델 데이터 액세스를 관리하는 데 사용됩니다. 역할에는 다음과 같은 두 가지 유형이 있습니다.

  • Analysis Services 서버 instance 대한 관리자 액세스를 제공하는 고정 역할인 서버 역할입니다. 서버 역할은 Power BI에 적용되지 않습니다. 대신 Power BI는 작업 영역 역할을 사용합니다.

  • 데이터베이스 역할 - 모델 작성자와 관리자가 관리자가 아닌 사용자의 model 데이터베이스 및 데이터 액세스를 제어하기 위해 정의한 역할

테이블 형식 모델에 대해 정의된 역할이 데이터베이스 역할입니다. 즉, 역할에는 해당 멤버가 모델 데이터베이스에서 수행할 수 있는 작업을 정의하는 특정 권한이 있는 사용자 또는 그룹으로 구성된 멤버가 포함됩니다. 역할은 데이터베이스에서 별도의 개체로 만들어지고 해당 역할이 만들어지는 데이터베이스에만 적용됩니다. 사용자 및 그룹은 기본적으로 작업 영역 데이터베이스 서버에 대한 관리자 권한이 있는 모델 작성자가 역할에 포함됩니다. 관리자가 배포한 모델의 경우

테이블 형식 모델의 역할은 행 필터(행 수준 보안이라고도 함)를 사용하여 추가로 정의할 수 있습니다. 행 필터는 DAX 식을 사용하여 사용자가 쿼리할 수 있는 테이블의 행과 다양한 방향의 관련 행을 정의합니다. DAX 식을 사용하는 행 필터는 읽기 권한과 읽기 및 처리 권한에 대해서만 정의할 수 있습니다. Power BI에서 모델 역할은 Power BI Desktop 정의되며 행 수준 보안에만 적용됩니다. 자세한 내용은 이 문서의 뒷부 분에 있는 행 필터를 참조하세요.

기본적으로 새 테이블 형식 모델 프로젝트를 만들 때 프로젝트에는 역할이 없습니다. 역할은 SSDT의 [역할 관리자] 대화 상자를 사용하여 정의할 수 있습니다. 모델 제작 중에 역할을 정의한 경우 해당 역할은 모델 작업 영역 데이터베이스에 적용됩니다. 모델을 배포하면 배포된 모델에 동일한 역할이 적용됩니다. 모델을 배포한 후 서버 역할의 멤버([Analysis Services 관리자) 및 데이터베이스 관리자는 SSMS를 사용하여 모델과 연결된 역할 및 각 역할과 연결된 멤버를 관리할 수 있습니다.

사용 권한

이 섹션에 설명된 역할 권한은 Azure Analysis Services 및 SQL Server Analysis Services만 적용됩니다. Power BI에서 의미 체계 모델에 대한 사용 권한이 정의됩니다. 자세한 내용은 의미 체계 모델 액세스 관리를 참조하세요.

결합된 읽기 및 처리 권한을 제외하고 역할별로 하나의 데이터베이스 권한이 정의되어 있습니다. 기본적으로 새 역할은 없음 권한을 갖게 됩니다. 즉, 없음 권한을 가진 역할에 추가된 멤버는 다른 권한이 부여될 때까지 데이터베이스를 수정하거나, 프로세스 작업을 실행하거나, 데이터를 쿼리하거나, 데이터베이스를 볼 수 없습니다.

그룹 또는 사용자는 다양한 역할의 구성원일 수 있으며 각 역할에는 다른 권한이 있습니다. 사용자가 여러 역할의 멤버인 경우 각 역할에 대해 정의된 사용 권한은 누적됩니다. 예를 들어 사용자가 읽기 권한을 가진 역할의 멤버인 동시에 없음 권한을 가진 역할의 멤버일 경우 해당 사용자는 읽기 권한을 가집니다.

각 역할은 다음 중 하나의 권한을 가질 수 있습니다.

사용 권한 설명 DAX를 사용하는 행 필터
없음 멤버는 model 데이터베이스 스키마를 수정할 수 없으며 데이터를 쿼리할 수 없습니다. 행 필터는 적용되지 않습니다. 데이터가 이 역할의 사용자에게 표시되지 않습니다.
읽기 멤버는 행 수준 필터를 기반으로 데이터를 쿼리할 수 있지만 SSMS의 model 데이터베이스를 볼 수 없으며, model 데이터베이스 스키마를 변경할 수 없고, 사용자가 모델을 처리할 수 없습니다. 행 필터를 적용할 수 있습니다. 행 필터 DAX 수식에 지정된 데이터만 사용자에게 표시됩니다.
읽기 및 처리 멤버는 행 수준 필터를 기반으로 데이터를 쿼리할 수 있고 처리 명령을 포함하는 스크립트 또는 패키지를 실행하여 처리 작업을 실행할 수 있지만 데이터베이스를 변경할 수 없습니다. SSMS에서 모델 데이터베이스를 볼 수 없습니다. 행 필터를 적용할 수 있습니다. 행 필터 DAX 수식에 지정된 데이터만 쿼리할 수 있습니다.
프로세스 멤버는 처리 명령을 포함하는 스크립트 또는 패키지를 실행하여 처리 작업을 실행할 수 있습니다. model 데이터베이스 스키마를 수정할 수 없습니다. 데이터를 쿼리할 수 없습니다. SSMS에서 모델 데이터베이스를 쿼리할 수 없습니다. 행 필터는 적용되지 않습니다. 이 역할에서는 데이터를 쿼리할 수 없습니다.
관리자 멤버는 모델 스키마를 수정할 수 있으며 모델 디자이너, 보고 클라이언트 및 SSMS의 모든 데이터를 쿼리할 수 있습니다. 행 필터는 적용되지 않습니다. 이 역할에서는 모든 데이터를 쿼리할 수 있습니다.

참고

읽기 및 읽기 및 프로세스 권한이 있는 멤버는 행 필터를 기반으로 데이터를 쿼리할 수 있지만 SSMS에서 모델 데이터베이스를 볼 수 없습니다. 멤버는 모델 데이터베이스 스키마를 변경할 수 없으며 모델을 처리할 수 없습니다. 그러나 2019년 이전 SQL Server Analysis Services 멤버는 DMV를 사용하여 측정값 정의를 결정할 수 있습니다. SQL Server Analysis Services 2022 이상에서는 보안 향상을 위해 DMV에 대한 액세스를 차단합니다.

행 필터

일반적으로 Power BI에서 행 수준 보안이라고 하는 행 필터는 특정 역할의 멤버가 쿼리할 수 있는 테이블의 행을 정의합니다. 행 필터는 DAX 수식을 사용하여 모델의 각 테이블에 대해 정의됩니다.

행 필터는 읽기와 읽기 및 처리 권한이 있는 역할에 대해서만 정의할 수 있습니다. 기본적으로 특정 테이블에 대해 행 필터를 정의하지 않을 경우 읽기 권한 또는 읽기 및 처리 권한을 가진 역할의 멤버는 다른 테이블에서 교차 필터링이 적용되지 않는 한 테이블의 모든 행을 쿼리할 수 있습니다.

특정 테이블에 대해 행 필터를 정의할 경우 TRUE/FALSE 값으로 평가되어야 하는 DAX 수식을 통해 해당 역할의 멤버가 쿼리할 수 있는 행을 정의합니다. DAX 수식에 포함되지 않은 행은 쿼리할 수 없습니다. 예를 들어 Sales 역할의 멤버에 대해 다음 행 필터 식이 있는 Customers 테이블 = Customers [Country] = "USA", Sales 역할의 멤버는 미국에서만 고객을 볼 수 있습니다.

행 필터는 지정된 행과 관련 행에 적용됩니다. 테이블에 여러 관계가 있으면 필터는 활성 관계에 대한 보안을 적용합니다. 행 필터는 관련 테이블에 대해 정의된 다른 행 필터와 교차됩니다. 예를 들면 다음과 같습니다.

테이블 DAX 식
지역 =Region[Country]="USA"
ProductCategory =ProductCategory[Name]="Bicycles"
트랜잭션 =Transactions[Year]=2020

Transactions 테이블에 대한 이러한 권한의 순 효과는 멤버가 고객이 미국에 있는 데이터 행을 쿼리할 수 있고 제품 범주가 자전거이고 연도가 2020년이라는 것입니다. 사용자는 이러한 권한을 부여하는 다른 역할의 구성원이 아닌 한 미국 외부의 트랜잭션이나 자전거가 아닌 거래 또는 2020년에 발생하지 않은 거래를 쿼리할 수 없습니다.

=FALSE() 필터를 사용하여 전체 테이블의 모든 행에 대한 액세스를 거부할 수 있습니다.

Power BI의 모델 역할에 대한 자세한 내용은 Power BI 의 행 수준 보안을 참조하세요.

동적 보안

동적 보안은 현재 로그온한 사용자의 사용자 이름 또는 연결 문자열 반환된 CustomData 속성을 기반으로 행 수준 보안을 정의하는 방법을 제공합니다. 동적 보안을 구현하려면 사용자에 대한 로그인(Windows 사용자 이름) 값이 있는 테이블과 특정 사용 권한을 정의하는 데 사용할 수 있는 필드를 모델에 포함해야 합니다(예: 로그인 ID(domain\username)가 있는 dimEmployees 테이블과 각 직원에 대한 부서 값).

동적 보안을 구현하려면 다음 기능을 DAX 수식의 일부로 사용하여 현재 로그온한 사용자의 사용자 이름 또는 연결 문자열의 CustomData 속성을 반환할 수 있습니다.

함수 설명
USERNAME 함수(DAX) 현재 로그온한 사용자의 domain\ username을 반환합니다.
CUSTOMDATA 함수(DAX) 연결 문자열의 CustomData 속성을 반환합니다.

LOOKUPVALUE 함수를 사용하여 Windows 사용자 이름이 USERNAME 함수에서 반환된 사용자 이름 또는 CustomData 함수에서 반환된 문자열과 동일한 열의 값을 반환할 수 있습니다. 그런 다음 LOOKUPVALUE에서 반환된 값이 동일한 테이블 또는 관련된 테이블의 값과 일치하는 경우로 쿼리를 제한할 수 있습니다.

예를 들어 다음 수식을 사용합니다.

='dimDepartment'[DepartmentId]=LOOKUPVALUE('dimEmployees'[DepartmentId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartment'[DepartmentId])

LOOKUPVALUE 함수는 dimEmployees[LoginId]가 현재 로그온한 사용자의 LoginID와 동일하고 USERNAME에서 반환하며 dimEmployees[DepartmentId]의 값이 dimDepartment[DepartmentId]의 값과 동일한 dimEmployees[DepartmentId] 열의 값을 반환합니다. LOOKUPVALUE에서 반환된 DepartmentId의 값은 dimDepartment 테이블 및 DepartmentId와 관련된 모든 테이블에서 쿼리된 행을 제한하는 데 사용됩니다. DepartmentId가 LOOKUPVALUE 함수에서 반환된 DepartmentId의 값에도 있는 행만 반환됩니다.

dimEmployees

LastName FirstName LoginId DepartmentName DepartmentId
Brown Kevin Adventure-works\kevin0 Marketing 7
Bradley David Adventure-works\david0 Marketing 7
Dobney JoLynn Adventure-works\JoLynn0 프로덕션 4
Baretto DeMattos Paula Adventure-works\Paula0 Human Resources 2

dimDepartment

DepartmentId DepartmentName
1 회사
2 Executive General and Administration
3 Inventory Management
4 제조업
5 품질 보증
6 연구 및 개발
7 영업 및 마케팅

역할 테스트

Visual Studio에서 모델 프로젝트를 작성할 때 Excel에서 분석 기능을 사용하여 정의한 역할의 효율성을 테스트할 수 있습니다. 모델 디자이너의 모델 메뉴에서 Excel에서 분석을 클릭하면 Excel이 열리기 전에 자격 증명 및 큐브 뷰 선택 대화 상자가 나타납니다. 이 대화 상자에서 현재 사용자 이름, 다른 사용자 이름, 역할, 데이터 원본으로 작업 영역 모델에 연결하는 데 사용할 큐브 뷰를 지정할 수 있습니다. 자세한 내용은 Excel에서 분석가 설치되어 있는 컴퓨터에 Excel이 설치되어 있어야 합니다.

스크립팅 역할

배포된 모델 및 의미 체계 모델에 대한 역할은 TMSL(테이블 형식 모델 스크립팅 언어)을 사용하여 Roles 개체를 만들거나 수정하여 스크립팅할 수 있습니다. TMSL 스크립트는 SSMS에서 실행하거나 Invoke-ASCmd PowerShell cmdlet을 사용하여 실행할 수 있습니다.

추가 정보

역할 만들기 및 관리
큐브 뷰
Excel에서 분석
USERNAME 함수(DAX)
LOOKUPVALUE 함수(DAX)
CUSTOMDATA 함수(DAX)