ロールRoles

適用対象: SQL Server Analysis Services Azure Analysis Services Power BI Premium

テーブルモデルのロールは、モデルのメンバー権限を定義します。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.

Azure Analysis Services および Power BI データセットの場合、ユーザーは Azure Active Directory 内に存在する必要があり、ユーザー名とグループは組織の電子メールアドレスまたは UPN で指定する必要があります。For Azure Analysis Services and Power BI datasets, users must be in your Azure Active Directory and usernames and groups specified must be by organizational email address or UPN. 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).

重要

Visual Studio を使用してロールを作成し、Azure Analysis Services または Power BI に配置されるテーブルモデルプロジェクトに組織ユーザーを追加する場合は、[ 統合ワークスペース] を使用します。When using Visual Studio to create roles and add organizational users to a tabular model project that will be deployed to Azure Analysis Services or Power BI, use Integrated workspace.

重要

ユーザーがレポートクライアントアプリケーションを使用して配置済みモデルに接続するには、少なくとも1つのロールを作成し、それらのユーザーがメンバーになっている読み取り権限を持つ必要があります。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 article 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. モデルデータベースを配置すると、モデルデータベース管理者は SSMS を使用してロールメンバーを管理 (追加、編集、削除) できます。After a model database has been deployed, model database administrators can manage (add, edit, delete) role members by using SSMS.

ロールについてUnderstanding roles

ロールは、モデルデータへのアクセスを管理するために Analysis Services で使用されます。Roles are used in Analysis Services to manage model data access. ロールには次の 2 種類があります。There are two types of roles:

  • サーバーロール。 Analysis Services サーバーインスタンスへの管理者アクセスを提供する固定ロールです。The server role, a fixed role that provides administrator access to an Analysis Services server instance.

  • データベース ロール。管理者以外のユーザーによるモデル データベースとデータへのアクセスを制限するために、モデル作成者と管理者によって定義されるロールです。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 article.

既定では、テーブル モデル プロジェクトの新規作成時点では、モデル プロジェクトにロールはありません。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. モデルを配置すると、サーバーロールのメンバー ([Analysis Services 管理者) とデータベース管理者は、SSMS を使用して、モデルおよび各ロールに関連付けられているメンバーに関連付けられているロールを管理できます。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

各ロールに定義済みデータベース権限が 1 つ存在します (読み取りと処理を組み合わせた権限を除きます)。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. ある 1 人のユーザーが、複数個のロールのメンバーである場合、各ロールに対して定義された権限は累積されます。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:

アクセス許可Permissions 説明Description DAX を使用する行フィルターRow filters using DAX
なしNone メンバーは、モデルのデータベース スキーマを変更したり、データを照会したりすることはできません。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
ReadRead メンバーは、(行フィルターに基づいて) データに対してクエリを実行できますが、SSMS のモデル データベースを表示することはできず、モデルのデータベース スキーマを変更することはできません。また、ユーザーはモデルを処理できません。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 (読み取りとプロセス)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 でモデルデータベースを表示することはできません。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.
ProcessProcess メンバーは、処理コマンドを埋め込んだパッケージまたはスクリプトを実行することで、処理操作を実行できます。Members can run process operations by running a script or package that contains a process command. モデルのデータベース スキーマを変更することはできません。Cannot modify the model database schema. データを照会することはできません。Cannot query data. SSMS でモデルデータベースに対してクエリを実行することはできません。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 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.

行フィルターは、Read (読み取り) アクセス許可および Read and Process (読み取りとプロセス) アクセス許可を持つロールに対してのみ定義できます。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.

ある特定のテーブルに対して行フィルターが定義されると、DAX 式 (これは TRUE/FALSE 値に評価される必要がある) によりその特定のロールのメンバーが照会できる行が定義されます。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 テーブルでは、米国内の顧客のみが表示されています。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
リージョンRegion =Region[Country]="USA"=Region[Country]="USA"
ProductCategoryProductCategory =ProductCategory[Name]="Bicycles"=ProductCategory[Name]="Bicycles"
トランザクションTransactions = トランザクション [Year] = 2020=Transactions[Year]=2020

トランザクションテーブルに対するこれらのアクセス許可の実質的な影響は、顧客が米国内にあり、製品カテゴリが自転車で、年が2020であるデータ行をメンバーが照会できることです。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 2020. ユーザーは、これらのアクセス許可を付与する別のロールのメンバーでない限り、米国以外のトランザクション、または自転車以外のトランザクション、または2020に含まれていないトランザクションに対してクエリを実行することはできません。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 2020 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 説明Description
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 関数を使用すると、USERNAME 関数で返されるユーザー名または CustomData 関数で返される文字列と同じ Windows ユーザー名を含む列の値が返されます。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:

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

LOOKUPVALUE 関数は、dimEmployees [DepartmentId] 列の値を返します。 dimEmployees [LoginId] は、現在ログオンしているユーザーの LoginID と同じで、ユーザー名によって返され、dimEmployees [DepartmentId] の値は dimDepartment [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 dimDepartment[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. LOOKUPVALUE 関数で返された DepartmentId の値にも含まれる 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 MarketingMarketing 77
BradleyBradley DavidDavid Adventure-works\david0Adventure-works\david0 MarketingMarketing 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
11 企業Corporate
22 Executive General and AdministrationExecutive General and Administration
33 Inventory ManagementInventory Management
44 製造Manufacturing
55 品質保証Quality Assurance
66 Research and DevelopmentResearch and Development
77 営業/マーケティングSales and Marketing

ロールのテスト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 で分析]と同じコンピューター上に Excel がインストールされている必要があります。To learn more, see Analyze in Excel.

ロールのスクリプトを作成するScripting roles

配置されたモデルおよびデータセットのロールは、 テーブルモデルスクリプト言語 (TMSL) を使用して ロールオブジェクトを作成または変更することでスクリプト化できます。Roles for deployed models and datasets can be scripted by using Tabular Model Scripting Language (TMSL) to create or modify the Roles object. TMSL スクリプトは、SSMS または Invoke ASCmd PowerShell コマンドレットを使用して実行できます。TMSL scripts can be executed in SSMS or with the Invoke-ASCmd PowerShell cmdlet.

関連項目See also

ロールの作成と管理Create and Manage Roles
ビジョン Perspectives
Excel で分析 Analyze in Excel
USERNAME 関数 (DAX) USERNAME Function (DAX)
LOOKUPVALUE 関数 (DAX) LOOKUPVALUE Function (DAX)
CUSTOMDATA 関数 (DAX)CUSTOMDATA Function (DAX)