0Pricing
Cloud & IT Cert Prep · Leçon

Contrôle d’accès S3 : stratégies de compartiment et ACL

Rédigez des stratégies de compartiment, comparez-les aux ACL et configurez les paramètres de blocage de l’accès public pour un hébergement sécurisé.

Contrôle d’accès S3 : stratégies de compartiment et ACL est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Présentation du contrôle des accès S3

S3 propose plusieurs mécanismes de contrôle des accès qui se recouvrent : les politiques IAM (fondées sur l'identité, elles contrôlent ce que les principaux peuvent faire), les politiques de compartiment (politiques JSON fondées sur les ressources et appliquées au compartiment), les listes de contrôle d'accès (ACL) (autorisations héritées accordées par objet ou par compartiment) et le blocage de l'accès public S3 (remplacement au niveau du compte ou du compartiment qui bloque tout accès public, quelles que soient les autres politiques). Pour la plupart des cas d'utilisation actuels, l'approche recommandée consiste à associer les politiques de compartiment au blocage de l'accès public ; les ACL sont considérées comme obsolètes.

Politiques de bucket : JSON basé sur les ressources

Une politique de bucket est un document JSON directement associé au bucket S3. Elle définit quels principaux (utilisateurs IAM, rôles, comptes AWS, services ou le public) peuvent effectuer quelles actions sur quelles ressources (le bucket et/ou des préfixes de clés spécifiques). Les politiques de bucket prennent en charge l’accès inter-comptes sans nécessiter de rôles IAM : vous pouvez accorder directement dans la politique de bucket à un rôle IAM d’un autre compte AWS un accès en lecture à des objets spécifiques. Chaque bucket peut avoir une politique, dont la taille maximale est de 20 KB.

# Allow a specific IAM role from another account to read objects
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'AWS': 'arn:aws:iam::999999999999:role/PartnerReadRole'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/partner-data/*'
  }]
}

Rendre des objets lisibles publiquement

Pour diffuser du contenu public (par exemple, des ressources de site web statique ou des jeux de données publics), vous pouvez rendre des objets lisibles publiquement au moyen d’une politique de bucket. Commencez par désactiver Block Public Access au niveau du bucket, puis ajoutez une instruction de politique de bucket contenant Principal: '*' et Action: s3:GetObject. Il est nécessaire à la fois de désactiver le paramètre Block Public Access et d’utiliser Allow dans la politique de bucket : activer l’un sans l’autre ne fonctionnera pas. Limitez toujours Resource à un préfixe spécifique plutôt qu’au bucket entier, sauf si vous souhaitez volontairement rendre tous les objets publics.

# Public read policy for static website assets
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': '*',
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-website-bucket/public/*'
  }]
}

Paramètres S3 Block Public Access

S3 Block Public Access est un filet de sécurité composé de quatre paramètres qui prévalent sur les politiques de bucket et les ACLs : BlockPublicAcls (refuse les requêtes visant à définir des ACLs publiques), IgnorePublicAcls (ignore les ACLs publiques existantes), BlockPublicPolicy (refuse les politiques de bucket qui accordent un accès public) et RestrictPublicBuckets (restreint l’accès selon la politique publique). Les quatre paramètres sont activés par défaut. Vous pouvez aussi activer Block Public Access au niveau du compte, ce qui le bloque pour tous les buckets, quels que soient les paramètres de chaque bucket. C’est idéal pour éviter toute exposition publique accidentelle.

# Enable all Block Public Access settings on a bucket
aws s3api put-public-access-block \
  --bucket my-private-bucket \
  --public-access-block-configuration \
    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true

Listes de contrôle d’accès (ACLs) : héritage

Les ACLs S3 constituent le mécanisme de contrôle d’accès d’origine, antérieur à IAM. Une ACL accorde des autorisations prédéfinies (READ, WRITE, FULL_CONTROL) à des comptes AWS ou à des groupes prédéfinis (tous les utilisateurs, utilisateurs AWS authentifiés, livraison de journaux). Les ACLs peuvent être appliquées au niveau du bucket ou de chaque objet. AWS recommande désormais de désactiver les ACLs (le paramètre S3 « Bucket Owner Enforced » attribue au propriétaire du bucket tous les objets et désactive les ACLs) et d’utiliser plutôt les politiques de bucket et IAM. Les ACLs sont toujours évaluées dans l’examen SAA-C03 comme concept hérité.

# Disable ACLs by setting ownership to BucketOwnerEnforced
aws s3api put-bucket-ownership-controls \
  --bucket my-bucket \
  --ownership-controls '{"Rules":[{"ObjectOwnership":"BucketOwnerEnforced"}]}'

Origin Access Control pour CloudFront

Lorsque vous diffusez du contenu S3 via CloudFront, vous souhaitez que le bucket reste privé tout en permettant à CloudFront de récupérer les objets. Utilisez Origin Access Control (OAC), le remplaçant moderne d’Origin Access Identity (OAI). OAC crée une identité CloudFront à laquelle vous accordez l’autorisation s3:GetObject dans la politique de bucket, tout en gardant Block Public Access activé. Ainsi, les utilisateurs doivent passer par CloudFront (pour la mise en cache, WAF et HTTPS) et ne peuvent pas accéder directement au bucket : c’est un modèle d’architecture sécurisée courant dans l’examen SAA-C03.

# Bucket policy granting CloudFront OAC access
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'Service': 'cloudfront.amazonaws.com'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/*',
    'Condition': {
      'StringEquals': {
        'AWS:SourceArn': 'arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE'
      }
    }
  }]
}

Accès S3 inter-comptes

Il existe deux façons d’accorder à un autre compte AWS l’accès à votre bucket S3. Option 1 — Politique de bucket : ajoutez une instruction contenant l’ARN du compte externe comme Principal et les actions S3 souhaitées. Les utilisateurs et rôles IAM du compte externe ont toujours besoin d’autorisations IAM pour appeler S3, et la politique de bucket doit aussi les Allow. Option 2 — Rôle IAM avec politique de confiance : créez dans votre compte un rôle approuvé par le compte externe ; les identités du compte externe endossent ce rôle et obtiennent les autorisations de votre bucket. La politique de bucket est plus simple dans les scénarios en lecture seule ; les rôles sont préférables pour les accès opérationnels.

Configuration CORS pour les applications web

Cross-Origin Resource Sharing (CORS) permet à une application web hébergée sur un domaine d’effectuer des requêtes JavaScript de récupération vers un bucket S3 situé sur un autre domaine. Sans configuration CORS, les navigateurs bloquent ces requêtes pour des raisons de sécurité. Vous ajoutez au bucket une configuration CORS qui spécifie les origines, méthodes HTTP et en-têtes autorisés. CORS est couramment nécessaire lorsqu’une SPA React hébergée sur example.com récupère directement des images ou des fichiers depuis l’URL d’un bucket S3.

# Apply a CORS configuration
aws s3api put-bucket-cors \
  --bucket my-website-bucket \
  --cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://example.com"],"AllowedMethods":["GET"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'

URL pré-signées pour un accès temporaire

Une URL pré-signée accorde un accès limité dans le temps à un objet S3 privé (pour GET ou PUT), sans modifier les autorisations du bucket ni de l’objet. L’URL intègre vos identifiants et une heure d’expiration : toute personne possédant l’URL peut accéder à l’objet jusqu’à son expiration. Utilisez des URL pré-signées pour permettre aux utilisateurs authentifiés de votre application de télécharger des fichiers privés, autoriser les clients à envoyer des fichiers directement vers S3 sans passer par votre backend, ou partager temporairement des rapports. L’expiration peut aller de 1 seconde à 7 jours (lors de l’utilisation d’identifiants temporaires STS, le maximum est de 12 heures).

# Generate a pre-signed GET URL valid for 24 hours
aws s3 presign s3://my-private-bucket/reports/invoice.pdf \
  --expires-in 86400

# Generate a pre-signed PUT URL (for client uploads)
aws s3 presign s3://my-private-bucket/uploads/new-file.pdf \
  --expires-in 3600 \
  --method PUT

Conditions de politique de bucket pour la sécurité

Utilisez les conditions des politiques de bucket pour ajouter une sécurité contextuelle. Modèles courants : aws:SourceIp limite l’accès à des plages IP spécifiques (par exemple, des points de terminaison VPC ou des réseaux d’entreprise) ; aws:SecureTransport: true impose HTTPS en refusant les requêtes via HTTP (une bonne pratique pour tous les buckets stockant des données sensibles) ; s3:x-amz-server-side-encryption garantit que les objets doivent être envoyés avec un chiffrement côté serveur ; et aws:PrincipalOrgID limite l’accès aux principaux de votre organisation AWS, empêchant l’exfiltration des données vers des comptes externes.

# Deny non-HTTPS access to the bucket
{
  'Effect': 'Deny',
  'Principal': '*',
  'Action': 's3:*',
  'Resource': [
    'arn:aws:s3:::my-secure-bucket',
    'arn:aws:s3:::my-secure-bucket/*'
  ],
  'Condition': {
    'Bool': {'aws:SecureTransport': 'false'}
  }
}

Points de terminaison VPC S3 pour un accès privé

Par défaut, les instances EC2 d’un sous-réseau privé accèdent à S3 par Internet (via une passerelle NAT), ce qui entraîne des coûts NAT et expose le trafic à Internet public. Les Gateway Endpoints S3 fournissent une connectivité privée à S3 depuis un VPC sans passerelle NAT, sans coût supplémentaire. Vous ajoutez le Gateway Endpoint à votre table de routage ; le trafic vers S3 est automatiquement acheminé par le réseau privé d’AWS. Vous pouvez aussi ajouter des conditions à la politique de bucket en utilisant aws:SourceVpce afin de limiter l’accès aux seules requêtes passant par le point de terminaison.

# Create an S3 gateway endpoint and associate with route tables
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-12345678 \
  --service-name com.amazonaws.us-east-1.s3 \
  --route-table-ids rtb-12345678

Vérification rapide

Testez votre compréhension des concepts AWS Solutions Architect (SAA-C03) abordés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que les politiques de bucket sont des documents JSON basés sur les ressources qui contrôlent l’accès inter-comptes et l’accès des services à S3, que S3 Block Public Access est un mécanisme de sécurité qui empêche les expositions publiques accidentelles, et que les URL pré-signées, les points de terminaison VPC et les configurations CORS répondent de manière sécurisée à des modèles d’accès spécifiques. Nous aborderons ensuite le versionnage S3, MFA Delete et la réplication.

Questions Fréquemment Posées

La leçon « Contrôle d’accès S3 : stratégies de compartiment et ACL » est-elle gratuite ?

Oui — le texte complet de « Contrôle d’accès S3 : stratégies de compartiment et ACL » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Contrôle d’accès S3 : stratégies de compartiment et ACL » ?

Rédigez des stratégies de compartiment, comparez-les aux ACL et configurez les paramètres de blocage de l’accès public pour un hébergement sécurisé. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?

Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Contrôle d’accès S3 : stratégies de compartiment et ACL » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?

Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Compartiments, objets et régions
  2. Contrôle d’accès S3 : stratégies de compartiment et ACL
  3. Gestion des versions, suppression MFA et réplication
  4. Classes de stockage et stratégies de cycle de vie
← Retour à Cloud & IT Cert Prep