Gestire ruoli del database e utentiManage database roles and users

A livello di database modello, tutti gli utenti devono appartenere a un ruolo.At the model database level, all users must belong to a role. I ruoli definiscono gli utenti con determinate autorizzazioni per il database modello.Roles define users with particular permissions for the model database. Qualsiasi gruppo di sicurezza o utente aggiunto a un ruolo deve avere un account in un tenant di Azure AD nella stessa sottoscrizione del server.Any user or security group added to a role must have an account in an Azure AD tenant in the same subscription as the server.

La modalità di definizione dei ruoli varia a seconda dello strumento in uso, ma l'effetto è lo stesso.How you define roles is different depending on the tool you use, but the effect is the same.

Le autorizzazioni di ruoli includono:Role permissions include:

  • Amministratore: utenti che dispongono di autorizzazioni complete per il database.Administrator - Users have full permissions for the database. I ruoli del database con autorizzazioni di amministratore sono diversi dagli amministratori di server.Database roles with Administrator permissions are different from server administrators.
  • Elabora: utenti che possono connettersi ed eseguire operazioni di elaborazione nel database e analizzare i dati del database modello.Process - Users can connect to and perform process operations on the database, and analyze model database data.
  • Lettura: utenti che possono usare un'applicazione client per connettersi e analizzare i dati del database modello.Read - Users can use a client application to connect to and analyze model database data.

Quando si crea un progetto di modello tabulare, si creano ruoli e si aggiungono utenti o gruppi a questi ruoli usando Gestione ruoli in SSDT.When creating a tabular model project, you create roles and add users or groups to those roles by using Role Manager in SSDT. Quando si esegue la distribuzione in un server, si usano SQL Server Management Studio (SSMS), i cmdlet di PowerShell per Analysis Services o Tabular Model Scripting Language (TMSL) per aggiungere o rimuovere ruoli e membri utente.When deployed to a server, you use SSMS, Analysis Services PowerShell cmdlets, or Tabular Model Scripting Language (TMSL) to add or remove roles and user members.

Per aggiungere o gestire ruoli e utenti in SSDTTo add or manage roles and users in SSDT

  1. In SSDT > Esplora modelli tabulari fare clic con il pulsante destro del mouse su Ruoli.In SSDT > Tabular Model Explorer, right-click Roles.

  2. In Gestione ruoli fare clic su Nuovo.In Role Manager, click New.

  3. Digitare un nome per il ruolo.Type a name for the role.

    Per impostazione predefinita, il nome del ruolo predefinito è numerato in modo incrementale per ogni nuovo ruolo.By default, the name of the default role is incrementally numbered for each new role. È consigliabile digitare un nome che identifichi con precisione il tipo di membro, ad esempio responsabili finanze o esperti di risorse umane.It's recommended you type a name that clearly identifies the member type, for example, Finance Managers or Human Resources Specialists.

  4. Selezionare una delle seguenti autorizzazioni:Select one of the following permissions:

    AutorizzazionePermission DescrizioneDescription
    NessunoNone I membri non possono modificare lo schema del modello e non possono eseguire query sui dati.Members cannot modify the model schema and cannot query data.
    LetturaRead I membri possono eseguire query su dati, in base ai filtri di riga, ma non possono modificare lo schema del modello.Members can query data (based on row filters) but cannot modify the model schema.
    Lettura ed elaborazioneRead and Process I membri possono eseguire query su dati in base ai filtri a livello di riga ed eseguire operazioni Elabora ed Elabora tutto, ma non possono modificare lo schema del modello.Members can query data (based on row-level filters) and run Process and Process All operations, but cannot modify the model schema.
    ProcessoProcess I membri possono eseguire operazioni Elabora ed Elabora tutto.Members can run Process and Process All operations. Non possono modificare lo schema del modello ed eseguire query sui dati.Cannot modify the model schema and cannot query data.
    AmministratoreAdministrator I membri possono modificare lo schema del modello ed eseguire query su tutti i dati.Members can modify the model schema and query all data.
  5. Se il ruolo che si sta creando dispone delle autorizzazioni Lettura o Lettura ed elaborazione, è possibile aggiungere filtri di riga usando una formula DAX.If the role you are creating has Read or Read and Process permission, you can add row filters by using a DAX formula. Fare clic sulla scheda Filtri di riga, quindi selezionare una tabella, quindi scegliere il campo Filtro DAX e quindi digitare una formula DAX.Click the Row Filters tab, then select a table, then click the DAX Filter field, and then type a DAX formula.

  6. Fare clic su Membri > Aggiungi esterno.Click Members > Add External.

  7. In Aggiungi membro esterno immettere gli utenti o i gruppi nel tenant di Azure AD dall'indirizzo e-mail.In Add External Member, enter users or groups in your tenant Azure AD by email address. Dopo avere fatto clic su OK e avere chiuso Gestione ruoli, i ruoli e i membri del ruolo vengono visualizzati in Esplora modelli tabulari.After you click OK and close Role Manager, roles and role members appear in Tabular Model Explorer.

    Ruoli e utenti in Esplora modelli tabulari

  8. Eseguire la distribuzione in un server di Azure Analysis Services.Deploy to your Azure Analysis Services server.

Per aggiungere o gestire ruoli e utenti in SSMSTo add or manage roles and users in SSMS

Per aggiungere ruoli e utenti a un database modello distribuito, è necessario connettersi al server come amministratore del server o già in un ruolo del database con autorizzazioni di amministratore.To add roles and users to a deployed model database, you must be connected to the server as a Server administrator or already in a database role with administrator permissions.

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su Ruoli > Nuovo ruolo.In Object Exporer, right-click Roles > New Role.

  2. In Crea ruolo immettere il nome di un ruolo e una descrizione.In Create Role, enter a role name and description.

  3. Selezionare un'autorizzazione.Select a permission.

    AutorizzazionePermission DescrizioneDescription
    Controllo completo (amministratore)Full control (Administrator) I membri possono modificare lo schema del modello, eseguire operazioni di elaborazione e query su tutti i dati.Members can modify the model schema, process, and can query all data.
    Elabora databaseProcess database I membri possono eseguire operazioni Elabora ed Elabora tutto.Members can run Process and Process All operations. Non possono modificare lo schema del modello ed eseguire query sui dati.Cannot modify the model schema and cannot query data.
    LetturaRead I membri possono eseguire query su dati, in base ai filtri di riga, ma non possono modificare lo schema del modello.Members can query data (based on row filters) but cannot modify the model schema.
  4. Fare clic su Appartenenza, quindi immettere un utente o un gruppo nel tenant di Azure AD dall'indirizzo e-mail.Click Membership, then enter a user or group in your tenant Azure AD by email address.

    Add user

  5. Se il ruolo che si sta creando dispone dell'autorizzazione Lettura, è possibile aggiungere filtri di riga usando una formula DAX.If the role you are creating has Read permission, you can add row filters by using a DAX formula. Fare clic su Filtri di riga, selezionare una tabella e quindi digitare una formula DAX nel campo Filtro DAX.Click Row Filters, select a table, and then type a DAX formula in the DAX Filter field.

Per aggiungere ruoli e utenti usando uno script TMSLTo add roles and users by using a TMSL script

È possibile eseguire uno script TMSL nella finestra XMLA in SSMS o usando PowerShell.You can run a TMSL script in the XMLA window in SSMS or by using PowerShell. Usare il comando CreateOrReplace e l'oggetto Ruoli.Use the CreateOrReplace command and the Roles object.

Script di esempio del linguaggio di scripting del modello tabulareSample TMSL script

In questo esempio, un gruppo e un utente esterno B2B vengono aggiunti al ruolo analista con autorizzazioni Lettura per il database SalesBI.In this sample, a B2B external user and a group are added to the Analyst role with Read permissions for the SalesBI database. Sia il gruppo che l'utente esterno devono trovarsi nello stesso tenant di Azure AD.Both the external user and group must be in same tenant Azure AD.

{
  "createOrReplace": {
    "object": {
      "database": "SalesBI",
      "role": "Analyst"
    },
    "role": {
      "name": "Users",
      "description": "All allowed users to query the model",
      "modelPermission": "read",
      "members": [
        {
          "memberName": "user1@contoso.com",
          "identityProvider": "AzureAD"
        },
        {
          "memberName": "group1@adventureworks.com",
          "identityProvider": "AzureAD"
        }
      ]
    }
  }
}

Per aggiungere ruoli e utenti usando PowerShellTo add roles and users by using PowerShell

Il modulo SqlServer fornisce cmdlet di gestione database specifici dell'attività, oltre al cmdlet Invoke-ASCmd per utilizzo generico che accetta una query o uno script TMSL (Tabular Model Scripting Language).The SqlServer module provides task-specific database management cmdlets and the general-purpose Invoke-ASCmd cmdlet that accepts a Tabular Model Scripting Language (TMSL) query or script. I cmdlet seguenti vengono usati per la gestione di utenti e ruoli del database.The following cmdlets are used for managing database roles and users.

CmdletCmdlet DescrizioneDescription
Add-RoleMemberAdd-RoleMember Aggiunge un membro a un ruolo del database.Add a member to a database role.
Remove-RoleMemberRemove-RoleMember Rimuove un membro da un ruolo del database.Remove a member from a database role.
Invoke-ASCmdInvoke-ASCmd Esegue uno script TMSL.Execute a TMSL script.

Filtri di rigaRow filters

I filtri di riga definiscono le righe di una tabella su cui i membri di uno specifico ruolo possono eseguire query.Row filters define which rows in a table can be queried by members of a particular role. Vengono definiti per ogni tabella in un modello usando formule DAX.Row filters are defined for each table in a model by using DAX formulas.

I filtri di riga possono essere definiti solo per i ruoli con le autorizzazioni Lettura e Lettura ed elaborazione.Row filters can be defined only for roles with Read and Read and Process permissions. Per impostazione predefinita, se non si definisce un filtro di riga per una determinata tabella, i membri possono eseguire query su tutte le righe della tabella a meno che non vengano applicati filtri incrociati da un'altra tabella.By default, if a row filter is not defined for a particular table, members can query all rows in the table unless cross-filtering applies from another table.

I filtri di riga richiedono una formula DAX, che deve restituire un valore TRUE/FALSE, per definire le righe su cui i membri del ruolo specifico possono eseguire query.Row filters require a DAX formula, which must evaluate to a TRUE/FALSE value, to define the rows that can be queried by members of that particular role. Non è possibile eseguire query su righe non incluse nella formula DAX.Rows not included in the DAX formula cannot be queried. Ad esempio, nel caso della tabella Customers con l'espressione di filtri di riga seguente, =Customers [Country] = 'USA', i membri del ruolo Sales possono visualizzare solo i clienti negli Stati Uniti.For example, the Customers table with the following row filters expression, =Customers [Country] = “USA”, members of the Sales role can only see customers in the USA.

I filtri di riga si applicano alle righe specificate e alle righe correlate.Row filters apply to the specified rows and related rows. Quando una tabella contiene più relazioni, i filtri applicano la sicurezza per la relazione che è attiva.When a table has multiple relationships, filters apply security for the relationship that is active. I filtri di riga vengono intersecati con altri filtri di riga definiti per le tabelle correlate, ad esempio:Row filters are intersected with other row filers defined for related tables, for example:

TableTable Espressione DAXDAX expression
RegionRegion =Region[Country]="USA"=Region[Country]=”USA”
ProductCategoryProductCategory =ProductCategory[Name]="Bicycles"=ProductCategory[Name]=”Bicycles”
TransazioniTransactions =Transactions[Year]=2016=Transactions[Year]=2016

I membri possono eseguire query sulle righe di dati, in cui il cliente si trova negli Stati Uniti, la categoria del prodotto è biciclette e l'anno è il 2016.The net effect is members can query rows of data where the customer is in the USA, the product category is bicycles, and the year is 2016. Gli utenti non possono eseguire query sulle transazioni all'esterno degli Stati Uniti, non relative alle biciclette o all'anno 2016, a meno che non siano membri di un altro ruolo che prevede queste autorizzazioni.Users cannot query transactions outside of the USA, transactions that are not bicycles, or transactions not in 2016 unless they are a member of another role that grants these permissions.

È possibile usare il filtro, =FALSE(), per negare l'accesso a tutte le righe di un'intera tabella.You can use the filter, =FALSE(), to deny access to all rows for an entire table.

Passaggi successiviNext steps

Gestire gli amministratori di server Manage server administrators
Gestire Azure Analysis Services con PowerShellManage Azure Analysis Services with PowerShell
Riferimento al Tabular Model Scripting Language (TMSL)Tabular Model Scripting Language (TMSL) Reference