Condividi tramite


Gestire ruoli e utenti del database

A livello di database modello, tutti gli utenti devono appartenere a un ruolo. I ruoli definiscono gli utenti con determinate autorizzazioni per il database modello. Qualsiasi gruppo di sicurezza o utente aggiunto a un ruolo deve avere un account in un tenant di Microsoft Entra nella stessa sottoscrizione del server.

La modalità di definizione dei ruoli varia a seconda dello strumento in uso, ma l'effetto è lo stesso.

Le autorizzazioni di ruoli includono:

  • Amministratore : gli utenti dispongono delle autorizzazioni complete per il database. I ruoli del database con autorizzazioni di amministratore sono diversi dagli amministratori di server.
  • Processo : gli utenti possono connettersi ed eseguire operazioni di processo nel database e analizzare i dati del database modello.
  • Lettura : gli utenti possono usare un'applicazione client per connettersi ai dati del database modello e analizzarli.

Quando si crea un progetto di modello tabulare, si creano ruoli e si aggiungono utenti o gruppi a questi ruoli usando Gestione ruoli in Visual Studio con i progetti di Analysis Services. Quando viene distribuito in un server, usare SQL Server Management Studio (SSMS), i cmdlet di PowerShell di Analysis Services o TMSL (Tabular Model Scripting Language) per aggiungere o rimuovere ruoli e membri utente.

Quando si aggiunge un gruppo di sicurezza, usare obj:groupid@tenantid.

Quando si aggiunge un principale del servizio, usare app:appid@tenantid.

Per aggiungere o gestire ruoli e utenti in Visual Studio

  1. In Esplora modelli tabulari fare clic con il pulsante destro del mouse su Ruoli.

  2. In Gestione ruoli fare clic su Nuovo.

  3. Digitare un nome per il ruolo.

    Per impostazione predefinita, il nome del ruolo predefinito è numerato in modo incrementale per ogni nuovo ruolo. È consigliabile digitare un nome che identifichi con precisione il tipo di membro, ad esempio responsabili finanze o esperti di risorse umane.

  4. Selezionare una delle seguenti autorizzazioni:

    Autorizzazione Descrizione
    Nessuno I membri non possono leggere o modificare lo schema del modello e non possono eseguire query sui dati.
    Leggere I membri possono eseguire query su dati, in base ai filtri di riga, ma non possono modificare lo schema del modello.
    Lettura ed elaborazione 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.
    Processo I membri possono effettuare le operazioni relative alle opzioni Elabora ed Elabora tutto, Non è possibile leggere o modificare lo schema del modello e non è possibile eseguire query sui dati.
    Amministratore I membri possono modificare lo schema del modello ed eseguire query su tutti i dati.
  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. Fare clic sulla scheda Filtri di riga, selezionare una tabella, quindi fare clic sul campo Filtro DAX e digitare una formula DAX.

  6. Fare clic su Membri>Aggiungi Esterno.

  7. In Aggiungi membro esterno, immettere utenti o gruppi nel tenant di Microsoft Entra ID tramite indirizzo email. Dopo avere fatto clic su OK e avere chiuso Gestione ruoli, i ruoli e i membri del ruolo vengono visualizzati in Esplora modelli tabulari.

    Schermata che mostra ruoli e utenti in Esplora modelli tabulari.

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

Per aggiungere o gestire ruoli e utenti 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.

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su Ruoli>nuovo ruolo.

  2. In Crea ruolo immettere un nome e una descrizione del ruolo.

  3. Selezionare un'autorizzazione.

    Autorizzazione Descrizione
    Controllo completo (amministratore) I membri possono modificare lo schema del modello, eseguire operazioni di elaborazione e query su tutti i dati.
    Database dei processi I membri possono effettuare le operazioni relative alle opzioni Elabora ed Elabora tutto, ma non possono modificare lo schema del modello, né eseguire query sui dati.
    Leggere I membri possono eseguire query su dati, in base ai filtri di riga, ma non possono modificare lo schema del modello.
  4. Fai clic su Appartenenza, quindi immettere un utente o un gruppo nel tenant Microsoft Entra ID tramite indirizzo di posta elettronica.

    Schermata che mostra Aggiungi utente.

  5. Se il ruolo che si sta creando dispone dell'autorizzazione Lettura, è possibile aggiungere filtri di riga usando una formula DAX. Fare clic su Filtri di riga, selezionare una tabella e quindi digitare una formula DAX nel campo Filtro DAX .

Per aggiungere ruoli e utenti usando uno script TMSL

È possibile eseguire uno script TMSL nella finestra XMLA in SSMS o usando PowerShell. Usare il comando CreateOrReplace e l'oggetto Roles .

Script TMSL di esempio

In questo esempio, un gruppo e un utente esterno B2B vengono aggiunti al ruolo analista con autorizzazioni Lettura per il database SalesBI. Sia il gruppo che l'utente esterno devono trovarsi nello stesso tenant di Microsoft Entra ID.

{
  "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 PowerShell

Il modulo SqlServer fornisce cmdlet per la gestione del database specifici per determinati compiti e il cmdlet Invoke-ASCmd di uso generale, che accetta una query o uno script TMSL (Tabular Model Scripting Language). I cmdlet seguenti vengono usati per la gestione di utenti e ruoli del database.

Cmdlet (un piccolo script o comando in PowerShell) Descrizione
Add-RoleMember Aggiunge un membro a un ruolo del database.
Remove-RoleMember Rimuove un membro da un ruolo del database.
Invoke-ASCmd Esegue uno script TMSL.

Filtri di riga

I filtri di riga definiscono le righe di una tabella su cui i membri di uno specifico ruolo possono eseguire query. e vengono definiti per ogni tabella in un modello tramite formule DAX.

I filtri di riga possono essere definiti solo per i ruoli con le autorizzazioni Lettura e Lettura ed elaborazione. 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.

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. Non è possibile eseguire query su righe non incluse nella formula DAX. Ad esempio, la 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.

I filtri di riga si applicano alle righe specificate e alle righe correlate. Quando una tabella dispone di più relazioni, tramite i filtri viene applicata la sicurezza alla relazione che è attiva. I filtri di riga vengono intersecati con altri filtri di riga definiti per le tabelle correlate, ad esempio:

Tabella Espressione DAX
Area geografica =Region[Country]="USA"
Categoria di Prodotto =ProductCategory[Name]="Biciclette"
Transazioni =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. 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.

È possibile usare il filtro = FALSE(), per negare l'accesso a tutte le righe per un'intera tabella.

Passaggi successivi

Gestire gli amministratori del server
Gestire Azure Analysis Services con PowerShell
Informazioni di riferimento su TMSL (Tabular Model Scripting Language)