“Your connection is not private!”

Een geldig certificaat plaatsen op je testomgeving in minder dan 5 minuten tijd? Het kan. En Alain de Klerk, een van onze Managing Directors & SharePoint Architect, legt het je snel uit:

“Bij de ontwikkeling van een nieuw IT-product of -oplossing maken we vaak van tevoren een proof-of-concept, een testomgeving en/of een acceptatie-omgeving. Op die manier kunnen we gebruikers al in een vroeg stadium betrekken bij het ontwikkelingsproces en hen om hun mening vragen.

In veel gevallen zie ik dat men aan gebruikers vraagt om de ‘SSL warning’ (of SSL-waarschuwing) te negeren op de testomgeving bij het testen van een webapplicatie. De ontwikkelaar of beheerder heeft simpelweg nog geen certificaat geïnstalleerd of gebruikt een zogenaamd self-signed certificate. En ik moet eerlijk bekennen dat ik zelf hier ook schuldig aan was.

Echter leren we gebruikers op deze manier een gedrag aan om waarschuwingen te negeren; die waarschuwing is er natuurlijk niet voor niets. Daarom laat ik zien dat je in 5 minuten, zonder kosten, een valide certificaat kan aanvragen bij een legitieme Certificate Authority. Dit gaan we doen met PowerShell en ACME; PoSh-ACME (https://poshac.me/docs/v4/).

De eerste stap is om een API Token aan te maken in Cloudflare. Wanneer je nog geen Cloudflare account hebt dan kan je deze gratis aanmaken.

De precieze stappen om een API Token aan te maken staan hier beschreven. Naast Cloudflare worden er ook tal van andere DNS-aanbieders ondersteund. De volledige lijst vind je hier

Vervolgens openen we een Microsoft PowerShell-venster en voeren we de volgende commando’s uit:

Het laatste commando opent de Windows Verkenner en toont de locatie waarin het certificaat is opgeslagen. Dit certificaat kun je vervolgens gebruiken om de applicatie in je testomgeving te beveiligen. En voilà… een valide certificaat op je testomgeving in minder dan 5 minuten tijd!”

Zo organiseer je individuele licenties met Microsoft PowerShell

Wij maken bij Etesian veelvuldig gebruik van Microsoft365 diensten en daarvoor zijn natuurlijk licenties nodig. Deze licenties kenden we voorheen toe aan iedere collega. Eind 2018 kondigde Microsoft aan dat we gebruik konden maken van groepslicenties (group based licensing).

Kortgezegd betekent dit dat je licenties kunt toekennen op basis van groepslidmaatschap in plaats van aan individuele gebruikers. Dit maakt het beheer van licenties een stuk gemakkelijker.

Echter waren we wel vergeten om onze individueel toegekende licenties netjes op te ruimen. Tijd voor een Microsoft PowerShell script! Het resultaat van het PowerShell script is een comma separated bestand zoals in onderstaand voorbeeld:

Dit bestand hebben we vervolgens gebruikt om onze licenties te organiseren.

Het PowerShell script is gebaseerd op het script dat door Microsoft zelf beschikbaar wordt gesteld. Tevens maken we dankbaar gebruik van de lijst die door Brad Wyatt beschikbaar wordt gesteld op zijn blog ‘The Lazy Administrator’ met vertalingen voor de producten.


Funtion Get-LicenseAssignmentInfo {
<#
.SYNOPSIS
This function will check if a license is assigned directly to a user, if the license is group based, or both
#>
param(
    [Parameter(Mandatory=$True, ValueFromPipeLine=$false)][Microsoft.Online.Administration.User]$User,
    [Parameter(Mandatory=$True, ValueFromPipeLine=$false)][string]$SkuId
)
BEGIN {
    [bool]$LicenseIsAssignedDirectly = $false;
    [bool]$LicenseIsGroupBased = $false;
    [string]$Sku = '';
}
PROCESS {
    #Retrieve the correct license from the user object
    [Array]$licenses = $User.Licenses | Where-Object {$_.AccountSkuId -eq $SkuId}
    if ($licenses.Count -eq 0) {
        throw "License could not be found"
    }
    elseif ($licenses.Count -gt 1) {
        throw "License found more than once"
    }
    else {
        #GroupsAssigningLicense contains a collection of IDs of objects assigning the license
        #This could be a group object or a user object (contrary to what the name suggests)
        #If the collection is empty, this means the license is assigned directly - this is the case for users who have never been licensed via groups in the past
        if ($licenses[0].GroupsAssigningLicense.Count -eq 0)
        {
            $LicenseIsAssignedDirectly = $true
            $LicenseIsGroupBased = $false
        }
        #If the collection contains the ID of the user object, this means the license is assigned directly
        #Note: the license may also be assigned through one or more groups in addition to being assigned directly
        if (($licenses[0].GroupsAssigningLicense | Where-Object {$_ -eq $user.ObjectId}).Count -gt 0) {
            $LicenseIsAssignedDirectly = $true
        }
        #If the collection contains at least one ID not matching the user ID this means that the license is inherited from a group.
        #Note: the license may also be assigned directly in addition to being inherited
        if (($licenses[0].GroupsAssigningLicense | Where-Object {$_ -ne $user.ObjectId}).Count -gt 0) {
            $LicenseIsGroupBased = $true;
        }
    }
    $Sku = $SkuId -split ":" | Select-Object -Last 1
    $SkuFriendlyName = $SkuFriendlyNames.Item($Sku)
}
END {
    return New-Object -Type PSObject -Property @{
        'User' = $User.UserPrincipalName
        'SkuId'= $SkuId
        'Sku' = $SkuFriendlyName
        'LicenseIsAssignedDirectly' = $LicenseIsAssignedDirectly
        'LicenseIsGroupBased' = $LicenseIsGroupBased
    }
  }
}
$SkuFriendlyNames = @{
"O365_BUSINESS_ESSENTIALS"           = "Office 365 Business Essentials"
"O365_BUSINESS_PREMIUM"              = "Office 365 Business Premium"
"DESKLESSPACK"                       = "Office 365 (Plan K1)"
"DESKLESSWOFFPACK"                   = "Office 365 (Plan K2)"
"LITEPACK"                           = "Office 365 (Plan P1)"
"EXCHANGESTANDARD"                   = "Office 365 Exchange Online Only"
"STANDARDPACK"                       = "Enterprise Plan E1"
"STANDARDWOFFPACK"                   = "Office 365 (Plan E2)"
"ENTERPRISEPACK"                     = "Enterprise Plan E3"
"ENTERPRISEPACKLRG"                  = "Enterprise Plan E3"
"ENTERPRISEWITHSCAL"                 = "Enterprise Plan E4"
"STANDARDPACK_STUDENT"               = "Office 365 (Plan A1) for Students"
"STANDARDWOFFPACKPACK_STUDENT"       = "Office 365 (Plan A2) for Students"
"ENTERPRISEPACK_STUDENT"             = "Office 365 (Plan A3) for Students"
"ENTERPRISEWITHSCAL_STUDENT"         = "Office 365 (Plan A4) for Students"
"STANDARDPACK_FACULTY"               = "Office 365 (Plan A1) for Faculty"
"STANDARDWOFFPACKPACK_FACULTY"       = "Office 365 (Plan A2) for Faculty"
"ENTERPRISEPACK_FACULTY"             = "Office 365 (Plan A3) for Faculty"
"ENTERPRISEWITHSCAL_FACULTY"         = "Office 365 (Plan A4) for Faculty"
"ENTERPRISEPACK_B_PILOT"             = "Office 365 (Enterprise Preview)"
"STANDARD_B_PILOT"                   = "Office 365 (Small Business Preview)"
"VISIOCLIENT"                        = "Visio Pro Online"
"POWER_BI_ADDON"                     = "Office 365 Power BI Addon"
"POWER_BI_INDIVIDUAL_USE"            = "Power BI Individual User"
"POWER_BI_STANDALONE"                = "Power BI Stand Alone"
"POWER_BI_STANDARD"                  = "Power-BI Standard"
"PROJECTESSENTIALS"                  = "Project Lite"
"PROJECTCLIENT"                      = "Project Professional"
"PROJECTONLINE_PLAN_1"               = "Project Online"
"PROJECTONLINE_PLAN_2"               = "Project Online and PRO"
"ProjectPremium"                     = "Project Online Premium"
"ECAL_SERVICES"                      = "ECAL"
"EMS"                                = "Enterprise Mobility Suite"
"RIGHTSMANAGEMENT_ADHOC"             = "Windows Azure Rights Management"
"MCOMEETADV"                         = "PSTN conferencing"
"SHAREPOINTSTORAGE"                  = "SharePoint storage"
"PLANNERSTANDALONE"                  = "Planner Standalone"
"CRMIUR"                             = "CMRIUR"
"BI_AZURE_P1"                        = "Power BI Reporting and Analytics"
"INTUNE_A"                           = "Windows Intune Plan A"
"PROJECTWORKMANAGEMENT"              = "Office 365 Planner Preview"
"ATP_ENTERPRISE"                     = "Exchange Online Advanced Threat Protection"
"EQUIVIO_ANALYTICS"                  = "Office 365 Advanced eDiscovery"
"AAD_BASIC"                          = "Azure Active Directory Basic"
"RMS_S_ENTERPRISE"                   = "Azure Active Directory Rights Management"
"AAD_PREMIUM"                        = "Azure Active Directory Premium"
"MFA_PREMIUM"                        = "Azure Multi-Factor Authentication"
"STANDARDPACK_GOV"                   = "Microsoft Office 365 (Plan G1) for Government"
"STANDARDWOFFPACK_GOV"               = "Microsoft Office 365 (Plan G2) for Government"
"ENTERPRISEPACK_GOV"                 = "Microsoft Office 365 (Plan G3) for Government"
"ENTERPRISEWITHSCAL_GOV"             = "Microsoft Office 365 (Plan G4) for Government"
"DESKLESSPACK_GOV"                   = "Microsoft Office 365 (Plan K1) for Government"
"ESKLESSWOFFPACK_GOV"                = "Microsoft Office 365 (Plan K2) for Government"
"EXCHANGESTANDARD_GOV"               = "Microsoft Office 365 Exchange Online (Plan 1) only for Government"
"EXCHANGEENTERPRISE_GOV"             = "Microsoft Office 365 Exchange Online (Plan 2) only for Government"
"SHAREPOINTDESKLESS_GOV"             = "SharePoint Online Kiosk"
"EXCHANGE_S_DESKLESS_GOV"            = "Exchange Kiosk"
"RMS_S_ENTERPRISE_GOV"               = "Windows Azure Active Directory Rights Management"
"OFFICESUBSCRIPTION_GOV"             = "Office ProPlus"
"MCOSTANDARD_GOV"                    = "Lync Plan 2G"
"SHAREPOINTWAC_GOV"                  = "Office Online for Government"
"SHAREPOINTENTERPRISE_GOV"           = "SharePoint Plan 2G"
"EXCHANGE_S_ENTERPRISE_GOV"          = "Exchange Plan 2G"
"EXCHANGE_S_ARCHIVE_ADDON_GOV"       = "Exchange Online Archiving"
"EXCHANGE_S_DESKLESS"                = "Exchange Online Kiosk"
"SHAREPOINTDESKLESS"                 = "SharePoint Online Kiosk"
"SHAREPOINTWAC"                      = "Office Online"
"YAMMER_ENTERPRISE"                  = "Yammer Enterprise"
"EXCHANGE_L_STANDARD"                = "Exchange Online (Plan 1)"
"MCOLITE"                            = "Lync Online (Plan 1)"
"SHAREPOINTLITE"                     = "SharePoint Online (Plan 1)"
"OFFICE_PRO_PLUS_SUBSCRIPTION_SMBIZ" = "Office ProPlus"
"EXCHANGE_S_STANDARD_MIDMARKET"      = "Exchange Online (Plan 1)"
"MCOSTANDARD_MIDMARKET"              = "Lync Online (Plan 1)"
"SHAREPOINTENTERPRISE_MIDMARKET"     = "SharePoint Online (Plan 1)"
"OFFICESUBSCRIPTION"                 = "Office ProPlus"
"YAMMER_MIDSIZE"                     = "Yammer"
"DYN365_ENTERPRISE_PLAN1"            = "Dynamics 365 Customer Engagement Plan Enterprise Edition"
"ENTERPRISEPREMIUM_NOPSTNCONF"       = "Enterprise E5 (without Audio Conferencing)"
"ENTERPRISEPREMIUM"                  = "Enterprise E5 (with Audio Conferencing)"
"MCOSTANDARD"                        = "Skype for Business Online Standalone Plan 2"
"PROJECT_MADEIRA_PREVIEW_IW_SKU"     = "Dynamics 365 for Financials for IWs"
"STANDARDWOFFPACK_IW_STUDENT"        = "Office 365 Education for Students"
"STANDARDWOFFPACK_IW_FACULTY"        = "Office 365 Education for Faculty"
"EOP_ENTERPRISE_FACULTY"             = "Exchange Online Protection for Faculty"
"EXCHANGESTANDARD_STUDENT"           = "Exchange Online (Plan 1) for Students"
"OFFICESUBSCRIPTION_STUDENT"         = "Office ProPlus Student Benefit"
"STANDARDWOFFPACK_FACULTY"           = "Office 365 Education E1 for Faculty"
"STANDARDWOFFPACK_STUDENT"           = "Microsoft Office 365 (Plan A2) for Students"
"DYN365_FINANCIALS_BUSINESS_SKU"     = "Dynamics 365 for Financials Business Edition"
"DYN365_FINANCIALS_TEAM_MEMBERS_SKU" = "Dynamics 365 for Team Members Business Edition"
"FLOW_FREE"                          = "Microsoft Flow Free"
"POWER_BI_PRO"                       = "Power BI Pro"
"O365_BUSINESS"                      = "Office 365 Business"
"DYN365_ENTERPRISE_SALES"            = "Dynamics Office 365 Enterprise Sales"
"RIGHTSMANAGEMENT"                   = "Rights Management"
"PROJECTPROFESSIONAL"                = "Project Professional"
"VISIOONLINE_PLAN1"                  = "Visio Online Plan 1"
"EXCHANGEENTERPRISE"                 = "Exchange Online Plan 2"
"DYN365_ENTERPRISE_P1_IW"            = "Dynamics 365 P1 Trial for Information Workers"
"DYN365_ENTERPRISE_TEAM_MEMBERS"     = "Dynamics 365 For Team Members Enterprise Edition"
"CRMSTANDARD"                        = "Microsoft Dynamics CRM Online Professional"
"EXCHANGEARCHIVE_ADDON"              = "Exchange Online Archiving For Exchange Online"
"EXCHANGEDESKLESS"                   = "Exchange Online Kiosk"
"SPZA_IW"                            = "App Connect"
"WINDOWS_STORE"                      = "Windows Store for Business"
"MCOEV"                              = "Microsoft Phone System"
"VIDEO_INTEROP"                      = "Polycom Skype Meeting Video Interop for Skype for Business"
"SPE_E5"                             = "Microsoft 365 E5"
"SPE_E3"                             = "Microsoft 365 E3"
"ATA"                                = "Advanced Threat Analytics"
"MCOPSTN2"                           = "Domestic and International Calling Plan"
"FLOW_P1"                            = "Microsoft Flow Plan 1"
"FLOW_P2"                            = "Microsoft Flow Plan 2"
"CRMSTORAGE"                         = "Microsoft Dynamics CRM Online Additional Storage"
"SMB_APPS"                           = "Microsoft Business Apps"
"MICROSOFT_BUSINESS_CENTER"          = "Microsoft Business Center"
"DYN365_TEAM_MEMBERS"                = "Dynamics 365 Team Members"
"STREAM"                             = "Microsoft Stream Trial"
"EMSPREMIUM"                         = "ENTERPRISE MOBILITY + SECURITY E5"
}
#Connect-MsolService

$licenses = @()
 

#find all users and list all licenses
Get-MsolUser -All `
    | Where-Object {$_.UserPrincipalName -like '*etesian.nl'} `
    | Sort-Object UserPrincipalName `
    | ForEach-Object {

    $user = $_;
    $user.Licenses | Foreach-Object {

    $licenseAssignedInformation = LicenseAssignmentInfo -User $user -SkuId $_.AccountSkuId

    $licenses += $licenseAssignedInformation

    }

}

#Output the licenses to a CSV file
$licenses | Select-Object User, SkuId, Sku, LicenseIsAssignedDirectly, LicenseIsGroupBased | Export-Csv "C:\Temp\Licenses.csv" -NoTypeInformation -Delimiter ';'

Je website beveiligen met SRI en CSP

Het internet, en het name het World Wide Web (www), was nooit ontworpen met het oog op veiligheid. Alle aanvullende veiligheidsprotocollen die we kennen zijn eigenlijk later toegevoegd. Zo is de HTTPS-verbinding die we kennen als ‘het groene slotje’ pas de laatste jaren gemeengoed geworden. Tegenwoordig zijn er vele andere manieren om je website te beveiligen.

Kwaadwillenden vinden steeds nieuwe manieren om hun doel te bereiken. Daarop worden steeds nieuwe manieren gevonden om dit te mitigeren. We zien de laatste jaren een opkomst van JavaScript, Single Page Applications (SPA’s) en FrontEnd frameworks zoals Angular en React om snelle, interactieve en mooie websites en webapplicaties te bouwen. Vanzelfsprekend dienen deze technieken op een juiste en vooral veilige manier toegepast te worden. Echter zien we dat dit nog regelmatig misgaat. Het meest sprekende voorbeeld hiervan is de campagnewebsite van voormalige president Donald Trump. Deze bevatte een dusdanig groot ‘lek’ dat verregaande consequenties had kunnen hebben indien dit misbruikt zou zijn. Beveiligingsonderzoeker Troy Hunt heeft er deze mooie blogpost aan gewijd.

In deze blog beschrijven we twee technieken om je website te beveiligen, namelijk Subresouce Integritity (SRI) en Content Security Policies (CSP). Deze technieken zijn de afgelopen jaren ontwikkeld en worden momenteel ondersteund door het overgrote merendeel van de browsers zoals Firefox, Edge, Chrome, Opera en Safari. Helaas zien we dat deze technieken nog niet consequent worden geïmplementeerd in websites en webapplicaties.

Subresource Integrity (SRI)

Stel je voor dat je een nieuwe website maakt en hiervoor wil je functionaliteit gebruiken die door een derde partij beschikbaar wordt gemaakt, bijvoorbeeld voor een nieuwsbrief. Met JavaScript kan dat vaak eenvoudig door het opnemen van een stukje code zoals in het voorbeeld hieronder:

<script src="https://www.
SomeOtherParty.com/NewsLetter/embed.js"
type="text/javascript"></script>

Zoals je kunt zien maken we gebruik van een JavaScript bestand genaamd embed.js afkomstig van SomeOtherParty. Maar wat kan er nu gebeuren wanneer SomeOtherParty mijn bedrijf niet gezind is, of wanneer SomeOtherParty wordt gehackt? Dan kan het bestand embed.js worden
misbruikt om slechte code uit te voeren zoals een keylogger of cryptominer. Iedere bezoeker van jouw website zou dan worden blootgesteld aan deze slechte code zonder dat jij het door kan hebben.

Met de mitigerende maatregel SRI creëer je een digitale vingerafdruk van een bestand. Er wordt een cryptografische berekening uitgevoerd en op het moment dat het bestand zou wijzigen in de toekomst wordt voorkomen dat de gewijzigde code wordt uitgevoerd. Voor het genereren van deze digitale vingerafdruk zijn talloze websites en applicaties beschikbaar. Ik gebruik meestal de SRI Generator van Report-URI: https://report-uri.com/home/sri_hash

<script
src="https://www.SomeOtherParty.com/NewsLetter/embed.js"
type="text/javascript" integrity="sha256-
z2gyg8OpoUm1c8wqrYKqR63Hm87PC5MTa6NwpzDMEJ0= sha384-
Bnd++T0hmJJIB1RlfM20nAZfWAamM5jM8iQ/PMkQnUibNc1f14J2gqS9YQ9xS
G3q sha512-2URiUcHGmY2tyMuEhs/cYmsnkDyjSZF6DgtPiHy+N2wProrZssl9UxhBp1g0X
mq9w/P2QM6zbQOqgVB9xqwTSQ==></script>

Het gebruik van SRI heeft wel consequenties voor je website. Wanneer SomeOtherParty bijvoorbeeld besluit om een nieuwe release van hun nieuwsbrief functionaliteit aan te bieden, kan dit gevolgen hebben voor de functionaliteit op jouw eigen website.

Content Security Policies (CSP)

Een andere maatregel om je website of webapplicatie te beveiligen tegen slechte code is door gebruik te maken van zogenaamde Content Security Policies (of CSPs). Met een CSP kan worden bepaald welke bronnen worden vertrouwd als bron voor afbeeldingen, JavaScript code, stijl-bestanden, etc. CSP is geen alternatief of vervanging voor SRI. Door beide technieken te combineren maak je het kwaadwillenden al zeer moeilijk om slechte code uit te voeren op jouw website. Zo biedt CSP een prima eerste defensie-linie tegen Cross Script Scripting (XSS).

Een CSP begint met een header, een stukje additionele informatie, die door de webserver wordt meegestuurd naar de bezoeker van de website. Bijvoorbeeld:

Content-Security-Policy: default-src 'none'; script-src
'self' https://www.SomeOtherParty.com

Deze header beschrijft dat (Java)script bestanden enkel vertrouwd worden indien deze geladen worden vanuit de website zelf (script-src 'self') of vanuit SomeOtherParty. Andere JavaScript bestanden worden niet vertrouwd en dus niet uitgevoerd. Net zoals bij SRI zijn er websites en applicaties beschikbaar om deze CSP header te genereren, waaronder https://report-uri.com/home/generate.

Tot slot

De beschreven technieken SRI en CSP zijn geen silver bullit om je website te beveiligen, maar vormen een goede aanvulling op de reeds bestaande maatregelen die je waarschijnlijk al getroffen hebt. Wil je meer weten over SRI, CSP of over (cyber)security in het algemeen, neem dan gerust contact met ons op.

Product Owner

Als Product Owner kun je problemen en vragen van klanten vertalen naar een werkbare oplossing. Je ziet altijd kansen om nieuwe en bestaande producten door te ontwikkelen. Dankzij je adviesvaardigheden en het feit dat je gemakkelijk communiceert, weet je je visie enthousiast over te brengen. Je spreekt de taal van ICT én die van de business en vindt het leuk om met een diversiteit aan mensen samen te werken. Je bent daarnaast gestructureerd, houdt van planmatig werken en kunt goed prioriteiten stellen. Dat betekent ook dat je knopen durft door te hakken en nee kunt zeggen tegen collega’s en klanten. Én helder kunt verwoorden waarom je dat doet. Ben jij een ervaren Product Owner  die continu waarde kan leveren voor de organisatie? Dan zijn we op zoek naar jou!

Profiel

Je hebt een flexibele, proactieve houding. Je bent iemand die meedenkt met stakeholders en collega’s. Je hebt een helikopterview en kijkt verder dan je eigen takenpakket. Je werkt gestructureerd, beschikt over een sterk analytisch denkvermogen en hebt oog voor kwaliteit, kosten en innovatie. Je bent in staat mee te denken bij organisatieveranderingen, waarbij inlevingsvermogen van belang is.
Vanwege je T-shaped profiel ben je breed inzetbaar in het team en spring je operationeel bij. Dit doe je met succes. Mede door de inzet van jouw flexibele, proactieve houding en brede interesse, zowel technisch als functioneel.

Criteria

We zijn op zoek naar een Product Owner die:

  • Een afgeronde HBO- of WO-opleiding heeft en een sterke affiniteit met IT.
  • Minimaal 3-5 jaar ervaring als Product Owner in een complex IT-domein.
  • Aantoonbare kennis en ervaring heeft met Agile en/of DevOps en methodologieën zoals Scrum & Kanban en bij voorkeur ook ervaring met Scaled Agile Frameworks;
  • Aantoonbare certificering in het vakgebied is een sterke pre (PSM, CSM, PSPO, CSPO, LeSS, SAFe, Nexus);
  • Ervaring met Jira, Confluence.
  • Bekend is met Lean en/of andere procesverbetermethoden;
  • Je bent bevlogen, betrokken, loyaal en behulpzaam;
  • Je spreekt en schrijft vloeiend Nederlands en zakelijk Engels.
  • Jij hebt ervaring met het werken in waardeketens;
  • In een politieke omgeving voel jij je als een vis in het water;
  • Jouw kennis van het ICT-landschap helpt jouw in het maken van keuzes;
  • Als Product Owner heb jij met één of meerdere Agile teams samen gewerkt;
  • Jij kunt in korte tijd diepgaande kennis vergaren van de producten en diensten die jouw team levert;
  • Je hebt ervaring én het vermogen om verandering te brengen en (complexe) uitdagingen op te lossen
  • Ervaring met het opstellen van requirements in een complex domein op het gebied van IT.
  • Kennis van ontwikkelmethodieken en beheermodellen is een pré.

Daarnaast beschik je over de volgende vaardigheden:

  • Ondernemerschap, besluitvaardig en resultaat gericht;
  • Motiverend, open voor kritiek, eerlijk en transparant;
  • Helicopterview, omgevings- en organisatie sensitief;
  • Je weet als geen ander stakeholdermanagement toe te passen.
  • Communicatief vaardig,  zowel binnen het team als buiten het team met stakeholders.
  • Creëert vertrouwen.
  • Klantgericht: je denkt, voelt en ervaart met de klant mee

Wat bieden wij?

Naast een marktconform salaris en uitstekende secundaire arbeidsvoorwaarden, bieden wij jou een inspirerende werkomgeving met een enthousiast team van top collega’s. De hoge kwaliteit van onze dienstverlening bereiken we door optimaal aandacht te schenken aan onze medewerkers en een klimaat te creëren waarin je je thuis voelt en alle kansen krijgt om mee te groeien. We vinden persoonlijke ontwikkeling erg belangrijk binnen Etesian en investeren hier dan ook graag in.

Verder bieden wij:

  • Opleidingsbudget;
  • Laptop en mobiel;
  • Leaseauto of mobiliteitsregeling;
  • Een vast salaris met bonus component;
  • 26 vakantiedagen met de mogelijkheid om dagen bij te kopen.

Solliciteren

Ben je geïnteresseerd in deze functie? Solliciteer dan direct door je gegevens, CV en motivatiebrief op te sturen naar [email protected]

Senior BI Consultant

Heb jij ervaring met Business Intelligence of Data Analytics? Vind je het een uitdaging om bedrijfsprocessen te analyseren en te vertalen naar een data integratie omgeving die perfect aansluit op de wensen en behoeften van je klant? Solliciteer dan direct bij Etesian om aan de slag te gaan als Senior BI consultant.

Profiel

Als Senior BI Consultant lever je een bijdrage aan de verbetering van de besturing van organisaties. Je bent verantwoordelijk voor de analyse van business processen en de vertaling hiervan naar concrete, consistente en betrouwbare informatievoorziening. Het uitgangspunt hierbij is de informatiebehoefte van de klant. Daarnaast ontwerp, ontwikkel en implementeer je concrete oplossingen zoals management dashboards en -rapportages en analyse omgevingen ten behoeve van de besturing op alle niveaus van de organisatie. Je dicht de kloof tussen enerzijds de organisatorische besturingsvraagstukken en anderzijds de BI concepten.

Criteria

  • Een relevant HBO diploma (Bedrijfskundige Informatica, Bedrijfskunde,….)
  • Minimaal 5 jaar ervaring binnen het Data/BI domein;
  • Ervaring met het van grond af opbouwen van een Datawarehouse/Analytics omgeving;
  • Kennis heeft van dimensioneel modelleren (Data Vault is een pré);
  • Ervaring met Microsoft tooling:
    • Scripting: T-SQL, Python (C# is een pré)
    • ETL: Azure Data Factory, Azure Databricks, SSIS
    • Data storage: (Azure) SQL Server, Data Lake, Azure DWH.
    • Symantics: (Azure) Analysis Services, Synapse Analytics.
    • Visualisatie: Power BI, SSRS
  • Analytisch vermogen en proactief te werk gaat;
  • De architectuur van een data integratie omgeving gedegen en technisch perfect neer kan zetten;
  • Beschikt over goede communicatieve vaardigheden en in staat is om onze klant het voordeel van BI omgevingen uit te leggen.

Nice to have

  • Azure DevOps ervaring;
  • Kennis van analytische talen, zoals R;
  • Kennis van big data frameworks als Hadoop, Spark of Kafka;
  • Kennis en ervaring met IoT, Machine Learning;
  • Bekend met overige integratie tooling, als Event Hub, Azure Functions, (Azure) API Management.

Solliciteren

Ben je geïnteresseerd in deze functie? Solliciteer dan direct door je gegevens, CV en motivatiebrief op te sturen naar [email protected]

Cloud Infra Consultant

Etesian IT Consulting is per direct op zoek naar ambitieuze Cloud/Infra Consultants. Heb jij ervaring met Microsoft Azure, Amazon Web Services (AWS), Microsoft 365, security, netwerken en/of server-omgevingen en zin om als consultant aan de slag te gaan bij een jong, dynamisch en ambitieus bedrijf, solliciteer dan direct bij Etesian.

Profiel

Als Cloud/Infra Consultant heb je kennis van IT-infrastructuur en maken nieuwe ontwikkelingen je enthousiast op bijvoorbeeld Cloud en netwerkgebied. Naast je technische kennis ben jij in staat om je omgeving mee te nemen in de moderne uitdagingen en oplossingen. Idealiter heb je ervaring met Microsoft Azure, Amazon Web Services, private Cloud en/of hybride omgevingen. Je hebt minimaal 3 jaar (relevante) werkervaring in een soortgelijke functie.

Je vindt het leuk om hands-on bezig te zijn, gaat uitdagingen niet uit de weg en je bent in staat onze klanten te adviseren over hun IT-infrastructuur vraagstukken. Daarnaast volg je de ontwikkelingen rondom Cloud architectuur op de voet, ga je graag naar events en verdiep je je in nieuwe materie middels blogs, podcasts en andere vakliteratuur. Bereid zijn om zelf kennis te delen en/of ook technische artikelen te schrijven is een pré.

Als uitgangspunt werk jij conform secure by design, en staat beschikbaarheid, vertrouwelijkheid, en integriteit centraal. Binnen je dagelijkse werkzaamheden ben je waakzaam en heb je een oog voor de zwakke plekken in het IT-landschap.

Criteria

Wij zijn op zoek naar een Cloud/Infra Consultant die:

  • Een relevant diploma heeft op HBO- of WO-niveau;
  • Minimaal drie jaar relevante werkervaring heeft met Microsoft Azure, Amazon Web Services, netwerken en server-omgevingen;
  • Naast de technische kennis zich bewust is van secure by design;
  • Ervaring heeft met migraties en OTAP-principes, (PowerShell) scripting en automatiseren;
  • Analytisch vermogen heeft en proactief te werk gaat;
  • Bij voorkeur relevante Microsoft 365 of Azure examens bezit;
  • Beschikt over goede communicatieve vaardigheden.

Wat bieden we?

Naast een marktconform salaris en uitstekende secundaire arbeidsvoorwaarden, bieden wij jou een inspirerende werkomgeving met een enthousiast team van top collega’s. De hoge kwaliteit van onze dienstverlening bereiken we door optimaal aandacht te schenken aan onze medewerkers en een klimaat te creëren waarin je je thuis voelt en alle kansen krijgt om mee te groeien en een podium om jouw kennis te delen. We vinden persoonlijke ontwikkeling erg belangrijk binnen Etesian en investeren hier dan ook graag in.

Verder bieden wij nog:

  • Een aantrekkelijke mobiliteitsregeling of ruim leasebudget
  • Jezelf blijven ontwikkelen met budget voor opleidingen en cursussen
  • 26 vakantiedagen per jaar, pensioenopbouw en collectieve kortingen
  • Salaris indicatie:
    • Medior: €2.800 – €4.200
    • Senior: €3.800+

Solliciteren

Ben je geïnteresseerd in deze functie? Solliciteer dan direct door je gegevens, CV en motivatiebrief op te sturen naar [email protected]