Databaserollen en -gebruikers beheren

Op het niveau van de modeldatabase moeten alle gebruikers deel uitmaken van een rol. Rollen definiëren gebruikers met bepaalde machtigingen voor de modeldatabase. Elke gebruiker of beveiligingsgroep die aan een rol wordt toegevoegd, moet een account hebben in een Azure AD-tenant in hetzelfde abonnement als de server.

Hoe u rollen definieert, is afhankelijk van het hulpprogramma dat u gebruikt, maar het effect is hetzelfde.

Rolmachtigingen zijn onder andere:

  • Beheerder: gebruikers hebben volledige machtigingen voor de database. Databaserollen met beheerdersmachtigingen verschillen van serverbeheerders.
  • Proces: gebruikers kunnen verbinding maken met de database en procesbewerkingen uitvoeren en modeldatabasegegevens analyseren.
  • Lezen: gebruikers kunnen een clienttoepassing gebruiken om verbinding te maken met modeldatabasegegevens en deze te analyseren.

Wanneer u een project voor een tabellaire model maakt, maakt u rollen en voegt u gebruikers of groepen aan deze rollen toe met behulp van Role Manager in Visual Studio met Analysis Services projecten. Wanneer u op een server bent geïmplementeerd, gebruikt u SQL Server Management Studio (SSMS), Analysis Services PowerShell-cmdlets of Tabular Model Scripting Language (TMSL) om rollen en gebruikersleden toe te voegen of te verwijderen.

Wanneer u een beveiligingsgroep toevoegt, gebruikt u obj:groupid@tenantid .

Wanneer u een service-principal toevoegt, gebruikt app:appid@tenantid u .

Rollen en gebruikers toevoegen of beheren in Visual Studio

  1. Klik in Tabular Model Explorer met de rechtermuisknop op Roles.

  2. Klik in Rolbeheer op Nieuw.

  3. Typ een naam voor de rol.

    Standaard wordt de naam van de standaardrol incrementeel genummerd voor elke nieuwe rol. Het is raadzaam om een naam te typen die duidelijk het lidtype identificeert, bijvoorbeeld Finance Managers of Human Resources-specialisten.

  4. Selecteer een van de volgende machtigingen:

    Machtiging Beschrijving
    Geen Leden kunnen het modelschema niet lezen of wijzigen en kunnen geen query's uitvoeren op gegevens.
    Lezen Leden kunnen gegevens opvragen (op basis van rijfilters), maar kunnen het modelschema niet wijzigen.
    Lezen en verwerken Leden kunnen query's uitvoeren op gegevens (op basis van filters op rijniveau) en de bewerkingen Process en Process All uitvoeren, maar kunnen het modelschema niet wijzigen.
    Proces Leden kunnen de bewerkingen Proces en Alle verwerken uitvoeren. Kan het modelschema niet lezen of wijzigen en kan geen query uitvoeren op gegevens.
    Beheerder Leden kunnen het modelschema wijzigen en query's uitvoeren op alle gegevens.
  5. Als de rol die u maakt de machtigingen Lezen of Lezen en Verwerken heeft, kunt u rijfilters toevoegen met behulp van een DAX-formule. Klik op het tabblad Rijfilters, selecteer een tabel, klik vervolgens op het veld DAX-filter en typ een DAX-formule.

  6. Klik op Leden Externe > toevoegen.

  7. Voer in Extern lid toevoegen gebruikers of groepen in uw tenant Azure AD in op e-mailadres. Nadat u op OK hebt geklikt en Rolbeheer hebt gesloten, worden rollen en rolleden weergegeven in Tabular Model Explorer.

    Rollen en gebruikers in Tabular Model Explorer

  8. Implementeer op Azure Analysis Services server.

Rollen en gebruikers toevoegen of beheren in SSMS

Als u rollen en gebruikers wilt toevoegen aan een geïmplementeerde modeldatabase, moet u als serverbeheerder of al in een databaserol met beheerdersmachtigingen zijn verbonden met de server.

  1. Klik in Object Exporer met de rechtermuisknop op Roles > New Role.

  2. Voer in Rol maken een rolnaam en beschrijving in.

  3. Selecteer een machtiging.

    Machtiging Beschrijving
    Volledig beheer (beheerder) Leden kunnen het modelschema wijzigen, verwerken en query's uitvoeren op alle gegevens.
    Database verwerken Leden kunnen de bewerkingen Proces en Alle verwerken uitvoeren. Kan het modelschema niet wijzigen en kan geen query uitvoeren op gegevens.
    Lezen Leden kunnen gegevens opvragen (op basis van rijfilters), maar kunnen het modelschema niet wijzigen.
  4. Klik op Lidmaatschap en voer vervolgens een gebruiker of groep in uw tenant Azure AD in op e-mailadres.

    Gebruiker toevoegen

  5. Als de rol die u maakt de machtiging Lezen heeft, kunt u rijfilters toevoegen met behulp van een DAX-formule. Klik op Rijfilters, selecteer een tabel en typ vervolgens een DAX-formule in het veld DAX-filter.

Rollen en gebruikers toevoegen met behulp van een TMSL-script

U kunt een TMSL-script uitvoeren in het XMLA-venster in SSMS of met behulp van PowerShell. Gebruik de opdracht CreateOrReplace en het object Roles.

Voorbeeld van TMSL-script

In dit voorbeeld worden een externe B2B-gebruiker en een groep toegevoegd aan de rol Analist met leesmachtigingen voor de SalesBI-database. Zowel de externe gebruiker als de groep moeten zich in dezelfde tenant in Azure AD hebben.

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

Rollen en gebruikers toevoegen met behulp van PowerShell

De SqlServer-module biedt taakspecifieke cmdlets voor databasebeheer en de algemene Invoke-ASCmd-cmdlet die een TMSL-query (Tabular Model Scripting Language) of -script accepteert. De volgende cmdlets worden gebruikt voor het beheren van databaserollen en -gebruikers.

Cmdlet Beschrijving
Add-RoleMember Voeg een lid toe aan een databaserol.
Remove-RoleMember Een lid uit een databaserol verwijderen.
Invoke-ASCmd Voer een TMSL-script uit.

Rijfilters

Met rijfilters wordt bepaald welke rijen in een tabel kunnen worden opgevraagd door leden van een bepaalde rol. Rijfilters worden gedefinieerd voor elke tabel in een model met behulp van DAX-formules.

Rijfilters kunnen alleen worden gedefinieerd voor rollen met de machtigingen Lezen en Lezen en Verwerken. Als een rijfilter niet is gedefinieerd voor een bepaalde tabel, kunnen leden standaard een query uitvoeren op alle rijen in de tabel, tenzij kruisfiltering van toepassing is vanuit een andere tabel.

Rijfilters vereisen een DAX-formule, die moet worden geëvalueerd als een TRUE/FALSE-waarde, om de rijen te definiëren waarop query's kunnen worden uitvoeren door leden van die specifieke rol. Er kunnen geen query's worden op rijen die niet zijn opgenomen in de DAX-formule. De tabel Klanten met de volgende expressie voor rijfilters, =Customers [Country] = "USA", leden van de rol Sales kunnen bijvoorbeeld alleen klanten in de Verenigde Staten zien.

Rijfilters zijn van toepassing op de opgegeven rijen en gerelateerde rijen. Wanneer een tabel meerdere relaties heeft, wordt met filters beveiliging toegepast voor de relatie die actief is. Rijfilters worden door elkaar kruist met andere rij-filers die zijn gedefinieerd voor gerelateerde tabellen, bijvoorbeeld:

Tabel DAX-expressie
Region =Region[Country]="USA"
ProductCategory =ProductCategory[Name]="Fietsen"
Transacties =Transactions[Year]=2016

Het netto-effect is dat leden rijen met gegevens kunnen opvragen waarin de klant zich in de Verenigde Staten, de productcategorie fietsen is en het jaar 2016 is. Gebruikers kunnen geen query's uitvoeren op transacties buiten de Verenigde Staten, transacties die geen fietsen zijn of transacties die niet in 2016 zijn uitgevoerd, tenzij ze lid zijn van een andere rol die deze machtigingen verleent.

U kunt het filter = FALSE() gebruiken om de toegang tot alle rijen voor een hele tabel te weigeren.

Volgende stappen

Serverbeheerders beheren
Azure Analysis Services beheren met PowerShell
Naslag voor Tabular Model Scripting Language (TMSL)