Définition des autorisations pour l'accès au site web - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Définition des autorisations pour l'accès au site web

Lorsque vous configurez un compartiment en tant que site web statique, si vous voulez que votre site web soit public, vous pouvez accorder un accès public en lecture. Pour que votre compartiment soit lisible publiquement, vous devez désactiver les paramètres de blocage de l'accès public pour le compartiment et écrire une stratégie de compartiment qui octroie un accès en lecture public. Si votre compartiment contient des objets qui n'appartiennent pas au propriétaire du compartiment, il se peut que vous ayez également besoin d'ajouter une liste ACL des objets qui accorde l'accès en lecture à tous.

Si vous ne souhaitez pas désactiver les paramètres de blocage de l'accès public pour votre compartiment, mais que vous souhaitez tout de même que votre site Web soit public, vous pouvez créer une CloudFront distribution Amazon pour servir votre site Web statique. Pour plus d'informations, consultez Accélérez votre site Web avec Amazon CloudFront ou utilisez une CloudFront distribution Amazon pour servir un site Web statique dans le guide du développeur Amazon Route 53.

Note

Sur le point de terminaison du site web, si un utilisateur demande un objet qui n'existe pas, Amazon S3 renvoie le code réponse HTTP 404 (Not Found). Si l'objet existe, mais que vous n'avez pas l'autorisation en lecture dessus, le point de terminaison du site Web renvoie un code réponse HTTP 403 (Access Denied). L'utilisateur peut utiliser le code réponse pour déduire si un objet spécifique existe ou non. Si vous ne voulez pas ce type de comportement, vous ne devez pas activer la prise en charge du site Web pour votre compartiment.

Étape 1 : Modifier les paramètres de blocage de l'accès public S3

Si vous voulez configurer un compartiment existant en tant que site web statique ayant un accès public, vous devez modifier les paramètres de blocage de l'accès public pour ce compartiment. Vous devrez peut-être également modifier les paramètres de blocage de l'accès public au niveau de votre compte. Amazon S3 applique la combinaison la plus restrictive de paramètres de blocage de l'accès public au niveau du compartiment et du compte.

Par exemple, si vous autorisez l'accès public pour un compartiment, mais que vous bloquez tout accès public au niveau du compte, Amazon S3 continue de bloquer l'accès public au compartiment. Dans ce scénario, vous devez modifier vos paramètres de blocage de l'accès public de niveau compartiment et de niveau compte. Pour plus d’informations, consultez Blocage de l'accès public à votre stockage Amazon S3.

Par défaut, Amazon S3 bloque l'accès public à votre compte et à vos compartiments. Si vous souhaitez utiliser un compartiment pour héberger un site web statique, vous pouvez utiliser ces étapes pour modifier vos paramètres de blocage de l'accès public.

Avertissement

Avant de terminer cette étape, revoyez Blocage de l'accès public à votre stockage Amazon S3 pour vous assurer que vous comprenez et acceptez les risques liés à l'autorisation d'accès public. Lorsque vous désactivez les paramètres de blocage de l'accès public pour rendre votre compartiment public, toute personne sur Internet peut accéder à votre compartiment. Nous vous recommandons de bloquer tout accès public à vos compartiments.

  1. Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/.

  2. Choisissez le nom du compartiment que vous avez configuré en tant que site web statique.

  3. Choisissez Permissions.

  4. Sous Block public access (bucket settings) (Bloquer l'accès public (paramètres de compartiment)), choisissez Edit (Modifier).

  5. Effacez Block all public access (Bloquer tous les accès publics) et choisissez Enregistrer les modifications.

    Avertissement

    Avant de terminer cette étape, examinez Blocage de l'accès public à votre stockage Amazon S3 pour vous assurer que vous comprenez et acceptez les risques liés à l'autorisation d'accès public. Lorsque vous désactivez les paramètres de blocage de l'accès public pour rendre votre compartiment public, toute personne sur Internet peut accéder à votre compartiment. Nous vous recommandons de bloquer tout accès public à vos compartiments.

    Amazon S3 désactive les paramètres de blocage de l'accès public pour votre compartiment. Pour créer un site web public statique, vous devrez peut-être aussi modifier les paramètres de blocage de l'accès public de votre compte avant d'ajouter une stratégie de compartiment. Si les paramètres du compte pour la fonctionnalité de blocage de l'accès public sont actuellement activés, une note s'affiche sous Block public access (bucket settings) (Bloquer l'accès public (paramètres de compartiment)).

Étape 2 : Ajouter une stratégie de compartiment

Pour que les objets de votre compartiment soient publiquement lisibles, vous devez écrire une stratégie de compartiment qui accorde à tous l'autorisation s3:GetObject.

Après avoir modifié les paramètres de blocage de l'accès public S3, vous devez ajouter une stratégie de compartiment pour accorder un accès public en lecture à votre compartiment. Lorsque vous accordez un accès public en lecture, tout le monde sur Internet peut accéder à votre compartiment.

Important

La stratégie suivante est uniquement un exemple et autorise un accès complet au contenu de votre compartiment. Avant d'effectuer cette étape, veuillez consulter Comment assurer la sécurité des fichiers de mon compartiment Amazon S3 ?, pour vous assurer que vous comprenez les bonnes pratiques pour sécuriser les fichiers dans votre compartiment S3 et les risques liés à l'octroi d'un accès public.

  1. Dans Compartiments, choisissez le nom de votre compartiment.

  2. Choisissez Permissions.

  3. Sous Bucket Policy (Stratégie de compartiment), choisissez Edit (Modifier).

  4. Pour accorder l'accès public en lecture à votre site web, copiez la stratégie de compartiment suivante et collez-la dans l'Éditeur de stratégie de compartiment.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::Bucket-Name/*" ] } ] }
  5. Mettez à jour Resource pour inclure le nom de votre compartiment.

    Dans l'exemple précédent de stratégie de compartiment, Bucket-Name est un espace réservé pour le nom du compartiment. Pour utiliser cette stratégie de compartiment avec votre propre compartiment, vous devez mettre à jour ce nom pour qu'il corresponde à celui de votre compartiment.

  6. Choisissez Enregistrer les modifications.

    Un message s'affiche indiquant que la stratégie de compartiment a été ajoutée avec succès.

    Si une erreur indique Policy has invalid resource, confirmez que le nom du compartiment dans la stratégie de compartiment correspond au nom de votre compartiment. Pour plus d’informations sur l’ajout d’une politique de compartiment, consultez Comment ajouter une politique de compartiment S3 ?

    Si vous recevez un message d'erreur et que vous ne pouvez pas enregistrer la stratégie de compartiment, vérifiez les paramètres de blocage de l'accès public de votre compte et de votre compartiment pour confirmer que vous autorisez l'accès public au compartiment.

Listes de contrôle d'accès à l'objet

Vous pouvez utiliser une stratégie de compartiment pour accorder des autorisations à vos objets. Cependant, la stratégie de compartiment s'applique uniquement aux objets appartenant au propriétaire du compartiment. Si votre compartiment contient des objets qui n'appartiennent pas au propriétaire du compartiment, l'autorisation READ publique sur ces objets doit être accordée à l'aide de la liste ACL des objets.

La propriété d'objets S3 est un paramètre Amazon S3 au niveau des compartiments que vous pouvez utiliser pour contrôler la propriété des objets qui sont chargés dans votre compartiment, ainsi que pour désactiver ou activer les listes ACL. Par défaut, la propriété des objets est définie sur le paramètre Propriétaire du compartiment appliqué et toutes les listes ACL sont désactivées. Lorsque les listes ACL sont désactivées, le propriétaire du compartiment détient tous les objets du compartiment et gère leur accès exclusivement au moyen de politiques de gestion des accès.

La majorité des cas d'utilisation modernes dans Amazon S3 ne nécessitent plus l'utilisation des listes ACL. Nous vous recommandons de maintenir les listes ACL désactivées, sauf dans des circonstances inhabituelles où vous devez contrôler l'accès individuellement pour chaque objet. Lorsque les listes ACL sont désactivées, vous pouvez utiliser des politiques pour contrôler l'accès à tous les objets de votre compartiment, quelle que soit la personne qui les a chargés dans votre compartiment. Pour plus d’informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Quand le paramètre Propriétaire du compartiment appliqué est activé, les demandes de définition des listes de contrôle d’accès (ACL) ou des listes ACL de mise à jour échouent et renvoient le code d’erreur AccessControlListNotSupported. Les demandes de lecture de listes ACL sont toujours prises en charge.

Pour qu'un objet soit accessible en lecture publiquement à l'aide d'une liste ACL, accordez une autorisation READ au groupe AllUsers, comme indiqué dans l'élément « grant » suivant. Ajoutez cet élément « grant » à la liste ACL d'objet. Pour plus d'informations sur la gestion des listes ACL, consultez la section Présentation de la liste de contrôle d'accès (ACL).

<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant>