Gewähren von benutzerdefiniertem Zugriff auf Dimensionsdaten
Nachdem einer MicrosoftSQL Server 2005 Analysis Services (SSAS)-Datenbankrolle Lese- oder Lese-/Schreibberechtigungen für die Dimensionen in einem Cube erteilt wurden, können Sie die Sicherheit für jedes Dimensionsattributelement definieren (wird auch als Dimensionssicherheit bezeichnet). Standardmäßig hat eine Datenbankrolle Zugriff auf alle Elemente aller Dimensionsattribute in einem Cube, für den Sie über Lesezugriff verfügt. Sie können für jedes Dimensionsattribut eine bestimmte Gruppe von Attributelementen festlegen, für die Rollenmitglieder über bestimmte Zugriffsrechte verfügen (AllowedSet) oder für die ihnen die Zugriffsrechte speziell verweigert werden (DeniedSet). Sie können auch das Standardelement für jede Attributhierarchie definieren. Standardmäßig ist das Alle-Element das Standardelement. Wenn Sie Leseberechtigungen für bestimmte Attributelemente verweigern, möchten Sie möglicherweise den Wert für das Alle-Element als Aggregat für die Elemente festlegen, auf die die Rollenmitglieder Zugriff haben, statt als Aggregat für alle Elemente der Attributhierarchie. Aktivieren Sie VisualTotals, um dieses Verhalten anzugeben. Wenn Sie VisualTotals aktivieren, wird das Aggregat zur Abfragezeit berechnet und nicht aus vorab berechneten Aggregationen abgerufen.
Hinweis |
---|
Welche Art von Zugriff Mitglieder einer Dimensionsrolle haben, basiert auf dem gewährten Dimensionszugriff, entweder Lesen oder Lesen/Schreiben. |
Grundlegendes zur IsAllowed-Eigenschaft
Die IsAllowed-Eigenschaft bestimmt, ob die Datenbankrolle auf Attributelemente zugreifen darf. Standardmäßig darf eine Datenbankrolle, die auf eine Dimension zugreifen kann, nicht auf Attributhierarchien zugreifen.
Grundlegendes zur AllowedSet-Eigenschaft
Die AllowedSet-Eigenschaft verwendet einen Multidimensional Expressions-(MDX-)Ausdruck, um zu bestimmen, welche Attributelemente von der Datenbankrolle angezeigt werden können (die zulässige Gruppe). Die zulässige Gruppe kann keine (Standardeinstellung), alle oder einige Attributelemente einschließen. 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. Durch das ausdrückliche Definieren einer zulässigen Gruppe wird möglicherweise die Sichtbarkeit von Attributelementen beschränkt, die nach dem Definieren der zulässigen Gruppe hinzugefügt wurden.
Das Beschränken der zulässigen Gruppe für ein Attribut wirkt sich auf die Sichtbarkeit anderer Attribute aus. Angenommen, die zulässige Gruppe für das Customer-Attribut schließt nur einige Attributelemente ein, die zulässige Gruppe für das City-Attribut schließt jedoch alle Attributelemente ein. In diesem Fall sind die einzigen Elemente des City-Attributs, die sichtbar sind, die Städte, die in der zulässigen Gruppe des Customer-Attributs Kunden aufweisen. Wenn eine Stadt (city) vorhanden ist, die keine Kunden (customers) aufweist, sind Attributelemente für diese Stadt nicht sichtbar. Ein Attributelement kann folglich nur sichtbar sein, wenn dieses Attributelement mit mindestens einem Element der zulässigen Gruppe vorhanden ist.
Hinweis |
---|
Wenn Sie eine leere Gruppe von Attributelementen definieren, sind keine Elemente des Attributs für die Datenbankrolle sichtbar. Eine fehlende zulässige Gruppe wird nicht als leere Gruppe interpretiert. |
Grundlegendes zur DeniedSet-Eigenschaft
Die DeniedSet-Eigenschaft verwendet einen MDX-Ausdruck, um die Attributelemente zu bestimmen, auf die eine Datenbankrolle explizit nicht zugreifen darf (die verweigerte Gruppe). Die verweigerte Gruppe kann keine, alle (Standardeinstellung) oder einige Attributelemente einschließen. Standardmäßig ist keine verweigerte Gruppe definiert.
Wenn die verweigerte Gruppe nur eine bestimmte Gruppe von Attributelementen enthält, darf die Datenbankrolle nur auf diese bestimmten Elemente nicht zugreifen. Durch das ausdrückliche Definieren einer verweigerten Gruppe wird möglicherweise die Verfügbarkeit von Attributelementen beschränkt, die nach dem Definieren der verweigerten Gruppe hinzugefügt wurden.
Wenn Sie in der verweigerten Gruppe eine bestimmte Gruppe von Attributen definieren, hängt die Auswirkung dieser verweigerten Gruppen auf die Verfügbarkeit anderer Attribute davon ab, ob die ApplyDenied-Eigenschaft aktiviert ist. Angenommen, es ist beispielsweise eine verweigerte Gruppe für das State-Attribut vorhanden, und die ApplyDenied-Eigenschaft ist aktiviert. In diesem Fall kann die Datenbankrolle nicht auf die Customer-Attribute für diese Staaten (states) in der verweigerten Gruppe zugreifen.
Grundlegendes zur ApplyDenied-Eigenschaft
Die ApplyDenied-Eigenschaft gibt an, ob Elemente einer verweigerten Gruppe verwendet werden, um zu bestimmen, ob Elemente einer Attributhierarchie für die Datenbankrolle sichtbar sind. Standardmäßig ist die ApplyDenied-Eigenschaft für jede Attributhierarchie auf True festgelegt (also aktiviert).
Hinweis |
---|
Im Gegensatz zur verweigerten Gruppe, deren Auswirkung von der ApplyDenied-Eigenschaft abhängig ist, wird die zulässige Gruppe immer angewendet, um zu bestimmen, ob Elemente einer Attributhierarchie für die Datenbankrolle sichtbar sind. |
Wenn die ApplyDenied-Eigenschaft aktiviert und eine verweigerte Gruppe vorhanden ist, kann die Datenbankrolle nicht auf Elemente einer Attributhierarchie zugreifen, wenn diese Hierarchie Elemente der verweigerten Gruppe enthält. Beispiel: Die ApplyDenied-Eigenschaft ist aktiviert, und die verweigerte Gruppe besteht aus Staaten (states) im State-Attribut. In diesem Fall kann die Datenbankrolle nicht nur nicht auf das State-Attribut zugreifen, sondern auch nicht auf das Customers-Attribut für sämtliche Staaten (states) in der verweigerten Gruppe.
Wenn die ApplyDenied-Eigenschaft deaktiviert und eine verweigerte Gruppe vorhanden ist, kann die Datenbankrolle auf Elemente einer Attributhierarchie zugreifen, auch wenn diese Hierarchie Elemente der verweigerten Gruppe enthält. Beispiel: Die ApplyDenied-Eigenschaft ist deaktiviert, und die verweigerte Gruppe besteht aus Staaten (states) im State-Attribut. Obwohl die Datenbankrolle nicht auf das State-Attribut zugreifen kann, kann sie weiterhin für sämtliche Staaten (states) in der verweigerten Gruppe auf das Customers-Attribut zugreifen.
Grundlegendes zur VisualTotals-Eigenschaft
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 False festgelegt). Diese Standardeinstellung maximiert die Leistung, da Analysis Services das Gesamtergebnis aller Zellenwerte schnell berechnen kann, ohne das Zeit für das Auswählen der zu berechnenden Zellenwerte aufgewendet werden muss.
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. Analysis Services verwendet beispielsweise die Werte für drei Attributelemente, um einen aggregierten Zellenwert 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.
Wenn ein Benutzer Werte für Attributelemente ableiten kann, auf die die Datenbankrolle des jeweiligen Benutzers keinen Zugriff hat, schreiben die bewährten Sicherheitsmethoden vor, die VisualTotals-Eigenschaft für dieses Attribut zu aktivieren (auf True festzulegen). 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. Wenn beispielsweise die VisualTotals-Eigenschaft aktiviert wird, bedeutet dies, dass die Datenbankrolle ein aggregiertes Gesamtergebnis sieht, das nur die Staaten (also Elemente des State-Attributs) einschließt, die für die Rolle sichtbar sind. Das aggregierte Gesamtergebnis schließt die Werte für alle Staaten (states) nicht ein.
Grundlegendes zur DefaultMember-Eigenschaft
Die DefaultMember-Eigenschaft 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 ist, verwendet Analysis Services eines der folgenden Standardelemente für das Attribut:
Wenn die Datenbankrolle ein Standardelement für das Attribut definiert, verwendet Analysis Services dieses Standardmitglied.
Wenn die Datenbankrolle kein Standardelement für das Attribut definiert, verwendet Analysis Services dieses Standardmitglied, das für das Attribut selbst definiert wurde. Das Standardelement für ein Attribut ist – vorausgesetzt, Sie machen keine anderen Angaben – das All-Element (es sei denn, das Attribut ist als nicht aggregierbar definiert).
Beispiel: Eine Datenbankrolle gibt Male als Standardelement für das Gender-Attribut an. Wenn eine Abfrage nicht ausdrücklich sowohl das Gender-Attribut einschließt als auch ein anderes Element für dieses Attribut angibt, gibt Analysis Services ein Dataset zurück, das lediglich männliche (male) Kunden einschließt. Weitere Informationen zum Festlegen des Standardelements finden Sie unter Definieren eines Standardelements.
Festlegen von Zugriffsberechtigungen für ein Element in einer Dimension
Vor dem Festlegen von Zugriffsberechtigungen für ein Element in einer Dimension empfiehlt es sich möglicherweise, einige Beispiele dazu zurate zu ziehen, wie sich unterschiedliche Zugriffseinstellungen auf das Resultset auswirken, das beim Abfragen von Elementen zurückgegeben wird. Die folgenden Themen stellen diese Beispieleinstellungen bereit:
Beispiel 3 – Verwenden der Except-Funktion, um Elemente aus einer verweigerten Gruppe herauszunehmen
Beispiel 5 – Verwenden der Exists-Funktion zum Angeben einer zulässigen Gruppe
Nachdem Sie sich darüber im Klaren sind, wie die unterschiedlichen Zugriffsberechtigungen funktionieren, können Sie diese Berechtigungen erteilen. Um Zugriffsberechtigungen für ein Element in einer Dimension erteilen zu können, muss der jeweilige Benutzer Mitglied der Analysis Services-Serverrolle bzw. Mitglied einer Analysis Services-Datenbankrolle sein, die über die Berechtigung Vollzugriff (Administrator) verfügt.
Wenn Sie einem Mitglied einer Dimension mit Business Intelligence Development Studio Berechtigungen erteilen, müssen Sie die Standardoptionen auf dem Register Standard der Registerkarte Dimensionsdatenzugriff oder die genauer angepassten Optionen auf der Registerkarte Erweitert verwenden.
Wichtig |
---|
Wenn ein Microsoft Windows-Benutzer bzw. eine entsprechende Gruppe mehreren Datenbankrollen zugehörig ist, sind die effektiven Berechtigungen für den Benutzer oder die Gruppe über alle Datenbankrollen hinweg additiv (also eine Union von Berechtigungen). Wenn eine Datenbankrolle dem Benutzer den Zugriff auf ein Attributelement verweigert, eine andere Datenbankrolle dem Benutzer jedoch den Zugriff auf dieses Attributelement gewährt hat, kann der Benutzer auf das Attributelement zugreifen. |
So verwenden Sie die Registerkarte Standard, um einer Datenbankrolle Zugriff auf ein Element in einer Dimension zu gewähren
Stellen Sie in SQL Server Management Studio eine Verbindung mit einer Instanz von Analysis Services her, erweitern Sie im Objekt-Explorer das Rollen-Element für die entsprechende Datenbank, und klicken Sie dann auf eine Datenbankrolle (oder erstellen Sie eine neue Datenbankrolle).
Klicken Sie im Bereich Seite auswählen auf Dimensionszugriff auf benutzerdefinierte Daten, wählen Sie die Dimension in der Liste Dimension aus, und wählen Sie dann auf der Registerkarte Erweitert die Option Attribut zulassen aus.
Durch das Auswählen dieser Option wird die IsAllowed-Eigenschaft auf True festgelegt.
Wählen Sie in der Liste Attribut das Attribut aus, für das Sie die Elemente angeben möchten, die von der Datenbankrolle angezeigt werden sollen.
Wenn Sie bestimmten Attributelementen den Zugriff explizit verweigern möchten, geben Sie im Feld Verweigerte Elementgruppe den MDX-Ausdruck für diese Attributelemente ein. Alle anderen Attributelemente können angezeigt werden.
- Wenn Sie nur bestimmten Elementen den Zugriff explizit gewähren möchten, geben Sie im Feld Zulässige Elementgruppe den MDX-Ausdruck für diese Attributelemente ein. Es können keine anderen Attributelemente angezeigt werden.
So verwenden Sie die Registerkarte Erweitert, um einer Datenbankrolle Zugriff auf ein Element in einer Dimension zu gewähren
Stellen Sie in SQL Server Management Studio eine Verbindung mit einer Instanz von Analysis Services her, erweitern Sie im Objekt-Explorer das Rollen-Element für die entsprechende Datenbank, und klicken Sie dann auf eine Datenbankrolle (oder erstellen Sie eine neue Datenbankrolle).
Klicken Sie im Bereich Seite auswählen auf Dimensionszugriff auf benutzerdefinierte Daten, wählen Sie die Dimension in der Liste Dimension aus, und wählen Sie dann auf der Registerkarte Erweitert die Option Attribut zulassen aus.
Durch das Auswählen dieser Option wird die IsAllowed-Eigenschaft auf True festgelegt.
Wählen Sie in der Liste Attribut das Attribut aus, für das Sie die Elemente angeben möchten, die von der Datenbankrolle angezeigt werden sollen.
Wenn Sie bestimmten Attributelementen den Zugriff explizit verweigern möchten, geben Sie im Feld Verweigerte Elementgruppe den MDX-Ausdruck für diese Attributelemente ein. Alle anderen Attributelemente können angezeigt werden.
Wenn Sie nur bestimmten Elementen den Zugriff explizit gewähren möchten, geben Sie im Feld Zulässige Elementgruppe den MDX-Ausdruck für diese Attributelemente ein. Es können keine anderen Attributelemente angezeigt werden.