Onze website bevat functionele en analytische cookies die nodig zijn om de website goed te laten functioneren
en jou als bezoeker een goede webervaring te geven. Deze statistieken worden volledig anoniem verwerkt. Meer
informatie is beschikbaar in onze privacyverklaring.
5 keuzes die je moet maken om Microsoft Teams veilig in te richten
Blog
Sinds de eerste maanden van de pandemie hebben veel organisaties de overstap gemaakt naar het werken in Teams. Lange tijd was de focus daarbij volledig gericht op ervoor zorgen dat mensen thuis konden werken en toch met elkaar in contact konden blijven en vergaderen. Teams werd in een recordtempo uitgerold, en gebruikers maakten er vaak maar het beste van.
Inmiddels werken de meesten van ons weer in elk geval deels op kantoor. Veelal wordt er per team een afspraak gemaakt over wanneer er op kantoor gewerkt wordt, en onder welke voorwaarden. De behoefte aan het gebruik van Teams en in bredere zin Microsoft 365 blijft daarmee ongewijzigd groot.
Om gebruik te kunnen maken van Teams, is een goed ingerichte infrastructuur noodzakelijk. Bijvoorbeeld om te zorgen dat men zich kan aanmelden. Dit soort fundamentele aspecten is dan ook vrijwel altijd inmiddels geregeld. Wat echter niet altijd goed geregeld is, is governance. In deze blogpost beschrijf ik daarom vijf zaken waar je zeker over na moet denken en keuzes over moet maken om Teams niet alleen nu, maar ook in de toekomst beheersbaar en betrouwbaar te houden.
Keuze 1: Wie mag een nieuw Team aanmaken?
Of beter gezegd: wie mag een Microsoft 365 Groep aanmaken? Iedere Teams-omgeving is gebonden aan een M365 Groep. Zo’n groep is een verzameling mensen die met elkaar samen kunnen werken en daartoe een aantal hulpmiddelen krijgen aangeboden. In dit geval gaat het dus om een groep mensen die samen kunnen werken in een Teams-omgeving, bestanden kunnen opslaan in een SharePoint-omgeving, en gebruik kunnen maken van een gezamenlijke agenda en mailbox.
Het uitgangspunt van Microsoft is om het aanmaken van groepen via Teams (en de andere services) toe te staan aan iedereen binnen de organisatie. Hierdoor kunnen mensen gemakkelijk en zonder op IT te hoeven wachten zelf een nieuwe Teams-omgeving aanmaken.
Nadeel van deze aanpak is dat er een risico is op wildgroei, en dat het wellicht onduidelijk is waar nou precies welke informatie staat. Er kunnen dubbele groepen ontstaan, en er kan informatie worden verwijderd terwijl deze misschien gearchiveerd zou moeten worden. Kortom, het ontbreekt aan controle.
Er zijn diverse mogelijkheden om deze risico’s aan te pakken, maar een hulpmiddel dat veel organisaties nodig hebben is om het zelfstandig aanmaken van Groepen aan banden te leggen. Om dit te doen, maak je eerst een Beveiligingsgroep aan (in Azure). Vervolgens wordt er een PowerShell script uitgevoerd dat er voor zorgt dat alleen deze groep nog recht heeft om M365 Groepen aan te maken (zie deze pagina van Microsoft).
Keuze 2: Hoe gaan we om met naamgeving?
Wanneer je een nieuwe Teams-omgeving aanmaakt, wordt er op de achtergrond een nieuwe Microsoft 365 Groep aangemaakt. Deze Groep krijgt een mailadres met dezelfde titel. Dit maakt het mogelijk om een groep te maken met een naam die een ongewenst mailadres oplevert. Denk bijvoorbeeld aan een mailadres zoals finance@[organisatienaam] of directie@[organisatienaam].
Je kunt dit voorkomen door gebruik te maken van voor- en achtervoegsels. Ga in Azure Active Directory naar Groepen en vervolgens naar Naambeleid. Hier kun je een voorvoegsel (prefix) of achtervoegsel (suffix) toevoegen. Deze kunnen gebaseerd zijn op een vaste tekenreeks (“M365-“ bijvoorbeeld) of op een dynamisch kenmerk. Resultaat is dat iedere nieuwe M365 Groep automatisch aangevuld wordt met de gekozen tekst.
Keuze 3: Hoe lang blijft een Team bestaan?
Een derde keuze is om vast te stellen hoe lang een Teams-omgeving kan blijven bestaan. Teams-omgevingen worden zelden actief opgeruimd, met als risico dat er op den duur een groot aantal verouderde en niet-gebruikte Teams blijft bestaan, waarvan niemand meer echt weet van wie ze zijn of wat de bestaansreden was.
Je kunt dit risico adresseren door een verloopdatum toe te voegen voor Microsoft 365 Groepen.
Ga naar Azure Active Directory > Groepen en kies voor Verloopdatum. Hier kun je de levensduur instellen. Meest gebruikelijk is een half jaar of jaar vanaf datum aanmaken.
De Teams-omgeving, net als de gehele Microsoft-365-omgeving, moet voldoen aan alle juridische en wettelijke normen die aan de organisatie gesteld zijn. Compliance helpt je om risico’s te verminderen rond gegevensbescherming en wettelijke normen. Dit alles regel je in het Compliance Center.
Belangrijke onderdelen:
Preventie van gegevensverlies (DLP)
Met de juiste instellingen en licenties is het mogelijk om het delen van gevoelige informatie te reguleren. Zo is het mogelijk om een waarschuwing te genereren wanneer een persoonsnummer of ander herkenbaar stuk informatie gedeeld wordt buiten de organisatie of dit zelfs geheel te blokkeren.
Beleid rondom bewaren en verwijderen
Wil je voorkomen dat gevoelige informatie vroegtijdig wordt verwijderd? Het is mogelijk om beleid in te stellen dat ervoor zorgt dat informatie voor een bepaalde tijd wordt bewaard, om het na die tijd definitief te verwijderen.
Vertrouwelijkheidslabels
Aan informatie wordt een label toegevoegd om de mate van vertrouwelijkheid aan te geven. Dit kan handmatig of geautomatiseerd, afhankelijk van de gebruikte licentie. Op basis van dit kenmerk kunnen allerlei beleidsregels worden uitgevoerd.
eDiscovery
Maakt het mogelijk om informatie te identificeren en verzamelen die kan worden gebruikt als bewijs in juridische zaken. De tool kan zoeken naar inhoud in Exchange Online, OneDrive voor Bedrijven, SharePoint Online, Microsoft Teams, Microsoft 365 Groepen en Yammer.
Keuze 5: Hoe gaan we om met externe toegang?
Tenslotte: wie mag er deelnemen in een Teams-omgeving of een meeting? Wie mag er bij je bestanden?
Je kunt dit regelen via Externe toegang en Gasttoegang. Externe toegang zorgt er voor dat externen kunnen deelnemen aan vergaderingen en chats. Gasttoegang geeft daarnaast toegang tot bronnen zoals Bestanden. Je vindt deze instelling in Azure Active Directory, het Teams-beheercentrum en het SharePoint-beheercentrum.
Activiteiten die uw gebruikers kunnen doen
Gebruikers kunnen (o.a.)
Externen
Gasten
Chatten met iemand in een andere organisatie
Ja
Ja
Bellen met iemand in een andere organisatie
Ja
Ja
Kijken of iemand van een andere organisatie beschikbaar is om te bellen of te chatten
Ja
Ja
Zoeken naar mensen in andere organisaties
Ja
Nee
Bestanden delen
Nee
Ja
Het afwezigheidsbericht van iemand in een andere organisatie zien
Nee
Ja
Iemand in een andere organisatie blokkeren
Nee
Ja
@Vermeldingen gebruiken
Ja
Ja
Activiteiten die mensen van buiten uw organisatie kunnen doen
Mensen van buiten uw organisatie kunnen (o.a.)
Externen
Gasten
Teams-bronnen bekijken
Nee
Ja
Worden toegevoegd aan een groepschat
Ja
Ja
Worden uitgenodigd voor een vergadering
Ja
Ja
Privégesprekken voeren
Ja
Ja
Hun scherm delen
Ja
Ja
Aanwezigheid wordt weergegeven
Ja
Ja
@Vermeldingen gebruiken
Ja
Ja
Conclusie
Wanneer je goed nadenkt over de thema’s die hierboven genoemd zijn, de juiste keuzes maakt en deze consistent doorvoert, maak je het mogelijk om veilig te werken met Microsoft Teams. Wil je graag dat iemand met je meedenkt over de beste keuzes voor jouw organisatie? Mijn collega-consultants en ik staan voor je klaar
Deel deze pagina:
Auteur
Gerard
Consultant
Heb je vragen over dit onderwerp of zou je Gerard willen inhuren voor een vergelijkbare opdracht?
Het lijkt vaak wel of er wekelijks nieuwe tools en frameworks uitkomen, en het is dan ook vaak keuzes maken als je bij wilt blijven.
Maar soms zijn er ook nieuwe ontwikkelingen die de kleinere beslissingen als kiezen tussen React of Vue overstijgen. Astro is zo’n ontwikkeling.
Wat is Astro?
Astro is een Static site builder, en dat is op zich niets bijzonders. Wat echter wél bijzonder is, is dat het Astro echt niets uitmaakt wat je in je Static site wil opnemen. Dus als je al een mooi navigatie-component hebt gebouwd in Vue, en een formulieren-component in React; het kan allemaal!
Astro is naast een builder eigenlijk ook een bundler, net zoals Webpack of Vite, maar dan heel erg slim. Zo is het mogelijk om een applicatie te bouwen met de bekende JavaScript-frameworks zonder dat er links naar de JavaScript-files nodig zijn. Je hoeft dan dus geen react.js in te laden, omdat deze al is gebundeld in het pakketje dat Astro voor je gemaakt heeft.
Inmiddels zijn er ook grote bedrijven die gebruik maken van Astro. Dit zijn onder andere Google, Trivago en Netlify.
Wat maakt Astro uniek?
Renderen
Voordat ik uit kan leggen wat Astro bijzonder maakt, moet ik iets uitleggen over Renderen. Hiermee wordt bedoeld: hoe (en waar) wordt de pagina in elkaar gezet?
Er zijn een aantal render-varianten mogelijk:
Client-side Rendering (de pagina wordt samengevoegd op het device van de gebruiker)
Server-side Rendering (de pagina wordt samengevoegd op de server en dan naar de gebruiker gestuurd)
Partial Hydration (de combinatie van de eerder genoemde varianten) de pagina wordt eerst geladen, en vervolgens wordt de inhoud ververst door nieuwere content)
Maar wat Astro nu onderscheidt, is dat het niet alleen mogelijk is om deze renderings-mogelijkheden toe passen per hele pagina, maar ook per eilandje (gedeelte van een pagina). Dit wordt dan ook wel Island Architecture genoemd. Stel je voor dat je op een homepage naast statische componenten als een header en een footer, ook informatie wilt tonen die dynamisch is en misschien langer duurt om binnen te halen. Een voorbeeld hiervan zie je in de afbeelding hieronder.
Island Architecture
Astro heeft hier een specifieke syntax voor:
client:load Als een component wordt geladen zonder client attribuut, dan worden ze toegevoegd zonder JavaScript. Mocht je een component willen laden met JavaScript, dan is ieder geval een client:load noodzakelijk.
client:idle Voor componenten met lage prio. Deze worden pas gerenderd op het moment dat het initieel laden van de pagina klaar is.
client:visible een variant op idle, maat dan met lazy loading. Component wordt pas geladen wanneer het in beeld komt.
client:media Voor componenten die alleen zichtbaar zijn als een media query van toepassing is: bijvoorbeeld alleen op schermen smaller dan 400px.
client:only Zorgt er voor dat een component niet aan de server-side wordt gerenderd, maar alleen aan de client-side.
Wie zijn de concurrenten van Astro?
Concurrenten voor Astro zijn onder te verdelen in 2 groepen: frameworks en bundlers. In de eerste categorie zijn de grootste concurrenten waarschijnlijk NextJS en NuxtJS. Dit zijn vergelijkbare frameworks (NextJS op basis van React, en NuxtJS op basis van VueJS), die beiden mogelijkheden bieden voor Static Site Generation en Server Side Rendering. Het allergrootste verschil met Astro is dat:
Astro stelt je in staat te kiezen welk framework je wil gebruiken, of zelfs wil combineren
Partial hydration is bij Astro standaard. Bij andere frameworks is dit natuurlijk wel mogelijk maar niet direct out-of-the-box
Builds van Astro zijn doorgaans kleiner dan die van de concurrenten door een rigoureuze aanpak van JavaScript files.
Astro zegt in zijn documentatie ook nog het een en ander over het verschil tussen Astro en enkele andere alternatieven zoals
Astro’s mogelijkheid om een applicatie te maken met JavaScript frameworks, die standaard wordt geleverd zónder JavaScript is verfrissend. Mocht je applicatie het wel nodig hebben dan laad je die gewoon in geef je die juiste client methode mee.
Zelf denk ik dat Astro heel interessant is. Juist omdat je verschillende frameworks kunt combineren, of via Astro als middenlaag stapsgewijs over kunt van het ene framework naar het andere. Astro groeit zowel in adaptatie door de Front-End community als in volwassenheid: Juni 2022 kom Astro uit bèta met de release van Astro 1.0.
In ieder geval; Ik houd Astro de komende tijd zeker in de gaten. Jij ook, en kan ik (of één van mijn collega’s) je helpen bij de implementatie? Laat het ons weten!
Entity Framework Core 6 is gelijktijdig met .NET 6 gelanceerd, namelijk afgelopen november (2021). Daarmee heeft EF Core 6 net als .NET 6 Long Term Support (LTS). EF Core 6 heeft natuurlijk veel wijzigingen ten opzichte van EF Core 5. Een aantal opvallende wijzigingen neem ik door in deze blog. Ook kijk ik vooruit naar november 2022, waar EF 7.0 wordt aangekondigd. Wat kan je daarvan verwachten?
Temporal tabellen
Met Temporal tabellen kan je versies toevoegen aan een bestaande tabel. EF maakt dan een tweede tabel aan met validatiedatums voor de opgeslagen data. Deze temporal tabel kan volledig geconfigureerd worden. Uiteraard kan deze tweede tabel ook gewoon doorzocht worden. Om deze data op te halen zijn er specifieke functies binnen EF beschikbaar.
Momenteel is deze functie alleen beschikbaar binnen Microsoft databases, maar er is ook “third-party” ondersteuning voor PostgeSQL. Meer informatie over Temporal tabellen vind je hier.
Migration Bundles
Met migration bundles kan je één of meer migraties bundelen tot een executable die je kan geïmplementeerd kan worden in een CI/CD omgeving. De functie is enigszins vergelijkbaar met DbUp, al zou ik zelf toch nog eerder DbUp gebruiken dan deze functionaliteit. Bij DbUp zet je alle SQL scripts in een aparte folder en stel je deze in als embedded resource. Een tip hier is om die folder in z’n geheel te markeren als embedded resource door wildcards te gebruiken in het .csproj bestand.
Meer informatie over migration bundles vind je hier. Meer informatie over DbUp staat hier.
Migration Bundles
Pre-convention modelconfiguratie
Door in je DbContext class ConfigureConventions te overschrijven, kun je standaard modelconfiguratie toevoegen. Op basis van het type kan je standaardconfiguratie, zoals string-lengte, unicode en de precisie van decimalen bepalen voor het gehele model.
Met deze configuratie kan je ook converters toevoegen en ook properties bij voorbaat uitsluiten.
Meer informatie over pre-convention modelconfiguratie, vind je hier.
Pre-convention modelconfiguratie
UnicodeAttribute
Met deze attribute kan je aangeven of een property Unicode is of niet. Dit kon je natuurlijk al aangeven in de Entity Type Configuratie, maar niet als attribute. Dat kan nu dus wel.
Standaard zet EF Core string properties om naar Unicode, dus deze attribute is vooral bedoeld om Unicode uit te zetten. Als een database alleen Unicode type accepteert, dan wordt het attribute genegeerd.
UnicodeAttribute is onderdeel van het NuGet-package Microsoft.EntityFrameworkCore.Abstractions.
UnicodeAttribute
Model building verbeteringen
Er zijn nog verschillende andere verbeteringen, waaronder betere ondersteuning van conversies, zodat je aan kan geven hoe je enums wilt opslaan. Ook is het makkelijker geworden om many-to-many koppelingen te configureren.
Wat er nog meer aan verbeteringen in EF Core zitten, vind je hier.
Model building verbeteringen: de kortste configuratie van meer-op-meer-koppelingen
EF7
In november 2022 komt EF7 uit, gelijktijdig met .NET 7. Net als .NET 7 heeft deze versie geen LTS. Het is ook de eerste versie waar Core uit de naam verdwenen is; er is nu geen verwarring meer met oude versies aangezien de laatste “oude” versie ook een versie 6 had. EF7 borduurt weer verder op EF Core 6. Hoewel nog niet alle wijzigingen duidelijk zijn, is er al wel duidelijk wat er in de planning zit:
JSON-Kolommen
JSON-kolommen zijn kolommen waarin JSON-tekst wordt opgeslagen. De bedoeling is dat de JSON properties gemapt kunnen worden naar de properties in de entities.
Dit voorstel gaat over betere ondersteuning voor Windows Forms en .NET MAUI. Het is namelijk niet altijd eenvoudig om de technieken met elkaar te verbinden. In EF7 wordt de ervaring van in EF Core en in Visual Studio verbeterd. In de basis gaat het om het herintroduceren van Visual Studio tooling, zodat het ongeveer gelijk werkt zoals in .NET Framework.
Migratie van EF6 naar EF7
De vorige Entity Framework versie 6 - de versie van 17 oktober 2013 en dus niet te verwarren met EF Core 6 - was een vrij complete versie. In EF7 worden ontbrekende functionaliteiten uit EF6 toegevoegd. Het is op dit moment nog niet duidelijk welke functionaliteit van EF6 wordt toegevoegd aan EF7. Wel is duidelijk dat deze functionaliteit het makkelijker moet maken om de EF6 projecten te porten naar EF7.
Meer informatie
Op onze GitHub-pagina kun je de demo repository vinden. Hierin zijn wat shortcuts genomen, maar geeft wel een beeld van hoe Entity Framework werkt.
In de readme van de repository vind je meer informatie en links over EF Core 6 en EF7.
Mocht je hier nou nog vragen over hebben, of hulp van één van onze .NET Developers kunnen gebruiken… laat het ons weten! We kijken graag een keer met je mee.