

AWS Config is een service waarmee u de configuraties van uw AWS-bronnen kunt beoordelen, controleren en evalueren. Dit kan worden gebruikt voor:
- beveiliging: valideer best practices voor beveiliging op uw AWS-account
- compliance: rapporteer over afwijkingen in de configuratie van AWS-resources op basis van best practices of architectuurprincipes en -richtlijnen
- efficiëntie: rapporteer over verloren of ongebruikte bronnen in uw AWS-account
In deze blogpost wil ik gedetailleerd uiteenzetten hoe u uw cloudresources kunt bewaken met deze tool. Dit eerste deel bespreekt het instellen van een AWS Config-account, het inschakelen van meldingen wanneer resources niet voldoen en de implementatie.
Waarom AWS Config gebruiken?
AWS is het belangrijkste cloudplatform dat we bij ACA gebruiken. We beheren meerdere accounts in AWS om allerlei applicaties te hosten voor onszelf en voor onze klanten. In de loop der jaren hebben we steeds meer projecten opgezet in AWS. Dit heeft geleid tot het aanmaken van veel accounts, die op hun beurt veel cloudresources gebruiken. Dit betekent natuurlijk dat het bijhouden van al deze resources ook steeds uitdagender wordt.
AWS Config heeft ons geholpen om met deze uitdaging om te gaan. We gebruiken het omalle resources in onze hele AWS-organisatie te inventariseren en te bewaken. Het stelt ons ook in staat omcompliance-regels inte stellen voor onze resources die in elk account moeten worden nageleefd. Bijvoorbeeld: een Elastic IP mag niet ongebruikt blijven of een EC2-beveiligingsgroep mag niet al het inkomende verkeer zonder beperkingen toestaan. Op deze manier kunnen we een standaard creëren voor al onze AWS-accounts.
Het inschakelen van AWS Config in je organisatie geeft ons een aantal voordelen.
- We hebben altijd een up-to-date inventaris van alle resources in onze accounts.
- We kunnen 24/7 de wijzigingsgeschiedenis van al onze resources bekijken.
- Het geeft ons de mogelijkheid om organisatieregels aan te maken en continu te controleren of onze resources voldoen aan de regels. Als dat niet het geval is, krijgen we direct een melding.
AWS Config instellen voor één account
In dit eerste deel van mijn AWS Config blog wil ik laten zien hoe je AWS Config instelt voor een enkel account. In een toekomstige blogpost zal ik meer uitleggen over hoe je dit voor een hele AWS organisatie kunt doen. De afbeelding hieronder toont een overzicht van de setup in een enkel account, met daarin
- de AWS Config recorder,
- de AWS Config-regels,
- en de S3 emmer.

De AWS Config recorder is het belangrijkste onderdeel van de set-up. Je kunt de standaardrecorder inschakelen in de AWS-console. Standaard neemt deze alle resource types op. Meer informatie over alle beschikbare resourcetypes vind je op deze pagina.

Wanneer je begint met opnemen, worden alle AWS-resources opgeslagen in de S3-bucket als configuratie-items. Het opnemen van deze configuratie-items is niet gratis. Op het moment van schrijven kost het $0,003 per opgenomen configuratie-item. Deze kosten worden gegenereerd wanneer het configuratie-item voor het eerst wordt opgenomen of wanneer er iets verandert aan het configuratie-item of een vanzijn relaties. In de instellingen van de AWS Config recorder kun je ook aangeven hoe lang deze configuratie-items moeten worden opgeslagen in de S3 bucket.
De AWS Config regels zijn het belangrijkste onderdeel van je setup. Deze regels kunnen worden gebruikt als compliancy controles om ervoor te zorgen dat de bronnen in je account zijn geconfigureerd zoals bedoeld. Het is mogelijk om aangepaste regels te maken of te kiezen uit een grote set vanAWS beheerde regels. In onze setup bij ACA hebben we ervoor gekozen om alleen AWS managed rules te gebruiken, omdat deze aan al onze behoeften voldeden. In de afbeelding hieronder zie je een van de regels die we hebben ingezet.

Net als het vastleggen van configuratie-items, kost het uitvoeren van regelevaluaties geld. Op het moment van schrijven is dit $0,001 voor de eerste 100.000 regelevaluaties per regio, $.0008 van 100.000 - 500.000 en daarna $.0005.
Er zijn veel regels beschikbaar met verschillende voordelen voor je AWS account. Dit zijn enkele van deAWS beheerde regels die we hebben geconfigureerd:
- Regels die de beveiliging verbeteren
- AccessKeysRotated: controleert of de toegangssleutels van een IAM-gebruiker binnen een bepaald aantal dagen worden geroteerd.
- IamRootAccessKeyCheck: controleert of aan een root account toegangssleutels zijn toegewezen, wat niet wordt aanbevolen
- S3BucketServerSideEncryptionEnabled: controleert of standaard encryptie voor een S3 bucket is ingeschakeld
- Regels die ongebruikte bronnen detecteren (kostenreductie)
- Ec2VolumeInuseCheck: controleert of een EBS volume wordt gebruikt
- EipAttached: controleert of een Elastic IP wordt gebruikt
- Regels die optimalisatie van bronnen detecteren
- VpcVpn2TunnelsUp: controleert of een VPN-verbinding twee tunnels beschikbaar heeft
Meldingen instellen wanneer resources niet voldoen
AWS Config-regels controleren configuratie-items. Als een configuratie-item niet voldoet aan de eisen van de regel, wordt het gemarkeerd als 'niet-conform'. Wanneer dit gebeurt, wil je hiervan op de hoogte worden gebracht zodat je de juiste acties kunt ondernemen om het probleem op te lossen. In de afbeelding hieronder zie je hoe we de notificaties voor onze AWS Config-regels hebben geïmplementeerd.

Om te beginnen met meldingen, moet CloudTrail zijn ingeschakeld en moet er een spoor zijn dat alle activiteit in het account logt. Nu kan CloudWatch de CloudTrail-gebeurtenissen oppikken. In onze setup hebben we 5 CloudWatch-eventregels gemaakt die meldingen versturen op basis van prioriteit. Dit maakt het voor ons mogelijk om te beslissen wat het prioriteitsniveau van de melding voor elke AWS Config-regel moet zijn. De afbeelding hieronder laat hier een voorbeeld van zien.

In de sectie 'Targets' zie je het SNS topic dat de meldingen van de CloudWatch event rule ontvangt. Opsgenie heeft een apart abonnement voor elk van de SNS topics (P1, P2, P3, P4 & P5). Op deze manier ontvangen we meldingen wanneer er wijzigingen in de compliance plaatsvinden en zien we ook de ernst ervan door naar het prioriteitsniveau van onze Opsgenie-melding te kijken.

Uw AWS-configuratie implementeren
Bij ACA proberen we onze AWS-infrastructuur altijd te beheren met Terraform. Dit is niet anders voor AWS Config. Dit is onze implementatieworkflow:

We beheren alles wat met AWS Config te maken heeft in Terraform. Hier is een voorbeeld van een van de AWS Config regels in Terraform, waarbij de waarde van het rule_identifier attribuut kan worden gevonden in de documentatie van de AWS Config beheerde regels:
resource "aws_config_config_rule" "mfa_enabled_for_iam_console_access" { name = "MfaEnabledForIamConsoleAccess" description = "Controleert of AWS Multi-Factor Authentication (MFA) is ingeschakeld voor alle AWS Identity and Access Management (IAM) gebruikers die een consolewachtwoord gebruiken. De regel voldoet als MFA is ingeschakeld." rule_identifier = "MFA_ENABLED_FOR_IAM_CONSOLE_ACCESS" maximum_execution_frequency = "One_Hour" excluded_accounts = "${var.aws_config_organization_rules_excluded_accounts}" }
De Terraform code wordt versiebeheer met Git. Als de code moet worden ingezet, doet Jenkins een checkout van de Git repository en zet het uit op AWS met Terraform.
Takeaway
Met AWS Config krijgen we meer inzicht in onze AWS-cloudbronnen. AWS Config verbetert onzebeveiliging, voorkomt dat we resources in gebruik houden die niet worden gebruikt en zorgt ervoor dat onze resources optimaal worden geconfigureerd. Naast deze voordelen biedt het ons ook een inventaris van al onze resources en hun configuratiegeschiedenis, die we op elk moment kunnen inzien.
Tot zover deze blogpost over AWS Config. In een toekomstig deel wil ik uitleggen hoe je het instelt voor een AWS-organisatie. Als je dit onderwerp interessant vond en je hebt een vraag of je wilt meer weten over onze AWS Config setup, neem dan contact met ons op viacloud@aca-it.be
What others have also read


In deze technische blogpost wil ik het hebben over hoe je eenvoudige en flexibele ETL-gebaseerde anonimisering kunt opzetten. Waarom? Wel, ik had onlangs de gelegenheid om een klein proof of concept uit te voeren voor een klant. De klant wilde weten welke opties beschikbaar waren om interne gegevens te nemen, alle persoonlijk identificeerbare informatie (PII) te verwijderen of anonimiseren en deze op een eenvoudige manier en vorm beschikbaar te maken voor externe partijen. Na het verzamelen van verdere vereisten werd de context voor dit proof of concept als volgt gedefinieerd: Welke oplossing dan ook, het moet in staat zijn om gegevens te extraheren uit een on premise Oracle database . Het eindresultaat moet een set CSV-bestanden zijn in een Amazon S3-bucket . Tussen het ophalen van de Oracle-gegevens en het dumpen ervan in CSV-vorm op S3, moet er iets zijn dat PII-gegevens verwijdert/anonimiseert. Indien mogelijk moet de gekozen oplossing cloud native zijn. In deze 3-delige blogreeks leg ik uit hoe je eenvoudige en flexibele ETL-gebaseerde anonimisering opzet: Het onderzoek naar producten die gebruikt zouden kunnen worden om het probleem op te lossen. Controleer ook hoe geschikt ze zijn voor wat de proof of concept moet bereiken. Hoe het gekozen product gebruikt kan worden om een ETL pipeline te maken die aan de eisen voldoet. Daarnaast, hoe je een lokale Oracle database opzet in Docker die gebruikt kan worden als databron voor het data ingestion deel van het proof of concept (gewoon omdat dit zo'n PITA was om te doen). En of dit op een cloud native manier kan worden gedaan. Onderzoek Het onderzoeksdeel van het proof of concept bestaat uit 2 delen: Hoe haal je data uit een Oracle database, anonimiseer je het op de een of andere manier en sla je het op als een stel CSV bestanden in een S3 bucket aka het ETL gedeelte. Uitzoeken wat de beste manier is om de anonimisering uit te voeren. De gegevens extraheren, transformeren en opslaan Het probleem van de klant klonk meteen al opmerkelijk als iets dat je zou kunnen oplossen met een ETL-product: Extract Transform Load . Het onderzoeksgedeelte voor dit deel van het proof of concept zou zich dus concentreren op dit type product. Ik kreeg ook wat input van iemand in mijn team om eens te kijken naar singer.io , omdat dat iets was dat ze in het verleden met succes hadden gebruikt voor dit soort problemen. Als je naar de homepage van Singer kijkt, vallen een aantal dingen meteen op: Singer maakt gegevensextractie en -consolidatie mogelijk voor alle tools van je organisatie. De open-source standaard voor het schrijven van scripts die gegevens verplaatsen. Unix-geïnspireerd: Singer taps en targets zijn eenvoudige applicaties samengesteld met pipes. JSON-gebaseerd: Singer-toepassingen communiceren met JSON, waardoor ze eenvoudig te gebruiken en te implementeren zijn in elke programmeertaal. Singer is dus gewoon een specificatie, zij het geen officiële. Het is een eenvoudig, op JSON gebaseerd dataformaat en je kunt iets in dit formaat produceren (een tap in Singer terminologie) of het formaat consumeren (een target ). Je kunt deze taps en targets aan elkaar koppelen om gegevens van de ene locatie te halen en op een andere locatie op te slaan. Singer wordt standaard geleverd met een heleboel taps (meer dan 100) en targets (10). Deze taps en targets zijn geschreven in Python. Omdat het centrale punt van het systeem slechts een gegevensformaat is, is het vrij eenvoudig om er zelf een te schrijven of een bestaand formaat aan te passen. Bij het controleren van de taps zou de standaard Oracle-tap het Extract-gedeelte van ons proof of concept moeten dekken. Hetzelfde lijkt echter niet het geval te zijn voor het Load gedeelte als we kijken naar de standaard targets. Er is een CSV target , maar deze slaat de resultaten lokaal op, niet in een S3 bucket. Er is een optie om gewoon dit doel te gebruiken en de S3 upload zelf te doen nadat de ETL pijplijn is voltooid. Een andere optie zou zijn om het bestaande CSV target aan te passen en de bestandsopslag te veranderen naar S3. Even Googelen levert een door de gemeenschap gemaakt S3 CSV Singer doel op. Volgens de documentatie zou dit target precies moeten doen wat we willen. Oeps, Singer transformeert niet Met de Extract en Load delen gedekt, blijft alleen het Transform deel van de ETL pijplijn over om uit te zoeken... en dit is waar het een beetje vreemd wordt. Ook al is Singer geclassificeerd als een ETL tool, het lijkt geen ondersteuning te hebben voor het transformatie gedeelte? Toen ik hier verder naar keek, kwam ik deze onheilspellend getitelde post tegen: Why our ETL tool does not do transformations . Als ik dit lees, lijkt het erop dat ze hun JSON specificatie/gegevensformaat beschouwen als het transformatiegedeelte. Dus ze ondersteunen transformatie naar ruwe gegevens en het opslaan ervan, maar ondersteunen geen andere soorten transformaties. Dat deel mag je zelf doen nadat het ergens is opgeslagen door een Singer-doel. Het blijkt dus dat Singer meer lijkt op het EL deel van een ELT product dan op een "old school" ETL product . Op dit punt zou Singer in ieder geval voldoende moeten zijn om de gegevens uit een Oracle database te halen en in CSV-formaat in een S3 bucket te zetten. En omdat Singer vrij eenvoudig, open en uitbreidbaar is, laat ik het hier voorlopig bij. Laten we verder kijken naar de anonimiseringsopties die in deze Singer-context zouden kunnen passen. Gegevens anonimiseren Net als bij het ETL-gedeelte, kreeg ik ook voor dit gedeelte wat input die me wees op Microsoft Presidio . Op de homepage kunnen we het volgende lezen: Het biedt snelle identificatie- en anonimiseringsmodules voor privé-entiteiten in tekst en afbeeldingen , zoals creditcardnummers, namen en meer. Het faciliteert zowel volledig geautomatiseerde als semi-geautomatiseerde PII de-identificatiestromen op meerdere platforms. Aanpasbaarheid in PII-identificatie en -anonimisering. Er staan dus veel veelbelovende dingen in die me zouden kunnen helpen bij het oplossen van mijn anonimiseringsbehoeften. Bij nader onderzoek lijkt het erop dat ik dit product evalueer tijdens een grote transformatie (snap je? 😉 ) van V1 naar V2. V1 bevatte wat ETL-achtige dingen zoals het ophalen van gegevens uit bronnen (hoewel Oracle-ondersteuning in de roadmap nooit lijkt te zijn gerealiseerd ) en het opslaan van geanonimiseerde resultaten in een aantal vormen/locaties. V2 heeft deze aanpak echter volledig losgelaten en concentreert zich puur op het detecteren en vervangen van PII-gegevens. In de kern is Presidio V2 een op Python gebaseerd systeem dat bovenop een AI-model is gebouwd. Dit stelt het in staat om automatisch PII-gegevens te ontdekken in tekst en afbeeldingen en deze te vervangen volgens de regels die je definieert. Ik heb wat tests gedaan met behulp van hun online testtool en het werkt min of meer, maar voor onze specifieke context moet het zeker worden aangepast. Als we kijken naar de meegeleverde testgegevens, lijkt het erop dat het vooral eenvoudige en korte gegevens zijn, maar geen grote tekstblokken of afbeeldingen. Dit roept de vraag op: zelfs als we Presidio kunnen configureren om te doen wat we willen, slaan we misschien kleine spijkers met een grote hamer? Is Presidio te veel? Laten we hier nog eens over nadenken. Als we gemakkelijk kunnen weten en definiëren welke eenvoudige kolommen in welke tabellen moeten worden geanonimiseerd en wanneer gewoon nulling of hashing van de kolomwaarden voldoende is, dan hebben we het autodetectie deel van Presidio niet nodig. We hebben ook geen Presidio-ondersteuning nodig voor volledige tekst of afbeeldingen en we hebben ook geen fancy substitutie-ondersteuning nodig. Presidio zou een krachtige bibliotheek kunnen zijn om een automatische anonimiseringsstap te maken voor onze Singer-gebaseerde pijplijn. Het helpt ook dat Presidio gebaseerd is op Python. Maar mijn gevoel zegt dat ik misschien eerst moet proberen om een iets eenvoudigere oplossing te vinden. Ik begon te zoeken naar iets dat een eenvoudige PII-vervanging kan doen en dat werkt in een Singer tap/target context. Ik vond deze Github repository: pipelinewise-transform-field . In de documentatie staat "Transformatiecomponent tussen Singer taps en targets". Klinkt verdacht veel als het " T " deel dat Singer als een ETL miste! Verderop in de configuratiesectie lezen we zelfs: "Je moet definiëren welke kolommen door welke methode moeten worden getransformeerd en in welke conditie de transformatie moet worden toegepast." en de mogelijke transformatietypes zijn: SET-NULL : transformeert elke invoer naar NULL HASH : transformeert stringinvoer naar hash HASH-SKIP-FIRST-n : Transformeert stringinvoer naar hash waarbij de eerste n tekens worden overgeslagen, bijv. HASH-SKIP-FIRST-2 MASK-DATE : Vervangt de maand- en dagdelen van datumkolommen door 1 jan. MASK-NUMBER : Zet elke numerieke waarde om in nul. MASK-HIDDEN : verandert een willekeurige tekenreeks in 'verborgen'. Dit lijkt volledig te voldoen aan onze eenvoudige anonimiseringseisen! We kunnen zelfs zien hoe we het moeten gebruiken in de context van Singer: some-singer-tap | transform-field --config [config.json] | some-singer-target Standaard Conclusie We hebben nu alle stukjes van de puzzel voor het opzetten van eenvoudige en flexibele ETL-gebaseerde anonimisering. In de volgende blogpost laten we zien hoe ze in elkaar passen en of ze de resultaten opleveren die de klant zoekt.
Lees verder

We zijn als ACA Group officieel ISO 27001 compliant! Onze Information Security Manager Simon Vercruysse legt uit wat die certificatie precies inhoudt en wat de voordelen zijn voor jouw (toekomstige) project.
Lees verder

CloudBrew is altijd een hoogtepunt op onze kalender geweest, maar de editie van 2025 voelde anders. Misschien lag het aan de timing. Slechts een maand eerder, in november 2025, opende de Azure Belgium Central-regio eindelijk haar deuren. ACA opereert al altijd vanuit het hart van Europa, dus het live gaan van deze grote nationale mijlpaal net voor de conferentie zorgde voor een extra dosis enthousiasme.
Lees verderWant to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!


