다음을 통해 공유


역할

적용 대상: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

테이블 형식 모델의 역할은 모델에 대한 멤버 권한을 정의합니다. 역할의 멤버는 역할 권한에 정의된 대로 모델에 대한 작업을 수행할 수 있습니다. 읽기 권한으로 정의된 역할은 행 수준 필터를 사용하여 행 수준에서 더 많은 보안을 제공할 수도 있습니다.

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

중요하다

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

중요하다

사용자가 보고 클라이언트 애플리케이션을 사용하여 배포된 모델에 연결하려면 읽기 권한이 있는 역할을 하나 이상 만들어야 합니다. 보고 클라이언트 앱의 사용자를 멤버로 역할에 추가합니다.

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

역할 이해

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

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

  • 데이터베이스 역할은 모델 작성자 및 관리자가 사용자에 대한 모델 데이터베이스 및 데이터에 대한 액세스를 제어하기 위해 정의합니다.

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

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

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

권한을

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

각 역할에는 단일 정의된 데이터베이스 권한이 있습니다(결합된 읽기 및 프로세스 권한 제외). 기본적으로 새 역할에는 없음 권한이 있습니다. 멤버가 None 권한이 있는 역할에 추가되면 다른 권한이 부여되지 않은 경우 데이터베이스를 수정하거나, 프로세스 작업을 실행하거나, 데이터를 쿼리하거나, 데이터베이스를 볼 수 없습니다.

그룹 또는 사용자는 여러 역할의 멤버일 수 있으며 각 역할에는 다른 권한이 있습니다. 사용자가 여러 역할의 멤버인 경우 각 역할에 대해 정의된 권한은 누적됩니다. 예를 들어 사용자가 읽기 권한이 있는 역할의 멤버이고 None 권한이 있는 역할의 멤버인 경우 해당 사용자에게 읽기 권한이 있습니다.

각 역할에는 다음 권한이 정의됩니다.

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

메모

읽기 및 읽기 및 프로세스 권한이 있는 멤버는 행 필터를 기반으로 데이터를 쿼리할 수 있지만 SSMS에서 모델 데이터베이스를 볼 수는 없습니다. 멤버는 모델 데이터베이스 스키마를 변경할 수 없으며 모델을 처리할 수 없습니다. 그러나 SQL Server Analysis Services 2019 및 이전 버전에서 멤버는 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]="Bikes"
트랜잭션을 =Transactions[Year]=2020

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

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

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

동적 보안

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

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

기능 묘사
DAX(USERNAME 함수) 현재 로그온한 사용자의 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와 관련된 모든 테이블을 제한하는 데 사용됩니다. LOOKUPVALUE 함수에서 반환된 DepartmentId 값에도 DepartmentId가 있는 행만 반환됩니다.

dimEmployees

LastName FirstName LoginId DepartmentName DepartmentId
갈색 케빈 Adventure-works\kevin0 마케팅 7
브래들리 다윗 Adventure-works\david0 마케팅 7
도브니 (동음이의) JoLynn Adventure-works\JoLynn0 생산 4
Baretto DeMattos 폴라 Adventure-works\Paula0 인사 2

dimDepartment

DepartmentId DepartmentName
1 기업
2 집행 일반 및 관리
3 인벤토리 관리
4 제조
5 품질 보증
6 연구 개발
7 영업 및 마케팅

역할 테스트

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

스크립팅 역할

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

참고 항목

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