zondag 25 december 2022

Do you like the image you see?

 


Windows Spotlight: dagelijkse achtergrondverrassing op je vergrendelscherm

Windows Spotlight is een standaardfunctie in Windows 10 en 11 die automatisch achtergrondafbeeldingen op je vergrendelscherm toont. Deze beelden worden dagelijks opgehaald via Bing en variëren van natuur- en stadsgezichten tot abstracte fotografie. Af en toe kunnen gebruikers aangeven of ze een bepaalde afbeelding mooi vinden, waarna Spotlight soortgelijke foto's toont. Sinds 2017 voegt Microsoft ook locatie-informatie toe aan veel van deze afbeeldingen.

Opvallend: tot nu toe is er slechts één Nederlandse afbeelding opgenomen – een foto van Doesburg.

Waar vind je de Spotlight-afbeeldingen?

  • Huidige afbeelding op het lockscreen:
    C:\ProgramData\Microsoft\Windows\SystemData\<SID>\ReadOnly\LockScreen_O

  • Eerdere afbeeldingen (cache):
    %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets

Je kunt de bestanden in de map Assets kopiëren en voorzien van de extensie .jpg om ze als gewone

zondag 18 december 2022

Runbook, run!

 


Automatisch toegang verlenen tot een Enterprise Application via Azure Automation

Dit blog beschrijft hoe je automatisch toegang kunt verlenen aan gebruikers tot een Enterprise Application, zoals die wordt gebruikt voor awareness-trainingen en phishing-tests.


De Enterprise Application is een online applicatie of website. In de instellingen is Single Sign-On geconfigureerd op basis van SAML (Security Assertion Markup Language), gekoppeld aan de Azure-omgeving.


In Azure wordt hiervoor een zogenaamde Enterprise Application ingericht. Je kunt hiervoor een eigen applicatie registreren via App registrations, of een bestaande kiezen uit de lijst met Enterprise Applications. De registratie creëert een application object in Azure AD, en daarnaast een uniek Service Principal Object, waarmee je toegang tot resources configureert.



Toegang beheren: gebruikers en groepen

Aan een Enterprise Application kunnen gebruikers of groepen worden gekoppeld, afhankelijk van je Azure AD-licentieplan. De beschikbare plannen zijn: Free, Office 365 Apps, Premium P1 en Premium P2. Met een Free-plan krijg je een foutmelding bij het toevoegen van groepen; je kunt dan alleen individuele gebruikers toevoegen.



Dat is onpraktisch: groepslidmaatschap maakt het mogelijk om toegang automatisch te regelen. Zonder deze optie moet je telkens handmatig gebruikers toevoegen aan de Enterprise Application — foutgevoelig en bewerkelijk. Gelukkig is er een alternatief: Azure Runbooks. 


Azure Runbooks als oplossing

Een Azure Runbook is een script dat draait in de Azure-cloud via een Azure Automation Account. Het Automation Account heeft toegang tot resources binnen de tenant, via rollen en modules. PowerShell en Python worden beide ondersteund. Na configuratie en planning wordt het script automatisch uitgevoerd op een Hybrid Worker.


Benodigdheden

Voor deze aanpak heb je het volgende nodig:

  • Een actief Azure-abonnement

  • Een Azure Automation Account

  • Een resource group (voor opslag en gebruiksminuten)

  • Een script dat je wilt uitvoeren

De eerste 500 minuten per maand zijn inbegrepen bij je abonnement.


Doe het volgende:

1.      Login op https://portal.azure.com

2.      Zoek “Automation accounts” op.

3.      Maak een Automation Account aan.

a.      Geef een passende naam op.

b.      Kies je abbonement.

c.      Maak een resource group aan.

d.      Wacht even tot hij is aangemaakt.

4.                                                 - Open het Azure Automation Account.
                         - Selecteer “Modules” om de nodige Powershell modules toe te voegen. Klik “Browse gallery”.
                                            - Installeer de “AzureAD” module.

Het Azure Automation Account is nu klaar voor gebruik.


Authenticatie: het Run As-account rechten geven

Azure maakt bij het aanmaken van een Automation Account automatisch een Run As-account aan. Dit is een Service Principal, en moet over de juiste rechten beschikken.

Noteer het Service Principal Object ID van het Run As-account (te vinden onderaan de accountpagina). Je geeft deze service principal de rol User Administrator via PowerShell.



Verbind eerst met Azure AD:
Connect-AzureAD


Sla vervolgens het Object ID van het Run As-account op:
$servicePrincipalObjectId = "f1d4a7b7-1111-4cf6-xxxx-xxxxxxxxxxxx"


Ken vervolgens de juiste rol toe:
Add-AzureADDirectoryRoleMember -ObjectId (Get-AzureADDirectoryRole | Where-Object {$_.DisplayName -eq "User Administrator"}).ObjectId -RefObjectId $servicePrincipalObjectId


Users toekennen aan de Azure AD application met Powershell

We beginnen hier ook met het het ophalen van de Service Principal, maar dan van de Enterprise Application waar we users aan willen toekennen.

# Connect to Azure AD

Connect-AzureAD

# Get the service principal for the app you want to assign the user to

$servicePrincipal = Get-AzureADServicePrincipal -Filter "Displayname eq ' KnowBe4 Security Awareness Training"


Gebruikers automatisch toevoegen via PowerShell

Verbind met Azure AD:
Connect-AzureAD


Haal de service principal op van de applicatie:
$servicePrincipal = Get-AzureADServicePrincipal -Filter "Displayname eq 'KnowBe4 Security Awareness Training'"


Vraag vervolgens op welke gebruikers al zijn gekoppeld aan deze applicatie:
$existingUsers = Get-AzureADServiceAppRoleAssignment -All $true -ObjectId $servicePrincipal.ObjectId | Select -ExpandProperty PrincipalId


Verzamel alle gebruikers met een Office 365-licentie:
$licensedUsers = Get-AzureADUser -All $true | Where-Object {$_.AssignedLicenses} | Select DisplayName, ObjectId


Vergelijk beide lijsten om nieuwe gebruikers te bepalen:
$newUsers = $licensedUsers | Where-Object { $_.ObjectId -notin $existingUsers }


Maak een lijst van uit te sluiten accounts (zoals serviceaccounts):
[System.Collections.ArrayList]$ExcludedUsers = @()


Definieer de te negeren Object IDs:
$ExcludedObjectIDs = @( "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "...", "...")


Vul de lijst:
foreach ($obj in $ExcludedObjectIDs) { $val = [pscustomobject]@{'ObjectId'=$obj}; $ExcludedUsers.add($val) | Out-Null; $val=$null }


Filter deze uit de nieuwe gebruikers:
$RestUsers = $newUsers | Where-Object { $_.ObjectId -notin $ExcludedUsers.ObjectId }


Voeg vervolgens de gefilterde gebruikers toe aan de Enterprise Application:

Nu ga ik de users in de variable $newUsers ontdoen van die in de variabele $ExcludedUsers.

# Filter out excludedusers

$RestUsers = $newUsers | Where-Object { $_.ObjectId -notin $ExcludedUsers.ObjectId }


In de variable $RestUsers zitten de nieuwe users die ik wil toevoegen aan de Enterprise Application. Dat doe ik met onderstaande

ForEach ($user in $RestUsers) {
  Try {
    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $servicePrincipal.ObjectId -Id $servicePrincipal.AppRoles[0].Id -ErrorAction Stop
    [PSCustomObject]@{UserPrincipalName = $user.DisplayName; ApplicationAssigned = $true}
  }
  Catch {
    [PSCustomObject]@{UserPrincipalName = $user.DisplayName; ApplicationAssigned = $false}
  }
}


De losse stappen voegen we samen tot 1 script en dit kunnen we in het runbook plaatsen.

Runbook, run!


Het script plaatsen in een Runbook

Ga naar je Automation Account en navigeer naar Runbooks. Volg deze stappen:

  1. Klik op Create Runbook

     

  2. Geef het een duidelijke naam

  3. Kies PowerShell als type

  4. Selecteer versie 5.1 (andere versies zijn experimenteel)

  5. Klik op Create



In de editor kun je nu het volledige script plakken. Onder Cmdlets zie je de beschikbare commando’s. Onder Assets staan herbruikbare elementen zoals credentials en variabelen.


Testen, opslaan en plannen

Klik op Test pane om een testuitvoering te starten. Als het script correct werkt, klik je op Save. Daarna publiceer je het via Publish.

Wil je het script periodiek draaien? Voeg dan een schema toe via Schedules. Kies bijvoorbeeld donderdag om 05:00 uur in de ochtend. Geef het een logische naam, zoals Weekly Schedule.



Tot slot

Je hebt nu een werkend, geautomatiseerd proces om gebruikers toe te voegen aan je Enterprise Application via een Azure Runbook.

Een veilige manier om gebruikers per e-mail te rapporteren (zonder SendGrid) ontbreekt voorlopig nog — daar kom ik in een toekomstige post op terug.

Laat het weten als je dit als document, scriptbestand of markdown-export nodig hebt!

 

zondag 11 december 2022

Six side fumbling hydrocoptic marzelvanes


De Rockwell Automation Retro Encabulator is een legendarische spoof uit 1997 op promotievideo’s voor technische apparatuur, bekend om hun overvloed aan jargon en technobabbel. In slechts twee minuten vuurt een vlot babbelende presentator een stroom aan ogenschijnlijk Engelse termen af — woorden die misschien vertrouwd klinken, maar volkomen onbegrijpelijk zijn. Laat staan te vertalen.

“Now, basically the only new principle involved is that instead of power being generated by the relative motion of conductors and fluxes, it’s produced by the modial interaction of magneto-reluctance and capacitive diractance. [...]”

Wat volgt is een briljante aaneenschakeling van technische nonsens over prefabulated amulite, hydrocoptic marzelvanes, een panametric fan en een non-reversible tremie pipe, met als hoogtepunt de dingle arm — die uiteraard noodzakelijk is bij barescente skor-bewegingen.

Ik verwijs er nog wel eens naar als ik kennismaking maak met een nieuw technologisch snufje. Het filmpje staat namelijk niet op zichzelf: het bouwt voort op een satirisch stuk dat in 1944 door Engelse studenten werd geschreven. Dat stuk werd in 1946 opgepikt door Time Magazine, waarna ingenieurs bij General Electric er zelfs een spoof-datasheet van maakten — alsof het een serieus product betrof.

In 1977 nam Bud Haggart, bekend van industriële trainingsfilms, de eerste “commercial” op voor de originele Turbo Encabulator. Twintig jaar later volgde de Retro Encabulator, vertolkt door Mike Kraft, die het genre tot in perfectie wist te parodiëren.

Onlangs verscheen er een derde video, over de zogenaamde Hyper Encabulator, met een inmiddels grijsharige Mike Kraft. Maar eerlijk is eerlijk: die haalt niet het briljante niveau van zijn voorgangers.

En mocht iemand u na het zien van de video nog steeds vragen: “Wat is een dingle arm?”, dan kunt u voortaan vol overtuiging antwoorden:

“Een uitbreiding op de turbo-encabulator, die ingezet wordt wanneer barescente skor-beweging vereist is.”


zondag 4 december 2022

You wouldn't download an image, would you?

Ik ben oldskool en lees mijn RSS-feeds nog altijd graag via Outlook. Wat me de laatste tijd opvalt, is dat steeds meer feeds grote afbeeldingen in hun berichten opnemen. Daardoor moet ik vaak flink scrollen voordat ik eindelijk bij de daadwerkelijke tekst kom.

Gelukkig heeft Outlook een optie om het automatisch downloaden van afbeeldingen in RSS-feeds uit te schakelen — al zit die instelling wel een beetje verstopt. Zo stel je het in:

Afbeeldingen in RSS-feeds uitschakelen in Outlook:

  1. Open Outlook en klik op Bestand in de menubalk.

  2. Kies in het linker menu voor Opties.

  3. In het venster dat verschijnt, ga je aan de linkerkant naar Vertrouwenscentrum.

     

  4. Klik aan de rechterkant op Instellingen voor het Vertrouwenscentrum.

  5. Ga naar het tabblad Automatisch downloaden.

  6. Schakel het selectievakje Downloads toestaan in RSS-items uit.

Vanaf nu worden afbeeldingen niet meer automatisch geladen in je RSS-berichten, wat het lezen weer een stuk prettiger maakt.