Azure Office 365 SharePoint

Azure Information Protection Scanner – Installatie – Configuratie – Runnen

5 april 2018

Dit is deel twee van de serie blogs over Azure Information Protection. In deze blog gaan we de Azure Information Protection Scanner installeren, configureren en testen.Dit laat ik zien aan de hand van een boodschappenlijstje en een stappenplan.

Wat ik in deze blog niet laat zien zijn randvoorwaardelijke zaken zoals hoe je een Azure Protection Policy label aanmaakt of hoe je log on as a service privileges zet.

Indien je nog eens wilt nalezen wat de Azure Information Protection (AIP) of de AIP-Scanner precies is en hoe Microsoft deze positioneert binnen haar information protection suite lees dan het eerste deel: To protect & to serve! Azure Information Protection Scanner to the rescue!

Het boodschappenlijstje

De benodigde (virtuele) hard- en software:

  • 1 Windows Server:
    • Windows Server 2016 of Windows server 2012 R2
    • 4 processoren en 4Gb RAM
  • 1 SQL Server:
    • SQL Server 2012 (Enterprise, Standard….of eventueel Express)

De benodigde Accounts:

  • 1 Service account
    • Service account om de service te runnen
    • Het service account moet een AD account zijn dat gesynchroniseerd wordt naar Azure AD.
    • Privileges:
      • Log On Locally
      • Log On as a service
      • Lees- (en eventueel schrijf) rechten op de data repositorie
      • Super User voor de Azure Rights Management Service
  • Database accounts
    • Het account dat de scanner installeert moet member zijn van de db_datawriter rol. Tijdens de installatie wordt het te gebruiken serviceaccount toegevoegd aan db_owner rol van de nieuwe database.
    • OF
    • Handmatig de AzInfoProtectionScanner database aanmaken en het serviceaccount toevoegen aan de db_owner rol.

Azure Information Protection Scanner

Geconfigureerd(e) label(s)

  • Er dient minimaal 1 label te zijn dat geconfigureerd is voor automatische classificatie, en eventueel, bescherming.
  • De labels mogen óf in de global policy zijn aangemaakt óf in een scoped policy.

Installatie

De eerste stap die we gaan doen is het boodschappenlijstje nog eens doorlezen. Heb je echt alles gedaan? Ja? Mooi dan gaan we beginnen…en dan zien we straks wel wat we vergeten zijn (bijvoorbeeld de Azure Information Protection Scanner installeren (AzInfoProtectionScanner.exe).

Installeer de Azure Information Protection Scanner (Service)

  1. Log in op de Windows server.
  2. Start Windows Powershell (Run as an administrator) en run het commando:

    [code language=”powershell”]
    Install-AIPScanner -SqlServerInstance ‘your-databasename’
    [/code]

    • For a default instance:

    [code language=”powershell”]
    Install-AIPScanner -SqlServerInstance SQLSERVER1
    [/code]

    • For a named instance:

    [code language=”powershell”]
    Install-AIPScanner -SqlServerInstance SQLSERVER1\AIPSCANNER
    [/code]

    • For SQL Server Express:

    [code language=”powershell”]
    Install-AIPScanner -SqlServerInstance SQLSERVER1\SQLEXPRESS
    [/code]

  3. Vul de credentials in van het service account.
  4. De service en de database worden nu aangemaakt en geconfigureerd.Install AIP Scanner
  5.  Controleer dat de service geconfigureerd is. Ga naar Administrative Tools > Services en controleer of er een service is genaamd: Azure Information Protection Scanner.

AIP_Service_Services

Geweldig! De service is nu geïnstalleerd!

Configuratie

Het is nu tijd voor het af configureren. Pak een lekkere kop koffie en let’s go!

De configuratie is niet heel erg moeilijk maar wel een secuur werkje. Wat voor sommige, in elk geval voor mij, wellicht lastiger is, is om te begrijpen waar je nu eigenlijk mee bezig bent 😉

We gaan het volgende commando uitvoeren:

[code language=”powershell”]
Set-AIPAuthentication`
-webAppId ‘ID of the "Web app / API" application’`
-webAppKey ‘key value generated in the "Web app / API" application’`
-nativeAppId ‘ID of the "Native" application’
[/code]

Met dit commando zetten we de juiste credentials voor de AIP client. Probleem is alleen dat er geen credentials opgegeven kunnen worden in de vorm van een username/ password combinatie maar op basis van tokens. Dan gaan we dus zorgen dat we die tokens krijgen! Dit doen we door 2 applicaties te registreren in Azure AD:

  • 1 Web App API applicatie;
  • 1 Native applicatie.

Doorloop de volgende stappen zorgvuldig!

  1. Login op de azure portal (https://portal.azure.com)
  2. Navigeer naar Azure Active Directory > App Registrations
  3. Selecteer New Application Registration klik op create. Geef de volgende waarden op:
    1. Name: AIPOnBehalfOf (of elke andere unieke naam)
    2. Application Type: Web app/ API
    3. Sign-on URL: http://localhost
    4. Je hebt nu je eerste ID voor het uit te voeren commando: Application ID dat we gebruiken voor WebAppId:

      [code language=”powershell”]
      Set-AIPAuthentication`
      -webAppId ‘4c666b50-32dg-3rc6-b527-539ytd5098r2 (yep dit zijn fictieve waarden)’`
      -webAppKey ‘key value generated in the "Web app / API" application’`
      -nativeAppId ‘ID of the "Native" application’
      [/code]

       

      aip on behalf of

  4. Ga naar de settings blade en selecteer Required permissions. Selecteer:
    1. Grant Permissions: YES
  5.  Ga naar de settings blade en selecteer Keys. Voeg een nieuwe Key toe en selecteer hoe lang deze geldig moet zijn (1 jaar, 2 jaar of never expires).LET NU GOED OP!!!! Klik op Save en kopieer de tekst van het veld Value. Dit is blijkbaar de enige keer dat je deze waarde te zien krijgt en deze kan niet opgevraagd worden. We hebben nu de 2de waarde voor ons commando namelijk: WebAppKey:

    [code language=”powershell”]
    Set-AIPAuthentication`
    -webAppId ‘4c666b50-32dg-3rc6-b527-539ytd5098r2 (yep dit zijn fictieve waarden)’`
    -webAppKey ‘tKd+ERWERLKDFKLWkejrk56445wedke=’`
    -nativeAppId ‘ID of the "Native" application’
    [/code]

  6. Selecteer weer New Application Registration in Azure AD klik op create. Geef de volgende waarden op:
    1. Name: AIPClient (of elke andere unieke naam)
    2. Application Type: Native
    3. Sign-on URL: http://localhost
    4. Je hebt nu het laatste ID! Vul het Application ID van deze Native applicatie in bij NativeAppID.

      AIP CLient

      
      

      [code language=”powershell”]
      Set-AIPAuthentication`
      -webAppId ‘4c666b50-32dg-3rc6-b527-539ytd5098r2 (yep dit zijn fictieve waarden)’`
      -webAppKey ‘tKd+ERWERLKDFKLWkejrk56445wedke=’`
      -nativeAppId ‘f99345r4-32fr-656f-1234-a0er99rtg111’
      [/code]

  7. Ga naar de settings blade en selecteer Required permissions.
  8. Klik Add en klik Select an API. Zoek naar de eerste applicatie die je hebt aangemaakt. In ons geval AIPOnBehalfOf. Klik Select en dan op Done.
  9. Op de Enable Access blade selecteer weer de eerder aangemaakte applicatie in ons geval AIPOnBehalfOf. Klik Select en klik Done.
  10. Op de Required permissions blade. Selecteer:
    1. Grant Permissions: YES

We hebben het benodigde commando!:

[code language=”powershell”]
Set-AIPAuthentication`
-webAppId ‘4c666b50-32dg-3rc6-b527-539ytd5098r2 (yep dit zijn fictieve waarden)’`
-webAppKey ‘tKd+ERWERLKDFKLWkejrk56445wedke=’`
-nativeAppId ‘f99345r4-32fr-656f-1234-a0er99rtg111’
[/code]

Run dit commando onder de context van het account dat het labellen en beschermen daadwerkelijk gaat uitvoeren.  Bijvoorbeeld het service account.

Zo! Neem nu maar eens slok van die koffie.

Data store

De service is inmiddels geïnstalleerd en geconfigureerd! Nu moeten we nog opgeven welke locatie(s) er gescand moeten worden.

Dit doe je met het PowerShell commando:

[code language=”powershell”]
Add-AIPScannerRepository -Path ‘path’
[/code]

Path kan in een UNC pad zijn maar bijvoorbeeld ook een directory op de server zelf.

[code language=”powershell”]
Add-AIPScannerRepository -Path d:\aipscannertest
[/code]

Doe dit voor alle locaties die je wilt laten scannen.

Zorg er wel voor dat het service account minimaal leesrechten heeft op deze locatie(s)!!

Met het commando Get-AIPScannerRepository kun je controleren welke data store(s) er geconfigureerd zijn. Uiteraard kun je ook een data store verwijderen met het commando: Remove-AIPScannerRepository.

Discovery cycle

Het is zover we gaan de eerste discovery cycle draaien!

Ga naar Services. Selecteer de Azure Information Protection Scanner service en start de service!

AIP_Service_Services

Wacht totdat de scanner klaar is met de cyclus. Wellicht moet je de status een keer verversen.

Het resultaat vind je in de volgende locatie:

C:\Users\SERVICEACCOUNT\AppData\Local\Microsoft\MSIP\Scanner\reports

Hier staat een txt bestand met een samenvatting en een csv bestand met detail gegevens.

AIP Result

Conclusie

Persoonlijk vind ik dit enorm interessante materie en geeft maar weer eens aan hoe ontzettend breed ons vakgebied is. Dat vind ik helemaal niet erg. Het maakt dat geen enkele dag hetzelfde is. Ik zie wel dat deze oplossing nog in de kinderschoenen staat en ik verwacht dan ook dat er enorm veel updates gaan komen vanuit Microsoft. Mijn eerste installatie ging niet vlekkeloos. Dit had onder andere te maken met het feit dat ik het boodschappenlijstje niet goed had opgevolgd. Ook kwamen er links en rechts nog wat onverwachte apen om de hoek kijken. Na het verhelpen van deze issues viel me 1 ding op. De snelheid. Scannen van tientallen gigabytes is binnen een paar minuten geregeld. Ik zal dit naar de toekomst toe nog meer gaan testen.

Troubleshooting

Het klinkt simpel, en dat is het eigenlijk ook. Helaas liep ik bij mijn eerste run tegen een aantal foutmeldingen aan.


Installatie

Bij installatie van de AIP Scanner had ik eerst handmatig de database aangemaakt en kreeg vervolgens de foutmelding:
CREATE TABLE PRIVILIGES DENIED
Vervolgens deze database verwijderd en deze door de scanner laten aanmaken. Met als resultaat:
CREATE DATABASE PRIVILEGES DENIED

Het bleek dat de accounts toch niet de benodigde rechten hadden #faal. Het installeren met een vooraf aangemaakte database heb ik niet meer getest.

Data store

Het runnen van het commando Add-AIPScannerRepository resulteerde ook in een foutmelding die aangaf dat ik geen rechten had op de database….logisch want alleen het service account het de benodigde rechten en mijn persoonlijke account nog niet.

Configuratie

Geen issues.

Discovery cycle

Ai…daar kreeg ik behoorlijk wat meldingen om mijn oren.
• Service account bleek toch niet excpliciet rechten te hebben op de Azure AD applicaties
• Policy die ik had aangemaakt bleek niet op automatic te staan (…en ik had het boodschappenlijstje gewoon bij de hand….grmbl)
• Verschillen in datum formaten op de verschillende machines. Microsoft… werkelijk?
• Service voor de tweede keer starten gaf de volgende melding
AIP Service Started Stopped
Logisch! Want we hadden de scanner geconfigureerd om 1 keer te draaien. Wanneer je in de database gaat kijken zie je bij Schedule de waarde 2 staan. 0 is de waarde voor OneTime
aip_conf_db_onetime Met het volgende commando zet je deze weer goed en kun je de service starten.
setaipscanner_Onetime

Hieronder volgen nog een aantal meldingen zoals ik die in de log had gevonden met hierbij een korte uitleg.

Error below was fixed by syncing date/time configurations on all machines.

Warn 2018-03-16 15:53:19.4056 MSIP.Policy MSIP.Scanner (15044) Failed to convert policy Timestamp “System.Threading.Tasks.Task`1.TrySetResult
System.Threading.Tasks.Task.FinishContinuations
System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction
System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run
System.Threading.ExecutionContext.Run
System.Threading.ExecutionContext.RunInternal
Microsoft.InformationProtection.ServiceClient.Bootstrapping.Bootstrapper+<BootstrapInformationProtectionService>d__64.MoveNext
Microsoft.InformationProtection.Scanner.ScannerBootstrapper.VerifiyScannerConfigured
Microsoft.InformationProtection.Scanner.ScannerBootstrapper.CopyPolicyToScannerFolder
Microsoft.InformationProtection.Policy.Policy.GetTimestamp” “System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.Convert.ToDateTime(String value)
at Microsoft.InformationProtection.Policy.Policy.GetTimestamp()”

The error below was fixed by adding the service account as owner of created azure ad applications
Warn 2018-03-16 14:53:24.9923 MSIP.Auth MSIP.Scanner (11776) Failed to acquire a token using windows integrated authentication “Microsoft.InformationProtection.Auth.AdalAuthenticationContext+<AcquireTokenAsync>d__12.MoveNext
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException
System.Threading.Tasks.Task`1.TrySetException
System.Threading.Tasks.Task.Finish
System.Threading.Tasks.Task.FinishContinuations
System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction
System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run
System.Threading.ExecutionContext.Run
System.Threading.ExecutionContext.RunInternal

Fixed this by setting the policy to AUTOMATIC
MSIP.Scanner MSIP.Scanner (10784)
Service was automatically stopped due to bad configuration: policy file doesn’t include any automatic labelling condition
“Microsoft.InformationProtection.ServiceClient.Policy.PolicyWebClient+<UpdatePolicyAsync>d__5.MoveNext

Error below was fixed by syncing date/time configurations on all machines.
Microsoft.InformationProtection.Policy.Policy.GetTimestamp” “System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.Convert.ToDateTime(String value)
at Microsoft.InformationProtection.Policy.Policy.GetTimestamp()

 

SQL Scripts

Controleren of een account lid is van een groep:

[code language=”sql” wraplines=”true”]
IF IS_ROLEMEMBER (‘db_datawriter’) = 1
print ‘Current user is a member of the db_datawriter role’
ELSE IF IS_ROLEMEMBER (‘db_datawriter’) = 0
print ‘Current user is NOT a member of the db_datawriter role’
ELSE IF IS_ROLEMEMBER (‘db_datawriter’) IS NULL
print ‘ERROR: The database role specified is not valid.’;
[/code]

 

Resources

You Might Also Like

Geen reacties

Plaats een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.