역할Roles

테이블 형식 모델에서 역할은 모델에 대한 멤버 권한을 정의합니다.Roles, in tabular models, define member permissions for a model. 역할의 멤버는 모델에 대해 역할 권한에 정의된 동작을 수행할 수 있습니다.Members of the role can perform actions on the model as defined by the role permission. 또한 읽기 권한을 갖도록 정의된 역할은 행 수준 필터를 사용하여 행 수준에서 추가적인 보안을 제공할 수 있습니다.Roles defined with read permissions can also provide additional security at the row-level by using row-level filters.

SQL Server Analysis Services에 대 한 역할에 Windows 사용자 이름 또는 Windows 그룹 및 사용 권한 (읽기, 프로세스, 관리자)을 통해 사용자 멤버가 포함 됩니다.For SQL Server Analysis Services, roles contain user members by Windows username or by Windows group, and permissions (read, process, administrator). Azure Analysis Services에 대 한 사용자가 Azure Active Directory와 사용자 이름 이어야 하며 조직 메일 주소 또는 UPN으로 지정 된 그룹 이어야 합니다.For Azure Analysis Services, users must be in your Azure Active Directory and usernames and groups specified must be by organizational email address or UPN.

중요

사용자가 보고 클라이언트 응용 프로그램을 사용 하 여 배포 된 모델에 연결을 만들어야 합니다와 역할을 하나 이상 최소한 읽기 권한을 해당 사용자가 멤버입니다.For users to connect to a deployed model by using a reporting client application, you must create at least one role with at least Read permission to which those users are members.

이 항목의 정보는 SSDT의 역할 관리자 대화 상자를 사용 하 여 역할을 정의 하는 테이블 형식 모델 작성자를 위한 것입니다.Information in this topic is meant for tabular model authors who define roles by using the Role Manager dialog box in SSDT. 모델을 작성하는 중에 정의된 역할은 모델 작업 영역 데이터베이스에 적용됩니다.Roles defined during model authoring apply to the model workspace database. Model 데이터베이스를 배포한 후에 모델 데이터베이스 관리자가 관리할 수 (추가, 편집, 삭제) SSMS를 사용 하 여 역할 멤버입니다.After a model database has been deployed, model database administrators can manage (add, edit, delete) role members by using SSMS. 배포 데이터베이스에서 역할의 멤버를 관리 하는 방법에 대 한 자세한 내용은 테이블 형식 모델 역할합니다.To learn about managing members of roles in a deployed database, see Tabular Model Roles.

Understanding roles Understanding roles

역할은 모델 데이터 액세스를 관리 하려면 Analysis Services에서 사용 됩니다.Roles are used in Analysis Services to manage model data access. 역할에는 다음과 같은 두 가지 유형이 있습니다.There are two types of roles:

  • 서버 역할-관리자 액세스는 Analysis Services 서버 인스턴스를 제공 하는 고정된 역할입니다.The server role, a fixed role that provides administrator access to an Analysis Services server instance.

  • 데이터베이스 역할 - 모델 작성자와 관리자가 관리자가 아닌 사용자의 model 데이터베이스 및 데이터 액세스를 제어하기 위해 정의한 역할Database roles, roles defined by model authors and administrators to control access to a model database and data for non-administrator users.

    테이블 형식 모델에 대해 정의된 역할이 데이터베이스 역할입니다.Roles defined for a tabular model are database roles. 즉, 사용자가 구성 된 멤버를 포함 하는 역할 또는 권한이 그룹에 특정 동작을 정의 하는 해당 멤버는 모델 데이터베이스에 대해 수행할 수 있습니다.That is, the roles contain members consisting of users or groups that have specific permissions that define the action those members can take on the model database. 데이터베이스 역할은 데이터베이스에서 별개의 개체로 생성되고, 해당 역할이 생성된 데이터베이스에만 적용됩니다.A database role is created as a separate object in the database, and applies only to the database in which that role is created. 사용자 및 그룹 역할에는 기본적으로 작업 영역 데이터베이스 서버에서 관리자 권한을 갖는 모델 작성자가 포함 됩니다. 관리자가 배포 된 모델입니다.Users and groups are included in the role by the model author, which, by default, has Administrator permissions on the workspace database server; for a deployed model, by an administrator.

    행 필터를 사용하여 테이블 형식 모델의 역할을 세부적으로 정의할 수 있습니다.Roles in tabular models can be further defined with row filters. 행 필터는 DAX 식을 사용하여 사용자가 쿼리할 수 있는 테이블의 행과 다양한 방향의 관련 행을 정의합니다.Row filters use DAX expressions to define the rows in a table, and any related rows in the many direction, that a user can query. DAX 식을 사용하는 행 필터는 읽기 권한과 읽기 및 처리 권한에 대해서만 정의할 수 있습니다.Row filters using DAX expressions can only be defined for the Read and Read and Process permissions. 자세한 내용은 참고 행 필터 이 항목의 뒷부분에 나오는 합니다.To learn more, see Row Filters later in this topic.

    기본적으로 새 테이블 형식 모델 프로젝트를 만들 경우 모델 프로젝트에는 아무 역할도 없습니다.By default, when you create a new tabular model project, the model project does not have any roles. SSDT의 역할 관리자 대화 상자를 사용 하 여 역할을 정의할 수 있습니다.Roles can be defined by using the Role Manager dialog box in SSDT. 모델 제작 중에 역할을 정의한 경우 해당 역할은 모델 작업 영역 데이터베이스에 적용됩니다.When roles are defined during model authoring, they are applied to the model workspace database. 모델을 배포하면 동일한 역할이 배포된 모델에 적용됩니다.When the model is deployed, the same roles are applied to the deployed model. 모델을 배포한 후 모델에 연결 된 역할 및 각 역할과 연결 된 SSMS를 사용 하 여 멤버 ([Analysis Services 관리자) 서버 역할 및 데이터베이스 관리자의 구성원이 관리할 수 있습니다.After a model has been deployed, members of the server role ([Analysis Services Administrator) and database administrators can manage the roles associated with the model and the members associated with each role by using SSMS.

Permissions Permissions

결합된 읽기 및 처리 권한을 제외하고 역할별로 하나의 데이터베이스 권한이 정의되어 있습니다.Each role has a single defined database permission (except for the combined Read and Process permission). 기본적으로 새 역할은 없음 권한을 갖게 됩니다.By default, a new role will have the None permission. 즉, 없음 권한을 가진 역할에 추가된 멤버는 다른 권한이 부여될 때까지 데이터베이스를 수정하거나, 프로세스 작업을 실행하거나, 데이터를 쿼리하거나, 데이터베이스를 볼 수 없습니다.That is, once members are added to the role with the None permission, they cannot modify the database, run a process operation, query data, or see the database unless a different permission is granted.

그룹 또는 사용자 역할의 여러 다른 권한 가진 각 역할의 구성원이 수 있습니다.A group or user can be a member of any number of roles, each role with a different permission. 사용자가 여러 역할의 멤버인 경우 각 역할에 대해 정의된 사용 권한은 누적됩니다.When a user is a member of multiple roles, the permissions defined for each role are cumulative. 예를 들어 사용자가 읽기 권한을 가진 역할의 멤버인 동시에 없음 권한을 가진 역할의 멤버일 경우 해당 사용자는 읽기 권한을 가집니다.For example, if a user is a member of a role with the Read permission, and also a member of a role with None permission, that user will have Read permissions.

각 역할은 다음 중 하나의 권한을 가질 수 있습니다.Each role can have one the following permissions defined:

PermissionsPermissions DescriptionDescription DAX를 사용하는 행 필터Row filters using DAX
InclusionThresholdSettingNone 멤버는 model 데이터베이스 스키마를 수정할 수 없으며 데이터를 쿼리할 수 없습니다.Members cannot make any modifications to the model database schema and cannot query data. 행 필터는 적용되지 않습니다.Row filters do not apply. 데이터가 이 역할의 사용자에게 표시되지 않습니다.No data is visible to users in this role
읽기Read 멤버는 행 수준 필터를 기반으로 데이터를 쿼리할 수 있지만 SSMS의 model 데이터베이스를 볼 수 없으며, model 데이터베이스 스키마를 변경할 수 없고, 사용자가 모델을 처리할 수 없습니다.Members are allowed to query data (based on row filters) but cannot see the model database in SSMS, cannot make any changes to the model database schema, and the user cannot process the model. 행 필터를 적용할 수 있습니다.Row filters can be applied. 행 필터 DAX 수식에 지정된 데이터만 사용자에게 표시됩니다.Only data specified in the row filter DAX formula is visible to users.
읽기 및 처리Read and Process 멤버는 행 수준 필터를 기반으로 데이터를 쿼리할 수 있고 처리 명령을 포함하는 스크립트 또는 패키지를 실행하여 처리 작업을 실행할 수 있지만 데이터베이스를 변경할 수 없습니다.Members are allowed to query data (based on row-level filters) and run process operations by running a script or package that contains a process command, but cannot make any changes to the database. SSMS에서 model 데이터베이스를 볼 수 없습니다.Cannot view the model database in SSMS. 행 필터를 적용할 수 있습니다.Row filters can be applied. 행 필터 DAX 수식에 지정된 데이터만 쿼리할 수 있습니다.Only data specified in the row filter DAX formula can be queried.
처리Process 멤버는 처리 명령을 포함하는 스크립트 또는 패키지를 실행하여 처리 작업을 실행할 수 있습니다.Members can run process operations by running a script or package that contains a process command. model 데이터베이스 스키마를 수정할 수 없습니다.Cannot modify the model database schema. 데이터를 쿼리할 수 없습니다.Cannot query data. SSMS에서 model 데이터베이스를 쿼리할 수 없습니다.Cannot query the model database in SSMS. 행 필터는 적용되지 않습니다.Row filters do not apply. 이 역할에서는 데이터를 쿼리할 수 없습니다.No data can be queried in this role
관리자Administrator 멤버는 모델 스키마를 수정할 수 있으며 모델 디자이너, 보고 클라이언트 및 SSMS에서 모든 데이터를 쿼리할 수 있습니다.Members can make modifications to the model schema and can query all data in the model designer, reporting client, and SSMS. 행 필터는 적용되지 않습니다.Row filters do not apply. 이 역할에서는 모든 데이터를 쿼리할 수 있습니다.All data can be queried in this role.

Row filters Row filters

행 필터는 특정 역할의 멤버가 쿼리할 수 있는 테이블의 행을 정의합니다.Row filters define which rows in a table can be queried by members of a particular role. 행 필터는 DAX 수식을 사용하여 모델의 각 테이블에 대해 정의됩니다.Row filters are defined for each table in a model by using DAX formulas.

읽기 권한과 읽기 및 처리 권한을 가진 역할에 대해서만 행 필터를 정의할 수 있습니다.Row filters can be defined only for roles with Read and Read and Process permissions. 기본적으로 특정 테이블에 대해 행 필터를 정의하지 않을 경우 읽기 권한 또는 읽기 및 처리 권한을 가진 역할의 멤버는 다른 테이블에서 교차 필터링이 적용되지 않는 한 테이블의 모든 행을 쿼리할 수 있습니다.By default, if a row filter is not defined for a particular table, members of a role that has Read or Read and Process permission can query all rows in the table unless cross-filtering applies from another table.

특정 테이블에 대해 행 필터를 정의할 경우 TRUE/FALSE 값으로 평가되어야 하는 DAX 수식을 통해 해당 역할의 멤버가 쿼리할 수 있는 행을 정의합니다.Once a row filter is defined for a particular table, a DAX formula, which must evaluate to a TRUE/FALSE value, defines the rows that can be queried by members of that particular role. DAX 수식에 포함되지 않은 행은 쿼리할 수 없습니다.Rows not included in the DAX formula will cannot be queried. 예를 들어 Sales 역할 멤버에 대해서 행 필터 식, =Customers [Country] = “USA”를 가진 Customers 테이블에서 Sales 역할 멤버는 USA의 고객만 볼 수 있습니다.For example, for members of the Sales role, the Customers table with the following row filters expression, =Customers [Country] = “USA”, members of the Sales role, will only be able to see customers in the USA.

행 필터는 지정된 행과 관련 행에 적용됩니다.Row filters apply to the specified rows as well as related rows. 테이블에 여러 관계가 있는 경우 필터는 활성 관계에 대한 보안을 적용합니다.When a table has multiple relationships, filters apply security for the relationship that is active. 행 필터는 관련 테이블에 대해 정의된 다른 행 필터와 교차됩니다. 예를 들면 다음과 같습니다.Row filters will be intersected with other row filers defined for related tables, for example:

테이블Table DAX 식DAX expression
RegionRegion =Region[Country]=”USA”=Region[Country]=”USA”
ProductCategoryProductCategory =ProductCategory[Name]=”Bicycles”=ProductCategory[Name]=”Bicycles”
트랜잭션Transactions =Transactions[Year]=2008=Transactions[Year]=2008

Transactions 테이블에 이러한 사용 권한이 적용되면 멤버는 고객이 USA에 있고, 제품 범주가 Bicycles이며, 연도가 2008년에 해당하는 데이터 행을 쿼리할 수 있습니다.The net effect of these permissions on the Transactions table is that members will be allowed to query rows of data where the customer is in the USA, and the product category is bicycles, and the year is 2008. 사용자는 해당 사용 권한이 부여된 다른 역할의 멤버가 아닌 한 미국 이외의 국가에서 발생한 거래, Bicycles 범주가 아닌 거래 또는 2008년에 발생하지 않은 거래를 쿼리할 수 없습니다.Users would not be able to query any transactions outside of the USA, or any transactions that are not bicycles, or any transactions not in 2008 unless they are a member of another role that grants these permissions.

=FALSE()필터를 사용하여 전체 테이블의 모든 행에 대한 액세스를 거부할 수 있습니다.You can use the filter, =FALSE(), to deny access to all rows for an entire table.

동적 보안Dynamic security

동적 보안은 현재 로그온한 사용자의 사용자 이름 또는 연결 문자열에서 반환된 CustomData 속성을 기반으로 행 수준 보안을 정의하는 방법을 제공합니다.Dynamic security provides a way to define row level security based on the user name of the user currently logged on or the CustomData property returned from a connection string. 동적 보안을 구현하려면 사용자에 대한 로그인(Windows 사용자 이름) 값이 있는 테이블과 특정 사용 권한을 정의하는 데 사용할 수 있는 필드를 모델에 포함해야 합니다(예: 로그인 ID(domain\username)가 있는 dimEmployees 테이블과 각 직원에 대한 부서 값).In order to implement dynamic security, you must include in your model a table with login (Windows user name) values for users as well as a field that can be used to define a particular permission; for example, a dimEmployees table with a login ID (domain\username) as well as a department value for each employee.

동적 보안을 구현하려면 다음 기능을 DAX 수식의 일부로 사용하여 현재 로그온한 사용자의 사용자 이름 또는 연결 문자열의 CustomData 속성을 반환할 수 있습니다.To implement dynamic security, you can use the following functions as part of a DAX formula to return the user name of the user currently logged on, or the CustomData property in a connection string:

함수Function DescriptionDescription
USERNAME 함수(DAX)USERNAME Function (DAX) 현재 로그온한 사용자의 domain\ username을 반환합니다.Returns the domain\ username of the user currently logged on.
CUSTOMDATA 함수(DAX)CUSTOMDATA Function (DAX) 연결 문자열의 CustomData 속성을 반환합니다.Returns the CustomData property in a connection string.

LOOKUPVALUE 함수를 사용하여 Windows 사용자 이름이 USERNAME 함수에서 반환된 사용자 이름 또는 CustomData 함수에서 반환된 문자열과 동일한 열의 값을 반환할 수 있습니다.You can use the LOOKUPVALUE function to return values for a column in which the Windows user name is the same as the user name returned by the USERNAME function or a string returned by the CustomData function. 그런 다음 LOOKUPVALUE에서 반환된 값이 동일한 테이블 또는 관련된 테이블의 값과 일치하는 경우로 쿼리를 제한할 수 있습니다.Queries can then be restricted where the values returned by LOOKUPVALUE match values in the same or related table.

예를 들어 다음 수식을 사용합니다.For example, using this formula:

='dimDepartmentGroup'[DepartmentGroupId]=LOOKUPVALUE('dimEmployees'[DepartmentGroupId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartmentGroup'[DepartmentGroupId])

LOOKUPVALUE 함수는 dimEmployees[LoginId]가 USERNAME에서 반환된 현재 로그온한 사용자의 LoginID와 동일하며 dimEmployees[DepartmentId]의 값이 dimDepartmentGroup[DepartmentId]의 값과 동일한 dimEmployees[DepartmentId] 열의 값을 반환합니다.The LOOKUPVALUE function returns values for the dimEmployees[DepartmentId] column where the dimEmployees[LoginId] is the same as the LoginID of the user currently logged on, returned by USERNAME, and values for dimEmployees[DepartmentId] are the same as values for dimDepartmentGroup[DepartmentId]. LOOKUPVALUE에서 반환된 DepartmentId의 값은 dimDepartment 테이블 및 DepartmentId와 관련된 모든 테이블에서 쿼리된 행을 제한하는 데 사용됩니다.The values in DepartmentId returned by LOOKUPVALUE are then used to restrict the rows queried in the dimDepartment table, and any tables related by DepartmentId. DepartmentId가 LOOKUPVALUE 함수에서 반환된 DepartmentId의 값에도 있는 행만 반환됩니다.Only rows where DepartmentId are also in the values for the DepartmentId returned by LOOKUPVALUE function are returned.

dimEmployeesdimEmployees

LastNameLastName FirstNameFirstName LoginIDLoginID DepartmentNameDepartmentName DepartmentIdDepartmentId
BrownBrown KevinKevin Adventure-works\kevin0Adventure-works\kevin0 마케팅Marketing 77
BradleyBradley DavidDavid Adventure-works\david0Adventure-works\david0 마케팅Marketing 77
DobneyDobney JoLynnJoLynn Adventure-works\JoLynn0Adventure-works\JoLynn0 ProductionProduction 44
Baretto DeMattosBaretto DeMattos PaulaPaula Adventure-works\Paula0Adventure-works\Paula0 Human ResourcesHuman Resources 22

dimDepartmentdimDepartment

DepartmentIdDepartmentId DepartmentNameDepartmentName
1.1 CorporateCorporate
22 Executive General and AdministrationExecutive General and Administration
33 Inventory ManagementInventory Management
44 ManufacturingManufacturing
55 Quality AssuranceQuality Assurance
66 Research and DevelopmentResearch and Development
77 Sales and MarketingSales and Marketing

Testing roles Testing roles

모델 프로젝트를 제작할 때 Excel의 분석 기능을 사용하여 정의한 역할의 효율성을 테스트할 수 있습니다.When authoring a model project, you can use the Analyze in Excel feature to test the efficacy of the roles you have defined. 모델 디자이너의 모델 메뉴에서 Excel에서 분석을 클릭하면 Excel이 열리기 전에 자격 증명 및 큐브 뷰 선택 대화 상자가 나타납니다.From the Model menu in the model designer, when you click Analyze in Excel, before Excel opens, the Choose Credentials and Perspective dialog box appears. 이 대화 상자에서 현재 사용자 이름, 다른 사용자 이름, 역할, 데이터 원본으로 작업 영역 모델에 연결하는 데 사용할 큐브 뷰를 지정할 수 있습니다.In this dialog, you can specify the current username, a different username, a role, and a perspective with which you will use to connect to the workspace model as a data source. 자세한 내용은 참고 Excel에서 분석합니다.To learn more, see Analyze in Excel.

항목Topic DescriptionDescription
역할 만들기 및 관리Create and Manage Roles 이 항목의 태스크에서는 역할 관리자 대화 상자를 사용하여 역할을 만들고 관리하는 방법을 설명합니다.Tasks in this topic describe how to create and manage roles by using the Role Manager dialog box.

관련 항목:See Also

큐브 뷰 Perspectives
Excel에서 분석 Analyze in Excel
USERNAME 함수 (DAX) USERNAME Function (DAX)
LOOKUPVALUE 함수 (DAX) LOOKUPVALUE Function (DAX)
CUSTOMDATA 함수(DAX)CUSTOMDATA Function (DAX)