Dynamische Dimensionssicherheit

7

Ich habe einen Würfel in SSAS 2012 mit ungefähr 30 Dimensionen, von denen eine ist Company.

Die CompanyDimension enthält eine Liste von Unternehmen, von denen sich mehrere hundert im Cube befinden. Unser Sicherheitsmodell erfordert, dass Benutzer nur für die CompanyWerte sichtbar sind, denen sie zugewiesen wurden.

In unserer SQL Server-Umgebung steuern wir diesen Zugriff über eine Reihe von Funktionen, die JOINin VIEWs beschrieben sind. Die Funktionen geben eine Tabelle mit allen CompanyWerten zurück, die zum Filtern der Ergebnisse verwendet wird.

Zum Beispiel:

CREATE VIEW dbo.FakeView
AS
SELECT d.*
FROM FunctionToGetAccess(SYSTEM_USER) f
INNER JOIN DataTable d
    ON d.CompanyID = f.CompanyID

Gibt es für mich eine Möglichkeit, diese Logik oder eine ähnliche Logik auf die Sicherheit auf Dimensionsebene in SSAS zu portieren?

Ein paar Anmerkungen:

  • Der Würfel wird über Nacht wieder aufgebaut
  • Die Sicherheit muss nicht stündlich aktuell sein, sondern sollte während der Cube-Verarbeitung über Nacht erneut verarbeitet werden
  • Ich würde es dringend vorziehen, die Liste der Benutzer und zugelassenen Clients nicht in eine Tabelle oder Dimension einfügen zu müssen
JNK
quelle

Antworten:

3

Sie müssen Ihre Skrupel überwinden und die Liste der Benutzer und zugelassenen Clients in einer Dimension materialisieren und dann Sicherheit auf diese Dimension anwenden. Wenn Sie über Enterprise Edition verfügen, können Sie die Dimension vor den Benutzern verbergen.

Mike Honey
quelle