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

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 quand même que votre site web soit public, vous pouvez créer une distribution Amazon CloudFront pour servir votre site web statique. Pour de plus amples informations, consultez Utilisation d'une distribution Amazon CloudFront 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 de plus amples informations, veuillez consulter 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, 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.

    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. Sélectionnez Save Changes.

    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 de plus amples informations sur l'ajout d'une stratégie de compartiment, veuillez consulter Comment ajouter une stratégie 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.

Par défaut, lorsqu'un autre Compte AWS télécharge un objet dans votre compartiment S3, ce compte (le rédacteur d'objet) est propriétaire de l'objet, y a accès et peut en accorder l'accès à d'autres utilisateurs via des ACL. Vous pouvez utiliser Object Ownership afin de modifier ce comportement par défaut, pour que les ACL soient désactivées et que vous, en tant que propriétaire du compartiment, possédiez automatiquement tous les objets de votre compartiment. Par conséquent, le contrôle d'accès à vos données est basé sur des stratégies, telles que les stratégies IAM, les stratégies de compartiment S3, les stratégies de point de terminaison de cloud privé virtuel (VPC) et les politiques de contrôle des services (SCP) AWS Organizations.

La majorité des cas d'utilisation modernes dans Amazon S3 ne nécessitent plus l'utilisation des listes ACL ; nous vous recommandons de désactiver les listes ACL, sauf dans des circonstances inhabituelles où vous devez contrôler l'accès de chaque objet individuellement. Avec Object Ownership, vous pouvez désactiver les listes ACL et vous fier aux stratégies pour le contrôle des accès. Lorsque vous désactivez les listes ACL, vous pouvez facilement gérer un compartiment avec des objets téléchargés par différents Comptes AWS. En tant que propriétaire du compartiment, vous êtes propriétaire de tous les objets du compartiment et pouvez gérer l'accès à ces derniers au moyen de stratégies. 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 appliqué par le propriétaire du compartiment pour S3 Object Ownership (Propriété de l'objet S3), vous devez utiliser des stratégies pour accorder l'accès à votre compartiment et aux objets qu'il contient. Les demandes de définition de listes ACL ou de mise à jour des listes ACL é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>