Erteilen eines benutzerdefinierten Zugriffs auf Dimensiondaten (Analysis Services)
Gilt für: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Nach der Aktivierung des Lesezugriffs auf einen Cube können Sie zusätzliche Berechtigungen festlegen, die den Zugriff auf Dimensionselemente ausdrücklich zulassen oder verweigern (einschließlich der Measures, die in der Measuredimension enthalten sind, die alle in einem Cube verwendeten Measures enthält). Wenn Sie beispielsweise mehrere Kategorien von Resellern haben, möchten Sie möglicherweise Berechtigungen festlegen, um Daten für einen bestimmten Unternehmenstyp auszuschließen. In der folgenden Abbildung ist die Vorher-und-Nachher-Auswirkung des Verweigerns des Zugriffs auf den Unternehmenstyp "Warehouse" in der Dimension "Reseller" dargestellt.
Wenn Sie Daten aus einem SQL Server Analysis Services Cube lesen können, verfügen Sie standardmäßig automatisch über Leseberechtigungen für alle Measures und Dimensionselemente, die diesem Cube zugeordnet sind. Zwar mag dieses Verhalten für viele Szenarien ausreichen, aber manchmal erfordern Sicherheitsanforderungen eine stärker segmentierte Autorisierungsstrategie mit unterschiedlichen Zugriffsstufen für verschiedene Benutzer für dieselbe Dimension.
Sie können den Zugriff einschränken, indem Sie auswählen, für welche Elemente der Zugriff zugelassen (AllowedSet) oder verweigert (DeniedSet) wird. Dafür aktivieren oder deaktivieren Sie Dimensionselemente, die in die Rolle eingeschlossen oder davon ausgeschlossen werden.
Die Standarddimensionssicherheit ist die einfachste: Sie wählen einfach aus, welche Dimensionsattribute und Attributhierarchien in die Rolle eingeschlossen oder daraus ausgeschlossen werden. Die erweiterte Sicherheit ist komplexer und erfordert Kenntnisse im MDX-Skripting. Beiden Ansätze werden im Folgenden beschrieben.
Hinweis
Die folgenden Anweisungen setzen eine Clientverbindung voraus, die Abfragen in MDX ausgibt. Wenn der Client DAX verwendet, wie z.B. Power View in Power BI, ist die Dimensionssicherheit in den Abfrageergebnissen nicht ersichtlich.
Voraussetzungen
Nicht alle Measures oder Dimensionselemente können in benutzerdefinierten Zugriffsszenarien verwendet werden. Eine Verbindung schlägt fehl, wenn eine Rolle den Zugriff auf ein Standardmeasure oder -element oder auf Measures einschränkt, die Teil von Measureausdrücken sind.
Prüfen Sie, ob Hindernisse für die Dimensionssicherheit vorhanden sind: Standardmeasures, Standardelemente und in Measureausdrücken verwendete Measures.
Klicken Sie in SQL Server Management Studio mit der rechten Maustaste auf einen Cube, und wählen Sie Skriptcube als | ALTER To | New Abfrage-Editor Window aus.
Suchen Sie nach DefaultMeasure. Sie sollten eins für den Cube und eins für jede Perspektive finden. Wenn Sie die Dimensionssicherheit definieren, sollten Sie vermeiden, den Zugriff auf Standardmeasures einzuschränken.
Suchen Sie als Nächstes nach MeasureExpression. Ein Measureausdruck ist ein Measure, das auf einer Berechnung basiert, wobei die Berechnung oft weitere Measures beinhaltet. Vergewissern Sie sich, dass das Measure, das Sie einschränken möchten, nicht in einem Ausdruck verwendet wird. Alternativ fahren Sie fort, und schränken Sie den Zugriff ein. Stellen Sie dabei nur sicher, dass Sie auch alle Referenzen auf dieses Measure im gesamten Cube ausschließen.
Abschließend suchen Sie nach DefaultMember. Notieren Sie alle Attribute, die als Standardelement eines Attributs dienen. Vermeiden Sie, Einschränkungen für diese Attribute festzulegen, wenn Sie die Dimensionssicherheit einrichten.
Standarddimensionssicherheit
Stellen Sie in SQL Server Management Studio eine Verbindung mit der instance von SQL Server Analysis Services her, erweitern Sie Rollen für die entsprechende Datenbank in Objekt-Explorer, und klicken Sie dann auf eine Datenbankrolle (oder erstellen Sie eine neue Datenbankrolle).
Die sollte bereits über Lesezugriff für den Cube verfügen. Informationen zu diesem Schritt finden Sie unter Erteilen von Cube- oder Modellberechtigungen (Analysis Services).
Wählen Sie unter Dimension Data | Basic die Dimension aus, für die Sie Berechtigungen festlegen.
Wählen Sie die Attributhierarchie aus. Es werden nicht alle Attribute zur Verfügung stehen. Nur die Attribute mit AttributeHierarchyEnabled werden in der Liste Attributhierarchie angezeigt.
Wählen Sie aus, für welche Elemente der Zugriff zugelassen oder verweigert wird. Standardmäßig wird der Zugriff über die Option Alle Elemente auswählen zugelassen. Wir schlagen vor, dass Sie diese Standardeinstellung beibehalten und dann einzelne Elemente löschen, die für die Windows-Benutzer- und -Gruppenkonten im Bereich Mitgliedschaften über diese Rolle nicht sichtbar sein sollten. Der Vorteil ist, dass neue Elemente, die in zukünftigen Verarbeitungsvorgängen hinzugefügt werden, automatisch für Personen verfügbar sind, die eine Verbindung über diese Rolle herstellen.
Alternativ können Sie über die Option Auswahl aufheben den Zugriff insgesamt widerrufen und dann auswählen, welche Elemente zugelassen werden. Bei zukünftigen Verarbeitungsvorgängen sind neue Elemente erst sichtbar, wenn Sie die Dimensionsdatensicherheit manuell bearbeiten und den Zugriff darauf zulassen.
Klicken Sie optional auf Erweitert , um Sichtbare Gesamtwerte für diese Attributhierarchie zu aktivieren. Mit dieser Option werden Aggregation auf der Basis der durch die Rolle verfügbaren Elemente neu berechnet.
Hinweis
Beim Zuweisen von Berechtigungen, die Dimensionselemente entfernen, werden aggregierte Gesamtwerte nicht automatisch neu berechnet. Nehmen wir an, das Element Alle einer Attributhierarchie gibt die Anzahl 200 zurück, bevor Berechtigungen angewendet werden. Nach der Anwendung von Berechtigungen, die den Zugriff auf einige Elemente verweigern, gibt Alle immer noch 200 zurück, obwohl viel weniger für den Benutzer sichtbare Elementwerte vorhanden sind. Um Missverständnisse bei den Consumern Ihres Cubes zu vermeiden, können Sie das Element Alle als Aggregat nur für die Elemente konfigurieren, zu denen Rollenmitglieder gehören, statt als Aggregat für alle Elemente der Attributhierarchie. Zum Aufrufen dieses Verhaltens können Sie auf der Registerkarte Erweitert die Option Sichtbare Gesamtwerte aktivieren, wenn Sie die Dimensionssicherheit konfigurieren. Nach der Aktivierung wird das Aggregat zum Abfragezeitpunkt berechnet, statt von vorab berechneten Aggregationen abgerufen zu werden. Dies kann eine spürbare Auswirkung auf die Abfrageleistung und sollte nur verwendet werden, wenn es notwendig ist.
Ausblenden von Measures
In Gewähren des benutzerdefinierten Zugriffs auf Zelldaten (Analysis Services) wurde erläutert, dass das vollständige Ausblenden aller visuellen Aspekte eines Measures und nicht nur der Zelldaten Berechtigungen für Dimensionselemente erfordert. In diesem Abschnitt wird erklärt, wie Sie den Zugriff auf die Objektmetadaten eines Measures verweigern.
Scrollen Sie unter Dimension Data | Basic in der Dimensionsliste nach unten, bis Sie Cubedimensionen erreichen, und wählen Sie dann Measures Dimension aus.
Deaktivieren Sie in der Liste der Measures das Kontrollkästchen für Measures, die für Benutzer nicht angezeigt werden sollten, die eine Verbindung über diese Rolle herstellen.
Hinweis
Überprüfen Sie die Voraussetzungen, um zu erfahren, wie Sie Measures erkennen, die die Rollensicherheit durchbrechen.
Erweiterte Dimensionssicherheit
Wenn Sie über MDX-Kenntnisse verfügen, besteht ein weiterer Ansatz darin, MDX-Ausdrücke zu schreiben, mit denen die Kriterien festgelegt werden, für welche Elemente der Zugriff zugelassen oder verweigert wird. Klicken Sie auf ErweiterteRollendimensionsdaten | | erstellen, um das Skript bereitzustellen.
Zum Schreiben der MDX-Anweisung können Sie den MDX-Generator verwenden. Weitere Informationen finden Sie unter MDX Builder (Analysis Services – Mehrdimensionale Daten). Die Registerkarte Erweitert enthält die folgenden Optionen:
Attribut
Wählen Sie das Attribut aus, für das Sie Einstellungen der Elementsicherheit verwalten möchten.
Zulässige Elementgruppe
Die Eigenschaft AllowedSet kann zu keinen Elementen (Standard), allen Elementen oder einigen Elementen aufgelöst werden. Wenn Sie das Zugreifen auf ein Attribut zulassen und keine Elemente der zulässigen Gruppe definieren, wird Zugriff auf alle Elemente gewährt. Wenn Sie den Zugriff auf ein Attribut zulassen und eine bestimmte Gruppe an Attributelementen definieren, sind nur die ausdrücklich zulässigen Elemente sichtbar.
Die Erstellung von AllowedSet wirkt sich wellenartig aus, wenn das Attribut Teil einer Hierarchie mit mehreren Ebenen ist. Nehmen wir beispielsweise an, eine Rolle gewährt den Zugriff auf den Staat Washington (gehen Sie von einem Szenario aus, in dem die Rolle Berechtigungen für die Vertriebsabteilung eines Unternehmens im Staat Washington gewährt). Für Personen, die eine Verbindung über diese Rolle herstellen, werden bei Anfragen, die Vorgänger (USA) oder Nachfolger (Seattle und Redmond) enthalten, nur Elemente in einer Kette angezeigt, die den Staat Washington enthält. Da andere Staaten ausdrücklich nicht zulässig sind, ist die Wirkung dieselbe, als wären sie verweigert.
Hinweis
Wenn Sie einen leeren Satz ({}) von Attributmembern definieren, sind keine Mitglieder des Attributs für die Datenbankrolle sichtbar. Eine fehlende zulässige Gruppe wird nicht als leere Gruppe interpretiert.
Verweigerte Elementgruppe
Die Eigenschaft DeniedSet kann zu keinen Elementen, allen Elementen (Standard) oder einigen Attributelementen aufgelöst werden. Wenn die verweigerte Gruppe nur eine bestimmte Gruppe von Attributelementen enthält, wird der Datenbankrolle der Zugriff nur auf diese bestimmten Elemente sowie auf Nachfolger verweigert, wenn sich das Attribut in einer Hierarchie mit mehreren Ebenen befindet. Denken Sie an das Beispiel der Vertriebsabteilung im Staat Washington. Wenn Washington in DeniedSet platziert wird, werden den Personen, die eine Verbindung über diese Rolle herstellen, alle Staaten außer Washington und seinen Nachfolgerattributen angezeigt.
Erinnern Sie sich aus dem vorherigen Abschnitt, dass die verweigerte Gruppe eine feste Auflistung ist. Wenn die Verarbeitung nachfolgend neue Elemente einführt, denen der Zugriff ebenfalls verweigert werden sollte, müssen Sie diese Rolle bearbeiten, um diese Elemente zur Liste hinzuzufügen.
Standardelement
Die Eigenschaft DefaultMember bestimmt das Dataset, das an einen Client zurückgegeben wird, wenn ein Attribut nicht ausdrücklich in eine Abfrage eingeschlossen ist. Wenn das Attribut nicht explizit eingeschlossen wird, verwendet SQL Server Analysis Services eines der folgenden Standardmber für das Attribut:
Wenn die Datenbankrolle ein Standardelement für das Attribut definiert, verwendet SQL Server Analysis Services dieses Standardelement.
Wenn die Datenbankrolle kein Standardelement für das Attribut definiert, verwendet SQL Server Analysis Services den Standardmember, der für das Attribut selbst definiert ist. Wenn Sie keine anderen Festlegungen treffen, ist das Standardelement für ein Attribut das Alle -Element (es sei denn, das Attribut ist als nicht aggregierbar definiert).
Beispiel: Eine Datenbankrolle gibt Männlich als Standardelement für das Attribut Geschlecht an. Sofern eine Abfrage nicht explizit das Gender-Attribut enthält und ein anderes Element für dieses Attribut angibt, würde SQL Server Analysis Services ein Dataset zurückgeben, das nur männliche Kunden enthält. Weitere Informationen zum Festlegen des Standardelements finden Sie unter Definieren eines Standardelements.
Sichtbarer Gesamtwert aktivieren
Die VisualTotals-Eigenschaft gibt an, ob die angezeigten aggregierten Zellenwerte gemäß allen Zellenwerten oder nur gemäß den Zellenwerten berechnet werden, die für die Datenbankrolle sichtbar sind.
Standardmäßig ist die VisualTotals-Eigenschaft deaktiviert (auf Falsefestgelegt). Diese Standardeinstellung maximiert die Leistung, da SQL Server Analysis Services die Gesamtsumme aller Zellenwerte schnell berechnen kann, anstatt Zeit damit verbringen zu müssen, die zu berechnenden Zellenwerte auszuwählen.
Das Deaktivieren der VisualTotals-Eigenschaft kann jedoch zum Sicherheitsproblem werden, wenn ein Benutzer die aggregierten Zellenwerte verwenden kann, um Werte für Attributelemente abzuleiten, auf die die Datenbankrolle des Benutzers keinen Zugriff hat. Beispielsweise verwendet SQL Server Analysis Services die Werte für drei Attributmember, um einen aggregierten Zellwert zu berechnen. Die Datenbankrolle verfügt über die Zugriffsrechte zum Anzeigen zwei dieser drei Attributelemente. Mithilfe des aggregierten Zellenwertes wäre ein Mitglied dieser Datenbankrolle in der Lage, den Wert für das dritte Attributelement abzuleiten.
Durch Festlegen der VisualTotals-Eigenschaft auf True lässt sich dieses Risiko ausschließen. Wenn Sie die VisualTotals-Eigenschaft aktivieren, kann eine Datenbankrolle aggregierte Gesamtergebnisse nur für Dimensionselemente anzeigen, für die die Rolle die entsprechende Berechtigung aufweist.
Überprüfung
Klicken Sie, um die auf dieser Seite definierte MDX-Syntax zu testen.
Weitere Informationen
Erteilen von Cube- oder Modellberechtigungen (Analysis Services)
Erteilen von benutzerdefiniertem Zugriff auf Zellendaten (Analysis Services)
Erteilen von Berechtigungen für Data Mining-Strukturen und -Modellen (Analysis Services)
Erteilen von Berechtigungen für ein Datenquellenobjekt (Analysis Services)