Vid utveckling av applikationer i SharePoint Online finns hänsyn som måste tas till styrningen av användarrättigheter vilka i sin tur ger påverkan på informationssäkerheten.
Ett exempel är hur rättigheter för listor i SharePoint fungerar. Till skillnad från många andra utvecklingsplattformar går det inte att sätta rättigheter på enskilda fält i SharePoint Online, vilket innebär att alla som kan redigera ett dokument kan
redigera samtliga fält i detta.
Det går självklart att förhindra redigering av vissa fält eller andra operationer i applikationens gränssnitt, baserat på vilken användare som är inloggad, men det man måste komma ihåg är att applikationen är helt klientbaserad och kör i webbläsaren. Bara för att en användare inte ser en viss knapp i gränssnittet innebär det inte ett hinder för att utföra en viss åtgärd om användaren är tekniskt bevandrad. Oavsett om något är dolt i gränssnittet eller inte skulle en tekniskt bevandrad användare antingen kunna gå direkt till den bakomliggande listan och göra ändringar, eller göra anrop direkt mot SharePoint Online.
En lösning på problemet är att bygga applikationen så att alla användare enbart har läsrättigheter direkt till SharePoint-listan där data finns lagrad, och sedan använda sig av kod i Azure Functions för att styra rättigheter till att göra uppdateringar.
Fördelen är att koden som kör i Azure Functions kan ha en högre behörighet än användaren som anropar funktionen och man kan sedan, baserat på vem användaren är, avgöra vilka grupptillhörigheter denne har och/eller värden på fält avgöra om denne har tillgång till att se eller redigera ett visst fält eller inte.
En möjlighet finns då att sätta upp ett antal grupper i SharePoint där varje grupp motsvarar en roll i applikationen. Åtkomst till olika operationer i applikationen kan begränsas genom att titta på om en användare tillhör en viss grupp. Detta görs hela tiden via Azure Functions, vilket gör att ingen användare kan få direktåtkomst till data eftersom de inte går direkt mot datakällan.
För att säkerställa att rätt knappar visas i gränssnittet samt att rätt användare kan utföra olika operationer rekommenderas automatiserade tester som komplement till de manuella. Dessa skrivs i form av skript där olika scenarion för applikationen kan testas, d.v.s. kombinationer av dokumentstatus, inloggad användare och grupptillhörigheter.
Vad är Azure Functions?
Azure Functions är Microsofts implementation av ’server-less computing’: det är en metod för att exekvera kod direkt i molnet utan att behöva en virtuell server eller annan miljö. Koden kan anropas från SharePoint Online och körs antingen med den nuvarande användarens rättigheter eller förhöjda rättigheter.
Det som gör detta lämpligt för att ändra i dokument, godkänna ändringar samt styra behörighet baserat på status, är att Azure-funktionen själv kan räkna ut vem som får göra vad, helt utan möjlig påverkan från användaren. Dessa åtkomstvillkor villkor kan helt definieras i Azure-funktionen och kan vara mycket mer komplexa än de rättigheter som är standard i SharePoint Online.