Hantera databasroller och användare

På modelldatabasnivå måste alla användare tillhöra en roll. Roller definierar användare med särskilda behörigheter för modelldatabasen. Alla användare eller säkerhetsgrupper som läggs till i en roll måste ha ett konto i en Azure AD-klientorganisation i samma prenumeration som servern.

Hur du definierar roller varierar beroende på vilket verktyg du använder, men effekten är densamma.

Rollbehörigheter är:

  • Administratör – Användarna har fullständig behörighet för databasen. Databasroller med administratörsbehörighet skiljer sig från serveradministratörer.
  • Process – Användare kan ansluta till och utföra processåtgärder på databasen och analysera modelldatabasdata.
  • Läsa – Användare kan använda ett klientprogram för att ansluta till och analysera modelldatabasdata.

När du skapar ett projekt för tabellmodeller skapar du roller och lägger till användare eller grupper i rollerna med hjälp av Rollhanteraren i Visual Studio med Analysis Services projekt. När du distribuerar till en server använder du SQL Server Management Studio (SSMS), Analysis Services PowerShell-cmdletseller TMSL (Tabular Model Scripting Language) för att lägga till eller ta bort roller och användarmedlemmar.

När du lägger till en säkerhetsgrupp använder du obj:groupid@tenantid .

När du lägger till ett huvudnamn för tjänsten använder du app:appid@tenantid .

Lägga till eller hantera roller och användare i Visual Studio

  1. Högerklicka på Roller i Tabellmodellutforskaren.

  2. I Rollhanteraren klickar du på Ny.

  3. Ange ett namn för rollen.

    Som standard är namnet på standardrollen inkrementellt numrerat för varje ny roll. Vi rekommenderar att du skriver ett namn som tydligt identifierar medlemstypen, till exempel Ekonomichefer eller Personalspecialister.

  4. Välj någon av följande behörigheter:

    Behörighet Description
    Ingen Medlemmar kan inte läsa eller ändra modellschemat och kan inte köra frågor mot data.
    Läsa Medlemmar kan fråga efter data (baserat på radfilter) men kan inte ändra modellschemat.
    Läsa och bearbeta Medlemmar kan fråga efter data (baserat på filter på radnivå) och köra åtgärderna Process och Bearbeta alla, men kan inte ändra modellschemat.
    Process Medlemmar kan köra åtgärderna Process och Bearbeta alla. Det går inte att läsa eller ändra modellschemat och kan inte köra frågor mot data.
    Administratör Medlemmar kan ändra modellschemat och köra frågor mot alla data.
  5. Om rollen du skapar har läs- eller läs- och processbehörighet kan du lägga till radfilter med hjälp av en DAX-formel. Klicka på fliken Radfilter, välj en tabell, klicka sedan på fältet DAX-filter och skriv sedan en DAX-formel.

  6. Klicka på Medlemmar Lägg till > extern.

  7. I Lägg till extern medlem anger du användare eller grupper i din klientorganisations Azure AD via e-postadress. När du klickar på OK och stänger Rollhanteraren visas roller och rollmedlemmar i Tabellmodellutforskaren.

    Roller och användare i Tabellmodellutforskaren

  8. Distribuera till din Azure Analysis Services server.

Lägga till eller hantera roller och användare i SSMS

Om du vill lägga till roller och användare i en distribuerad modelldatabas måste du vara ansluten till servern som serveradministratör eller redan i en databasroll med administratörsbehörighet.

  1. I Object Exporer högerklickar du på Roller > Ny roll.

  2. I Skapa roll anger du ett rollnamn och en beskrivning.

  3. Välj en behörighet.

    Behörighet Description
    Fullständig kontroll (administratör) Medlemmar kan ändra modellschemat, bearbeta och köra frågor mot alla data.
    Behandla databas Medlemmar kan köra åtgärderna Process och Bearbeta alla. Det går inte att ändra modellschemat och kan inte köra frågor mot data.
    Läsa Medlemmar kan fråga efter data (baserat på radfilter) men kan inte ändra modellschemat.
  4. Klicka på Medlemskap och ange sedan en användare eller grupp i din klientorganisations Azure AD via e-postadress.

    Lägg till användare

  5. Om rollen du skapar har läsbehörighet kan du lägga till radfilter med hjälp av en DAX-formel. Klicka på Radfilter, välj en tabell och skriv sedan en DAX-formel i fältet DAX-filter.

Lägga till roller och användare med hjälp av ett TMSL-skript

Du kan köra ett TMSL-skript i XMLA-fönstret i SSMS eller med hjälp av PowerShell. Använd kommandot CreateOrReplace och roles-objektet.

TMSL-exempelskript

I det här exemplet läggs en extern B2B-användare och en grupp till i rollen Analytiker med läsbehörighet för SalesBI-databasen. Både den externa användaren och gruppen måste finnas i samma klientorganisation i 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"
        }
      ]
    }
  }
}

Lägga till roller och användare med hjälp av PowerShell

SqlServer-modulen innehåller uppgiftsspecifika cmdlets för databashantering och en allmän Invoke-ASCmd-cmdlet som accepterar en TMSL-fråga (Tabular Model Scripting Language) eller ett skript. Följande cmdlets används för att hantera databasroller och användare.

Cmdlet Beskrivning
Lägg till rollmedlem Lägg till en medlem i en databasroll.
Remove-RoleMember Ta bort en medlem från en databasroll.
Invoke-ASCmd Kör ett TMSL-skript.

Radfilter

Radfilter definierar vilka rader i en tabell som kan efterfrågas av medlemmar i en viss roll. Radfilter definieras för varje tabell i en modell med hjälp av DAX-formler.

Radfilter kan bara definieras för roller med läs- och läs- och processbehörigheter. Om ett radfilter inte har definierats för en viss tabell kan medlemmar som standard fråga alla rader i tabellen om inte korsfiltrering tillämpas från en annan tabell.

Radfilter kräver en DAX-formel, som måste utvärderas till ett TRUE/FALSE-värde, för att definiera de rader som kan efterfrågas av medlemmar i den specifika rollen. Rader som inte ingår i DAX-formeln kan inte efterfrågas. Tabellen Kunder med följande radfilteruttryck, =Customers [Country] = "USA", medlemmar i rollen Försäljning kan till exempel bara se kunder i USA.

Radfilter gäller för de angivna raderna och relaterade rader. När en tabell har flera relationer använder filtret säkerhet för den aktiva relationen. Radfilter överse med andra rad filers som definierats för relaterade tabeller, till exempel:

Tabell DAX-uttryck
Region =Region[Country]="USA"
ProductCategory =ProductCategory[Name]="Bicycles"
Transaktioner =Transactions[Year]=2016

Nettoeffekten är att medlemmar kan fråga rader med data där kunden är i USA, produktkategorin är cyklar och året är 2016. Användare kan inte köra frågor mot transaktioner utanför USA, transaktioner som inte är cyklar eller transaktioner som inte genomförs 2016 om de inte är medlemmar i en annan roll som ger dessa behörigheter.

Du kan använda filtret = FALSE() för att neka åtkomst till alla rader för en hel tabell.

Nästa steg

Hantera serveradministratörer
Hantera Azure Analysis Services med PowerShell
TMSL-referens (Tabular Model Scripting Language)