donderdag 17 december 2009

PerformancePoint applicatie security

In de voorbereiding van een PerformancePoint dashboard deployment, liepen we tegen een leuk security vraagstuk aan. Hoe gebruik je die gekke ‘Machtigingen’ die je bij ieder dashboard element in de Dashboard Designer tegenkomt?

image

Als je een nieuw dashboard element aanmaakt en je vinkt niet de optie Leesmachtingen verlenen aan alle gebruikers die zijn geverifieerd aan, wordt er maar één element rol uitgedeeld: de maker van het element krijgt Editor rechten (Redacteur in de Nederlandse versie; jugh, ik heb een hekel aan dat Nederlands, maar ja, als de klant een Nederlandstalige PerformancePoint wil, zit je er nu eenmaal in vast…) en dat is het dan. Tijdens het maken van het dashboard en het testen ervan, merk je niet dat je later last krijgt van een groot probleem…

image

Dit probleem treed namelijk op wanneer een ‘gewone gebruiker’, iemand zonder verdere rechten binnen PerformancePoint, het dashboard probeert te benaderen. Ook al heeft hij de rechten het dashboard te benaderen in SharePoint, door het ontbreken van de benodigde element rollen, krijgt hij geen toegang tot de dashboard elementen; vandaar bovenstaande foutmelding. Een groot probleem, want als je hier achter komt na het maken van vele dashboards, met tenminste evenveel scorecards, met daaronder een veelvoud aan KPI’s, rapporten, etc. dan wacht je een heel fijn klusje… Formeel moet je nu namelijk in Dashboard Designer alle dashboard elementen langs en tenminste één nieuwe machtiging opnemen.

Kan dit niet anders? Ja, het kan iets makkelijker, maar dit is een niet ondersteunde manier. Let dus goed op wat je doet, maak een back-up van de PPSMonitoring database voor je dit doet, test alles goed na afloop, en kom niet bij mij klagen wanneer je de boel op deze manier stuk maakt…:

  1. Open de Dashboard Designer workspace file (.bswx) in een gewone teksteditor (Visual Notepad bijv.).
  2. Zoek naar de tags <Memberships>.
  3. Voeg aan iedere tag een regel toe voor de gebruiker/groep die je rechten wilt geven. Hierna ziet de <Memberships>  tag er bijv. als volgt uit:

    <Memberships>
        <Membership Login="MOREINFO-5119B4\Administrator" Role="Editor" />
        <Membership Login="NT AUTHORITY\Authenticated Users" Role="Reader" />
    </Memberships>

    Op deze manier heeft Administrator editor rechten en alle andere gebruikers leesrechten.
  4. Open de .bswx file weer in Dashboard Designer.
  5. Markeer de verschillen tussen deze file en de server.

    image
  6. Publiceer alle items naar de server.

Met een beetje geluk heb je hiermee het probleem opgelost. Met een beetje geluk… want in mijn situatie hield ik een probleem met een data source die ondanks alles wat ik probeerde toegangsproblemen bleef houden. Terwijl ik dat probleem niet kon reproduceren door een vergelijkbaar dashboard opnieuw vanaf scratch op te bouwen. If it looks like a bug, it often is, zullen we maar denken. Dat brengt mij op een tweede antwoord op de vraag “kan dit nou niet anders”. En dat is: maak gebruik van de Power Reader server rol in PerformancePoint Monitoring Server. Door de gewenste groep(en) of gebruiker(s) deze rol te geven, krijgen deze groepen/gebruikers leesrechten op alles wat in PerformancePoint Monitoring Server staat. Iets gevaarlijker en minder flexibel dus. Maar het werkt wel, het is snel en gemakkelijk. En gevaarlijk, ach, wie heeft er echt behoefte aan beveiliging op element niveau? De toegang tot een dashboard regel je binnen SharePoint, data kun je nog op Analysis Services of SQL Server niveau beveiligen, dus ik zie de beperking niet zo.

image

Maar het beste kun je in mijn optiek jezelf aanleren altijd de eerder genoemde optie Leesmachtingen verlenen aan alle gebruikers die zijn geverifieerd aanvinken bij het maken van een nieuw dashboard element. Want ook die optie werkt uitstekend, je bent altijd nog in de gelegenheid de beveiliging strikter te maken en je hoeft niet te grijpen naar de wat bottere methode van de Power Reader rol.

image

Meer informatie over dit onderwerp: