<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ixto-Blog &#187; Stefan Pacholski</title>
	<atom:link href="http://www.ixto.de/blog/author/spacholski/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ixto.de/blog</link>
	<description>Business Intelligence, Database Consulting, Software Development</description>
	<lastBuildDate>Mon, 26 Sep 2011 09:23:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Einrichten einer dynamischen Security für einen Cube-Zugriff via MS Excel</title>
		<link>http://www.ixto.de/blog/sql-server-2005/einrichten-einer-dynamischen-security-fur-einen-cube-zugriff-via-ms-excel/</link>
		<comments>http://www.ixto.de/blog/sql-server-2005/einrichten-einer-dynamischen-security-fur-einen-cube-zugriff-via-ms-excel/#comments</comments>
		<pubDate>Tue, 20 May 2008 07:30:13 +0000</pubDate>
		<dc:creator>Stefan Pacholski</dc:creator>
				<category><![CDATA[SQL Server 2005]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/sql-server-2005/einrichten-einer-dynamischen-security-fur-einen-cube-zugriff-via-ms-excel/</guid>
		<description><![CDATA[Oftmals ist es notwendig, dass Cube-Nutzer nur die für sie relevanten Daten sehen dürfen und nicht die Daten anderer Nutzer. In der Regel bietet es sich dafür an, den Benutzernamen aus der Windows-Anmeldung dynamisch zu übernehmen und auch für den Cube-Zugriff zu nutzen. Als Frontend für den Cube-Zugriff wird oftmals MS Excel verwandt, welches dabei [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Oftmals ist es notwendig, dass Cube-Nutzer nur die für sie relevanten Daten sehen dürfen und nicht die Daten anderer Nutzer. In der Regel bietet es sich dafür an, den Benutzernamen aus der Windows-Anmeldung dynamisch zu übernehmen und auch für den Cube-Zugriff zu nutzen. Als Frontend für den Cube-Zugriff wird oftmals MS Excel verwandt, welches dabei allerdings unerwartete Probleme mit sich bringt. Dieser Beitrag schildert die einzelnen Vorgehensschritte zur Umsetzung einer dynamischen Security anhand des Microsoft Beispielprojekts Adventure Works (AW), welches im MS SQL Server 2005 standardmäßig mitgeliefert wird und unter <em>…\Microsoft SQL Server\90\Tools\Samples\AdventureWorks Analysis Services Project\Standard</em> zu finden ist.</font></p>
<p><span id="more-34"></span><br />
<br\><br />
<strong><font face="Calibri">Vorgehensschritte am Beispiel Adventure Works<o:p></o:p></font></strong></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Voraussetzung zur Erprobung der dynamischen Security ist ein Windows-Benutzername (<em>Domäne\Name</em>) und ein äquivalenter Namenseintrag <span> </span>in der betreffenden Dimension. Dafür wird im Folgenden eine zusätzliche Spalte <em>RealAccount</em> in der <em>DIM</em> <em>Employee</em> erzeugt (<em>VPCPLAYIMAGE\Benutzername</em>), welche den Benutzernamen enthalten soll. Der Name ergibt sich hierbei aus der E-Mailadresse (aus AW) und muss dem Windows-Anmeldenamen entsprechen.</font></p>
<p><em><font face="Calibri">MS Visual Studio </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> AdventureWorks </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> AdventureWorks.dsv </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> DimEmployee (Kontextmenü)</font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> benannte Abfrage ändern: SELECT ergänzen um Spalte:</font></em></p>
<p>
<em><font face="Calibri"><o:p></o:p></font></em><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">&#8216;VPCPLAYIMAGE\&#8217; + <span style="color: blue">LEFT</span>(EmailAddress<o:p></o:p></span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">,<span style="color: blue">PATINDEX</span>(&#8216;%@%&#8217;, EmailAddress) &#8211; 1) <span style="color: blue">AS</span> RealAccount<o:p></o:p></span></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">In Windows soll nun der Beispielnutzer <em>VPCPLAYIMAGE\amy0</em> angelegt werden, welcher auch in AW zu finden ist (<em>Windows Computerverwaltung</em>).</font></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Im nächsten Schritt soll eine neue Rolle namens <em>DynamicEmployees</em> angelegt werden, in welcher für den neuen <em>RealAccount</em> Attributsicherheit definiert wird.</font></p>
<p><em><font face="Calibri">Rollen(Kontextmenü) </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Neue Rolle: DynamicEmployees </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Reiter: Mitgliedschaften </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> amy0 hinzufügen<o:p></o:p></font></em></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Im ersten Schritt soll die Attributsicherheit durch das dynamische Eintragen des Benutzernamens mittels der <em>Username</em>-Funktion als zulässige Elementgruppe wie folgt realisiert werden:</font></p>
<p><em><font face="Calibri">Rolle: DynamicEmployee</font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Reiter: Dimensionsdaten </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Dimension: AdventureWorks DW.Employee </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Attributhierarchie: RealAccount </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Reiter: Erweitert</font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Zulässige Elementgruppe</font></em></p>
<p>
<em><font face="Calibri"><o:p></o:p></font></em><span style="font-size: 10pt; color: blue; line-height: 150%; font-family: 'Courier New'">STRTOSET</span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">(&#8220;{[Employee].[Real Account].&amp;[" + UserName() + "]}&#8221;)<o:p></o:p></span></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Eine mögliche Erweiterung des vorigen Statements durch einen <em>UnknownUser</em> ist empfohlen, um bei Nichterkennen des Benutzernamens aus Sicherheitsgründen einen Nutzer ohne Rechte zu haben. Dieser Nutzer muss dementsprechend zuvor auch in AW angelegt werden (<em>VPCPLAYIMAGE\UnknownUser</em>). Die zugehörige Erweiterung lautet:</font></p>
<p><span style="font-size: 10pt; color: blue; line-height: 150%; font-family: 'Courier New'">IIF</span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">(<span style="color: blue">FILTER</span>([Employee].[Real Account].<span style="color: blue">MEMBERS<o:p></o:p></span></span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">,[Employee].[Real Account].<span style="color: blue">MEMBER_NAME</span> <span style="color: blue">UCASE</span>(UserName())).<span style="color: blue">COUNT</span>=0<o:p></o:p></span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">,<span style="color: blue">STRTOMEMBER</span>(&#8220;[Employee].[Real Account]. &amp;[VPCPLAYIMAGE\UnknownUser]&#8220;)<o:p></o:p></span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">,<span style="color: blue">STRTOMEMBER</span>(&#8220;[Employee].[Real Account].[" + UserName() + "]&#8220;))<o:p></o:p></span></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Bei Verwendung des MS SQL-Management Studios oder des MS Analysis Services internen Browsers wird nun bei Anmeldung durch einen Testnutzer (hier:<span>  </span><em>VPCPLAYIMAGE\amy0) </em>wie gewünscht<em> </em>der<em> </em>Nutzername und die Daten wie bspw. der <em>Reseller Sales Amount </em>nur für <em>amy0</em> und Personen höherer Hierarchie herausgegeben, wenngleich dieser für alle <em>Employees</em> abgefragt wurde.</font></p>
<p><span style="font-size: 10pt; color: blue; line-height: 150%; font-family: 'Courier New'">SELECT</span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'"> [Measures].[Reseller Sales Amount] <span style="color: blue">ON COLUMNS<o:p></o:p></span></span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'">,[Employee].[Employee].<span style="color: blue">MEMBERS ON ROWS <o:p></o:p></span></span><span style="font-size: 10pt; color: blue; line-height: 150%; font-family: 'Courier New'">FROM</span><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'"> [Adventure Works]</span></p>
<p><span style="font-size: 10pt; line-height: 150%; font-family: 'Courier New'"></span><strong><font face="Calibri">Anpassungen bei Zugriff durch MS Excel Frontend<o:p></o:p></font></strong></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Beim Zugriff auf den Cube mittels Excel gibt es hingegen nun ohne die Durchführung weiterer Maßnahmen ein Zugriffsproblem auf Namensebene. Bei der MS Excel-Variante besteht kein Zugriff auf die Parents und es wird somit ein Fehler hervorgerufen. Das Problem ist, dass MS Excel sich die kompletten Properties einschließlich der <em>Employees Parent-Child</em>-Beziehung holt, worauf der Nutzer keinen Zugriff hat. Somit wird im Unterschied zum Zugriff ohne MS Excel standardmäßig kein Zugriff auf <em>Employees</em> gewährt. Die Fehlermeldung lautet: „Die Abfrage oder das Öffnen der Tabelle konnte nicht durchgeführt werden. [..]“. Um die Mitgabe der Properties zu vermeiden, kann dieses unter MS Excel wie folgt durchgeführt werden: </font></p>
<p><em><font face="Calibri">MS Excel </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Daten: Verbindung mit Cube herstellen </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Optionen: Optionen </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Anzeige </font></em><em><span style="font-family: Wingdings"><span>à</span></span><font face="Calibri"> Kontextbezogene Quickinfos anzeigen (nein), Eigenschaften in Quickinfos anzeigen (nein)<o:p></o:p></font></em></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Somit sind die Properties ausgeschaltet und mittels MS Excel kann nun auch Zugriff auf <em>Employees</em> und die Daten des entsprechenden Nutzers gewährt werden. </font></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal"><font face="Calibri">Anhand dieser Vorgehensweise soll es möglich sein, mit einfachen Mitteln eine dynamische Security zu realisieren ohne einen gewaltigen Pflegeaufwand auf Nutzerebene hervorzurufen. </font></p>
<p style="margin: 18pt 0cm 10pt" class="MsoNormal">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2005/einrichten-einer-dynamischen-security-fur-einen-cube-zugriff-via-ms-excel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

