Dela via


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 Microsoft Entra-klientorganisation i samma prenumeration som servern.

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

Rollbehörigheter omfattar:

  • Administratör – Användare 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äs – Användare kan använda ett klientprogram för att ansluta till och analysera modelldatabasdata.

När du skapar ett tabellmodellprojekt skapar du roller och lägger till användare eller grupper i dessa roller 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-cmdletar eller 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. Klicka på Ny i rollhanteraren.

  3. Ange ett namn för rollen.

    Som standard numreras namnet på standardrollen stegvis 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
    None Medlemmar kan inte läsa eller ändra modellschemat och kan inte fråga efter data.
    Läs 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 process- och processåtgärder, men kan inte ändra modellschemat.
    Bearbeta Medlemmar kan köra process- och processåtgärder. 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 den roll som 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 sedan en tabell, klicka sedan på fältet DAX-filter och skriv sedan en DAX-formel.

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

  7. I Lägg till extern medlem anger du användare eller grupper i klientorganisationens Microsoft Entra-ID via e-postadress. När du har klickat på OK och stängt Rollhanteraren visas roller och rollmedlemmar i Tabellmodellutforskaren.

    Skärm som visar 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. Högerklicka på Roller>Ny roll i Object Exporer.

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

  3. Välj en behörighet.

    Behörighet beskrivning
    Fullständig kontroll (administratör) Medlemmar kan ändra modellschemat, bearbeta och köra frågor mot alla data.
    Bearbeta databas Medlemmar kan köra process- och processåtgärder. Det går inte att ändra modellschemat och kan inte köra frågor mot data.
    Läs 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 klientorganisationens Microsoft Entra-ID via e-postadress.

    Skärmbild som visar Lägg till användare.

  5. Om den roll 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 .

Så här lägger du 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 objektet Roller.

Exempel på TMSL-skript

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 Klient-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"
        }
      ]
    }
  }
}

Så här lägger du till roller och användare med hjälp av PowerShell

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

Cmdlet beskrivning
Add-RoleMember 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 endast 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 köra frågor mot 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. Det går inte att fråga rader som inte ingår i DAX-formeln. Tabellen Kunder med följande radfilteruttryck, =Kunder [Land] = "USA", medlemmar i försäljningsrollen 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 tillämpar filter säkerhet för den relation som är aktiv. Radfilter korsas med andra radfiler som definierats för relaterade tabeller, till exempel:

Register DAX-uttryck
Region =Region[Land]="USA"
ProductCategory =ProductCategory[Name]="Bicycles"
Transaktioner =Transaktioner[År]=2016

Nettoeffekten är att medlemmar kan fråga efter rader med data där kunden befinner sig 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 är 2016 om de inte är medlemmar i en annan roll som beviljar 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)