Amazon Web Services (AWS) is een van de belangrijkste aanbieders van cloudhostingdiensten ter wereld. Vooral de Simple Storage Service (S3) is erg populair. Gegevens die zijn opgeslagen in S3-buckets kunnen echter vatbaar zijn voor hacks en inbreuken als je ze niet beschermt.
Enkele nuttige tips voor het beveiligen van jouw S3-buckets zijn:
- Configureer het toegangsbeleid goed om te bepalen wie objecten kan bekijken en bewerken die zijn opgeslagen in jouw S3-buckets. Dit helpt inbreuken te voorkomen die ontstaan doordat per ongeluk toegang wordt verleend. Amazon biedt verschillende manieren om toegang te definiëren, zoals bucket policy’s, toegangspunten en toegangscontrolelijsten.
- Versleutel de gegevens die worden geüpload naar AWS S3-buckets. Zelfs als er een datalek plaatsvindt, worden je gegevens niet volledig blootgesteld als ze versleuteld zijn. Je kunt het encryptieproces zelf afhandelen of Amazon dit laten doen.
- Controleer regelmatig de toegangslogs. Deze logs bevatten details van toegangsverzoeken van verschillende gebruikers. Je kunt ongeautoriseerde verzoeken identificeren en beperken om een inbreuk te voorkomen.
Bekijk de rest van het artikel voor meer informatie over het beveiligen van jouw AWS S3-buckets.
Amazon Web Services (AWS) is wereldwijd de grootste aanbieder van clouddiensten. AWS Simple Storage Service (S3) is een objectopslagdienst die deel uitmaakt van de AWS-suite. Met AWS S3 kunnen gebruikers bestanden, muziek, video’s en andere gegevens als objecten opslaan.
AWS S3-buckets zijn populair maar helaas ook gevoelig voor datalekken. Het datalek van Sephore, waarbij de gegevens van bijna een half miljoen klanten onbeveiligd online kwamen, was bijvoorbeeld te wijten aan een verkeerd geconfigureerd S3-toegangsbeleid. De in 2021 ontdekte en gepatchte SEGA-kwetsbaarheid was gebaseerd op soortgelijke S3-toegangsproblemen.
Het is belangrijk om te weten hoe je S3-buckets kunt beveiligen en beschermen. Dit artikel geeft enkele eenvoudige maar effectieve tips die AWS-gebruikers kunnen implementeren. Deze tips kunnen ervoor zorgen dat door hen in S3-buckets opgeslagen objecten veilig blijven.
Jouw AWS S3-buckets beveiligen
We hebben de stappen die je kunt nemen om jouw S3-buckets te beveiligen in twee secties verdeeld. We bespreken onderstaande zaken:
- Manieren waarop je een datalek kunt voorkomen door de toegang tot de buckets te configureren.
- Maatregelen die de gevolgen van een mogelijke gegevensinbreuk helpen beperken.
We kijken eerst naar de preventieve stappen die je kunt nemen om jouw AWS S3-buckets te beveiligen.
Gegevensverlies voorkomen door de toegang te beheren
De meeste AWS S3-datalekken worden veroorzaakt door verkeerd geconfigureerd beleid dat onbedoeld publieke toegang verleent. Daarom is het goed configureren van het toegangsbeleid van cruciaal belang bij het voorkomen van datatakken.
De mate van toegang die anderen hebben tot jouw S3-buckets hangt af van waar je ze voor gebruikt. Sommigen gebruiken ze om informatie en gegevens te delen met grote teams, terwijl anderen ze gebruiken om hun persoonlijke informatie op te slaan.
Je krijgt toegang tot een S3-bucket via een URL. Het delen van informatie met grote teams vereist dat alle teamleden enige vorm van toegang tot de buckets hebben. Wanneer je S3-buckets gebruikt om persoonlijke informatie op te slaan, dan mag de bucket geen publieke toegang hebben. Gelukkig kan AWS op de volgende manieren worden gebruikt om verschillende toegangscontroles te creëren:
1. Openbare toegang blokkeren

Als je S3-buckets voornamelijk gebruikt om persoonlijke gegevens of back-upbestanden op jouw apparaten op te slaan, dan kun je het beste standaard de openbare toegang ontzeggen. Dit betekent dat alleen jij de bestanden kunt openen en bewerken. Met AWS S3 Block Public Access Settings kun je alle publieke toegang tot objecten die in jouw buckets zijn opgeslagen blokkeren.
Het gebruik van ‘Block all public access’ overschrijft alle andere toegangspermissies, zoals Access Controls Lists (ACL’s) en Access Points. Als je toch enige vorm van toegang wilt verlenen aan anderen, kun je kiezen uit de vier andere opties hieronder.
Tenzij je jouw algemene instellingen hebt gewijzigd, moeten alle nieuwe emmers standaard alle openbare toegang blokkeren.
2. S3 Bucket Policies gebruiken om bucket toegang te controleren
Overweeg het gebruik van S3 Bucket Policies als je wilt dat anderen toegang hebben tot jouw buckets, maar wilt controleren wie welke objecten kan bewerken en op welke manier. Deze gelden voor alle objecten in de bucket en kunnen worden geconfigureerd om de toegang op veel verschillende manieren te beperken.
Een bucket policy kan bijvoorbeeld worden geconfigureerd om alleen toegang te verlenen vanaf bepaalde IP-adressen:

Je kunt de bucket policy ook gebruiken om toegang te verlenen als aan bepaalde andere gespecificeerde voorwaarden is voldaan. Je kunt bijvoorbeeld de kans op man-in-the-middle-aanvallen verkleinen door alleen toegang te verlenen vanaf HTTPS-domeinen.
3. Rollen beheren met behulp van Identity and Access Management
Zowel S3 bucket policies als Identity and Access Management (IAM) zijn vergelijkbaar in de zin dat ze beide de toegang tot jouw S3-buckets controleren. IAM definieert echter wat toegestane gebruikers wel en niet kunnen doen in de Amazon Web Service omgeving.
Zo kun je bijvoorbeeld aan sommige gebruikers ‘alleen lezen’ toegang verlenen, maar aan anderen ‘lezen/schrijven’ toegang. Bucket policies daarentegen specificeren alleen welke acties zijn toegestaan voor een bepaalde bucket.
Met andere woorden, IAM houdt zich bezig met meer macro-machtigingen. Het bucketbeleid specificeert de toegangsregels. Het gelijktijdig gebruik van IAM en ‘bucket policies’ is de optimale strategie.
Er zijn echter een paar omstandigheden waarin we aanraden om specifiek IAM te willen gebruiken:
- Je hebt te maken met andere AWS-diensten dan S3 en wilt in één keer machtigingen instellen voor alle diensten.
- Je hebt meerdere S3-buckets met verschillende toestemmingsvereisten. Het is vaak gemakkelijker om een gedetailleerd IAM-beleid in plaats van een gedetailleerd bucketbeleid in te stellen voor elke bucket.
Bij het opstellen van jouw IAM-beleid is het aan te raden om te beginnen met het toekennen van het minimale toegangsniveau en vervolgens de machtigingen naar behoefte te verhogen.
4. Objecttoegang definiëren met behulp van toegangscontrolelijsten (ACL’s)
Voordat we bespreken hoe ACL’s kunnen worden gebruikt voor S3-buckets willen we eerst nog een disclaimer geven. Amazon adviseert vast te houden aan IAM en bucket policies voor het regelen van toegang. Dit is waarschijnlijk omdat verkeerd geconfigureerde ACL’s hebben geleid tot enkele van de meer prominente S3-inbreuken.
We zullen nu bespreken hoe ACL’s verschillen van bucket policies. Zoals we eerder hebben vermeld, geldt het S3-bucketbeleid voor alle objecten binnen één emmer. Hierdoor is het onmogelijk om verschillende permissies in te stellen voor verschillende objecten in een S3-emmer met behulp van bucket policies.
Dit is waar ACL’s van pas komen. Je kunt er een gebruiken om gedetailleerde machtigingen in te stellen voor elk object binnen een emmer. Een specifiek object van de bucket kan openbaar worden gemaakt terwijl de rest van de emmer privé is en vice versa. Dit is nuttig in situaties waarin je wilt dat bepaalde objecten binnen een bucket een andere toegang hebben dan andere objecten.
5. S3 Access Points gebruiken
Amazon heeft een nieuwe en efficiënte manier aangekondigd om de toegang tot S3-buckets te beheren. Met deze nieuwe functie, genaamd Access Points, kunnen gebruikers een uniek toegangscontrolebeleid maken voor elk toegangspunt in een bucket. Daardoor wordt het beheer van toegangsrechten in grote S3-buckets, zoals data lakes, veel eenvoudiger met Access Points. Een data lake, letterlijk een emmer aan data, is een opslaglocatie waarin een grote hoeveelheid ruwe data is opgeslagen in zijn oorspronkelijke format.
In plaats van een enkel lang beleid te configureren voor de hele emmer, kunnen gebruikers de machtigingen controleren aan de hand van specifieke toegangspunten. Dit maakt het schalen van machtigingen over grote datasets eenvoudiger.
Access points kunnen worden gebruikt om toegang te verlenen aan een individu of een groep. De toegangspunten kunnen specifiek zijn voor een bepaalde toepassing of voor een groep toepassingen.
Gebruikers kunnen toegangspunten gebruiken om ervoor te zorgen dat alle toegang tot S3-bronnen alleen via een Virtual Private Cloud (VPC) verloopt. De Amazon VPC is een privé-cloud binnen de AWS-infrastructuur.
Tips om de gevolgen van een datalek te beperken
Zelfs als je jouw toegangsbeleid perfect hebt geconfigureerd, kan een kwaadwillende op het web jouw S3-buckets binnendringen. In zo’n situatie is het belangrijk om de potentiële schade van een datalek te minimaliseren. Enkele nuttige manieren om dit te doen zijn het versleutelen van de opgeslagen gegevens en het bijhouden van auditlogs.
Versleutel gegevens die zijn opgeslagen op S3-buckets
Het is belangrijk om de gegevens te versleutelen die je opslaat op een S3-emmer. Zo voorkom je dat een hacker toegang kan krijgen tot jouw AWS-dashboard. Hierdoor kun je voorkomen dat je gegevens volledig worden blootgesteld in het geval van een inbreuk.
Een andere manier om jouw AWS-account extra te beveiligen is het inschakelen van multifactorauthenticatie (MFA). Als je MFA inschakelt dan moet je een extra beveiligingscode invoeren bij het inloggen op je account. Dit helpt om jouw account veilig te houden.
Je kunt jouw gegevens in transit (tijdens de overdracht naar de AWS-servers) en in rust (tijdens de opslag op de AWS-servers) versleutelen. Voor encryptie in rust kun je kiezen uit de volgende opties:
- Client-Side Encryption – de gebruiker versleutelt de gegevens zelf voordat hij ze uploadt naar de AWS-server. De gegevens worden versleuteld voordat ze het apparaat verlaten. Het gebruik van client-side encryptie zorgt er dus voor dat de gegevens ook tijdens het transport worden versleuteld.
- Server-Side Encryption – AWS beheert het versleutelingsproces. Het versleutelt door de gebruiker geüploade gegevens met behulp van standaarden zoals AES-256 en ontsleutelt ze indien nodig. Zoals de volgende afbeelding laat zien, biedt AWS twee soorten server-side encryptie: SSE-S3, waarbij S3 de sleutels aanmaakt en beheert, en SSE-KWS, waarbij de AWS KMS de encryptiesleutels beschermt.

Bij het gebruik van SSE is het belangrijk om encryptie tijdens de transit af te dwingen. Dit gebeurt door het definiëren van emmerbeleid dat alleen toegang verleent aan verzoeken die het HTTPS-protocol gebruiken, zoals hierboven besproken.
Bijhouden van audit logs
Als een inbreuk plaatsvindt, is het belangrijk om vast te stellen waar die vandaan komt. Logging komt hierbij van pas. Met AWS kun je gegevens vastleggen over de verschillende verzoeken die aan een bepaalde bucket of object worden gedaan. Hierdoor kunnen potentieel schadelijke toegangsverzoeken worden geïdentificeerd en geblokkeerd. Toegangsverzoeken kunnen op de volgende manieren worden gelogd:
- Server Logs – deze logs bevatten details over het verzoek, zoals de aanvrager en de target bucket. Serverlogs zijn gratis aan te maken. Ze worden echter opgeslagen in een andere S3-bucket, wat je geld kost. De onderstaande afbeelding laat zien hoe serverlogging kan worden geconfigureerd.
- AWS CloudTrail – CloudTrail is een handige tool waarmee de toegang op objectniveau kan worden gevolgd. Gedetailleerde activiteiten, zoals de herkomst van het verzoek, kunnen worden bekeken voor elk object in de bucket. Het is wel een betaalde dienst.

Conclusie: AWS S3 Bucket beveiligen
Als je AWS gebruikt om belangrijke gegevens en bestanden op te slaan, dan is het erg belangrijk om jouw S3-buckets goed te beveiligen. Begin met het instellen van beleid voor toegangsbeheer en versleutel de gegevens die worden geüpload naar AWS S3-buckets. Controleer ook regelmatig de toegangslogs.
Je kunt een extra beveiligingslaag toevoegen aan jouw AWS-account door gebruik te maken van multifactorauthenticatie (MFA). MFA vereist meestal dat gebruikers zich twee keer authenticeren, een keer met hun wachtwoord en een andere keer via een eenmalig wachtwoord of authenticator-app.
Het beveiligen van AWS S3-buckets kost niet veel moeite en kan op de lange termijn enorm voordelig zijn. Dus waarom zou je het niet doen?
De FAQ-sectie hieronder biedt enkele korte en relevante antwoorden op enkele van de meest gestelde vragen over het beveiligen van Amazon S3-buckets. Laat het ons weten in de comments sectie als je nog meer vragen hebt.
Ja, AWS S3-emmers kunnen worden versleuteld. Je kunt client-side encryptie gebruiken en de gegevens zelf versleutelen. Je kunt ook server-side encryptie gebruiken en Amazon het encryptieproces laten afhandelen.
Het versleutelen van jouw gegevens is een goede manier om ervoor te zorgen dat ze niet volledig worden blootgesteld als er een datalek plaatsvindt.
AWS S3 is over het algemeen behoorlijk veilig. Toch zijn er enkele grote datalekken in het verleden toegeschreven aan verkeerd geconfigureerd toegangsbeleid op S3-buckets. Hierdoor waren de gegevens in de buckets toegankelijk voor onbevoegden.
Lees ons artikel over AWS S3-buckets om te leren hoe je toegang en machtigingen in AWS kunt beheren om je gegevens veilig te houden.
S3-buckets zijn standaard privé. Dit betekent dat niemand anders dan de eigenaar toegang heeft tot objecten in de buckets. Soms moet je echter toegang verlenen aan andere personen, zoals jouw teamleden. Je kunt dit doen door de instelling ‘Alle publieke toegang blokkeren’ in de AWS-beheerinterface uit te schakelen.
Wanneer je publieke toegang uitschakelt, zijn objecten in jouw bucket toegankelijk voor iedereen met de juiste URL.
Je kunt ongeoorloofd gebruik van S3-buckets voorkomen door het toegangsbeleid correct te configureren. Dit kan op verschillende manieren, zoals:
- Het gebruik van bucket policies om te definiëren wie toegang heeft tot objecten in een bucket en op welke manier.
- Identificatie- en toegangsbeheer om rollen te definiëren voor gebruikers in de grotere AWS-omgeving.
- Toegangscontrolelijsten om de toegang tot individuele objecten binnen een bucket te beheren.
- Toegangspunten om schaalbaar toegangsbeleid te creëren voor grote datasets.
In deze gids over AWS S3-bucketbeveiliging wordt elk van deze methoden in detail uitgelegd.
