Utilisation d'Amazon S3 Block Public Access - Amazon Simple Storage Service

Utilisation d'Amazon S3 Block Public Access

La fonctionnalité Amazon S3 Block Public Access fournit des paramètres pour les points d'accès, les compartiments et les comptes afin de vous aider à gérer l'accès public aux ressources Amazon S3. Par défaut, les nouveaux compartiments, points d'accès et objets n'autorisent pas l'accès public. Toutefois, les utilisateurs peuvent modifier les stratégies de compartiment, les stratégies de point d'accès ou les autorisations d'objet pour autoriser l'accès public. Les paramètres S3 Block Public Access remplacent ces stratégies et autorisations pour que vous puissiez restreindre l'accès public à ces ressources.

Grâce à S3 Block Public Access, les administrateurs de compte et les propriétaires de compartiment peuvent configurer facilement les contrôles centralisés afin de restreindre l'accès public à leurs ressources Amazon S3 ; ces contrôles sont appliqués quel que soit le mode de création de ces ressources.

Quand Amazon S3 reçoit une demande d'accès à un compartiment ou à un objet, il détermine si le paramètre Block Public Access est défini pour le compartiment ou le compte du propriétaire de compartiment. Si la demande a été effectuée via un point d'accès, Amazon S3 vérifie également les paramètres de blocage d'accès public pour le point d'accès. S’il existe un paramètre de blocage d'accès public interdisant l'accès demandé, Amazon S3 rejette la demande.

Amazon S3 Block Public Access fournit quatre paramètres. Ces paramètres sont indépendants et peuvent être fournis sous n’importe quelle combinaison. Chaque paramètre peut être appliqué à un point d'accès, à un compartiment ou à l’ensemble d’un compte AWS. Si les paramètres de blocage d'accès public pour le point d'accès, le compartiment ou le compte diffèrent, Amazon S3 applique la combinaison la plus restrictive des paramètres du point d'accès, du compartiment et du compte.

Quand Amazon S3 évalue si une opération est interdite par un paramètre de blocage d'accès public, il rejette toute demande qui irait à l'encontre d'un paramètre de point d'accès, de compartiment ou de compte.

Avertissement

Un accès public est accordé aux compartiments et objets via les listes de contrôle d'accès (ACL), les stratégies de compartiment ou les deux. Pour être sûr que l'accès public à tous vos points d'accès, compartiments et objets Amazon S3 est bloqué, nous vous recommandons d'activer les quatre paramètres liés au blocage de l'accès public pour votre compte. Ces paramètres bloquent l'accès public pour tous les compartiments et points d'accès présents et futurs.

Avant d'appliquer ces paramètres, vérifiez que vos applications fonctionnent correctement sans accès public. Si vous avez besoin d'un certain niveau d'accès public à vos compartiments ou objets, par exemple pour héberger un site web statique comme décrit dans Hébergement d'un site Web statique sur Amazon S3,vous pouvez personnaliser les paramètres individuels afin de les adapter à vos cas d'utilisation du stockage.

Note
  • Vous pouvez activer les paramètres de blocage d'accès public uniquement pour des points d'accès, des compartiments et des comptes AWS. Amazon S3 ne prend pas en charge les paramètres de blocage d'accès public par objet.

  • Lorsque vous appliquez des paramètres Block Public Access à un compte, ces derniers s'appliquent globalement à toutes les régions AWS. Les paramètres peuvent ne pas prendre effet immédiatement ou simultanément dans toutes les régions, mais ils finissent par s'y propager.

Activer Block Public Access sur la console Amazon S3

Amazon S3 Block Public Access fournit quatre paramètres. Vous pouvez appliquer ces paramètres de manière combinée à des points d'accès individuels, à des compartiments ou à des comptes AWS entiers. L’image suivante montre comment activer le blocage d'accès public sur la console Amazon S3 pour votre compte. Pour plus d’informations, consultez Définition des autorisations : Block Public Access dans le Amazon Simple Storage Service Guide de l'utilisateur de la console.


				Capture d'écran de la console montrant les paramètres Block Public Access d’un compte.

Paramètres Block Public Access

S3 Block Public Access fournit quatre paramètres. Vous pouvez appliquer ces paramètres de manière combinée à des points d'accès individuels, à des compartiments ou à des comptes AWS entiers. Si vous appliquez un paramètre à un compte, il s'applique à tous les compartiments et points d'accès appartenant à ce compte. De même, si vous appliquez un paramètre à un compartiment, il s'applique à tous les points d'accès associés à ce compartiment.

Le tableau suivant contient les paramètres disponibles.

Nom Description
BlockPublicAcls

La configuration de cette option sur TRUE entraîne le comportement suivant :

  • Les appels PUT Bucket acl et PUT Object acl échouent si la liste de contrôle d'accès (ACL) spécifiée est publique.

  • Les appels PUT Object échouent si la demande inclut une ACL publique.

  • Si ce paramètre est appliqué à un compte, les appels PUT Bucket échouent si la demande inclut une ACL publique.

Lorsque ce paramètre est défini sur TRUE, les opérations spécifiées échouent (qu'elles soient effectuées via l'API REST, l'AWS CLI ou les kits AWS SDK). Toutefois, les stratégies et ACL existantes pour les compartiments et les objets ne sont pas modifiées. Ce paramètre vous protège contre l'accès public tout en vous permettant d'auditer, d'affiner ou de modifier les stratégies et ACL existantes pour vos compartiments et vos objets.

Note

Les points d'accès ne sont pas associés à des ACL. Si vous appliquez ce paramètre à un point d'accès, il agit comme une transmission au compartiment sous-jacent. Si ce paramètre est activé sur un point d'accès, les demandes effectuées via le point d'accès se comportent comme si ce paramètre était activé dans le compartiment sous-jacent, que ce paramètre soit activé ou non dans le compartiment.

IgnorePublicAcls

La configuration de cette option sur TRUE conduit Amazon S3 à ignorer toutes les ACL publiques sur un compartiment et tout objet qu'il contient. Ce paramètre vous permet de bloquer en toute sécurité l'accès public accordé par les ACL, tout en autorisant les appels PUT Object qui incluent une ACL publique (contrairement à BlockPublicAcls qui rejettent les appels PUT Object incluant une ACL publique). L'activation de ce paramètre n'affecte pas la persistance des ACL existantes et n'empêche pas la configuration de nouvelles ACL publiques.

Note

Les points d'accès ne sont pas associés à des ACL. Si vous appliquez ce paramètre à un point d'accès, il agit comme une transmission au compartiment sous-jacent. Si ce paramètre est activé sur un point d'accès, les demandes effectuées via le point d'accès se comportent comme si ce paramètre était activé dans le compartiment sous-jacent, que ce paramètre soit activé ou non dans le compartiment.

BlockPublicPolicy

Si vous définissez cette option sur TRUE pour un compartiment, Amazon S3 rejette les appels à la stratégie PUT Bucket si la stratégie de compartiment spécifiée autorise l'accès public, et rejette les appels à la stratégie PUT Access Point pour tous les points d'accès du compartiment si la stratégie spécifiée autorise l'accès public. Si vous définissez cette option sur TRUE pour un point d'accès, Amazon S3 rejette les appels à la stratégie PUT Access Point et à la stratégie PUT Bucket qui sont effectués via le point d'accès si la stratégie spécifiée (pour le point d'accès ou le compartiment sous-jacent) est publique.

Ce paramètre vous permet d'autoriser les utilisateurs à gérer des stratégies de point d'accès et de compartiment, sans toutefois les autoriser à partager publiquement le compartiment ou les objets qu'il contient. L'activation de ce paramètre n'a pas d’incidence sur les stratégies de point d'accès ou de compartiment existantes.

Important

Pour utiliser ce paramètre de manière efficace, vous devez l'appliquer au niveau des comptes. Une stratégie de compartiment peut autoriser les utilisateurs à modifier les paramètres Block Public Access d’un compte. Par conséquent, les utilisateurs autorisés à modifier une stratégie de compartiment peuvent insérer une stratégie qui leur permet de désactiver les paramètres Block Public Access pour le compartiment. Si ce paramètre est activé pour le compte entier et non pour un compartiment spécifique, Amazon S3 bloque les stratégies publiques même si un utilisateur modifie la stratégie de compartiment pour désactiver ce paramètre.

RestrictPublicBuckets

Si vous définissez cette option sur TRUE, l'accès à un point d’accès ou à un compartiment avec une stratégie publique est restreint aux seuls mandataires de services AWS et utilisateurs autorisés au sein du compte du propriétaire du compartiment. Ce paramètre bloque tous les accès entre comptes au point d’accès ou au compartiment (sauf par les mandataires de services AWS), tout en autorisant les utilisateurs au sein du compte à gérer le point d’accès ou le compartiment.

L'activation de ce paramètre n'a pas d’incidence sur les stratégies de point d’accès ou de compartiment existantes, mais Amazon S3 bloque l'accès public et entre comptes provenant des stratégies de point d’accès ou de compartiment publiques, notamment la délégation non publique à des comptes spécifiques.

Important
  • Les appels vers GET Bucket acl et GET Object acl renvoient toujours les autorisations en vigueur pour le compartiment ou l'objet spécifié. Par exemple, supposons qu'un compartiment dispose d'une ACL accordant l'accès public, mais que le paramètre IgnorePublicAcls soit également activé pour le même compartiment. Dans ce cas, GET Bucket acl renvoie une ACL qui reflète les autorisations d'accès appliquées par Amazon S3, plutôt que l'ACL associée au compartiment.

  • Les paramètres Block Public Access ne modifient pas les stratégies ou listes ACL existantes. Par conséquent, la suppression d'un paramètre Block Public Access conduit un compartiment ou un objet doté d'une ACL ou d'une stratégie publique à de nouveau être accessible publiquement.

La signification du mot « public »

Compartiments

  • ACL

    • Amazon S3 considère qu'une ACL de compartiment ou d'objet est publique si elle accorde des autorisations aux membres des groupes AllUsers ou AuthenticatedUsers prédéfinis. Pour plus d'informations sur les groupes prédéfinis, consultez Groupes prédéfinis d'Amazon S3.

  • Stratégies

    • Lors de l’évaluation d’une stratégie de compartiment, Amazon S3 commence par assumer que la stratégie est publique. Puis, il évalue la stratégie pour déterminer si elle qualifiée comme non publique. Pour être considérée comme non publique, une stratégie de compartiment doit uniquement accorder l'accès aux valeurs fixes (valeurs ne contenant aucun caractère générique) d'un ou de plusieurs des éléments suivants :

      • Un ensemble de CIDR (Classless Inter-Domain Routing) utilisant aws:SourceIp. Pour plus d'informations sur CIDR, consultez RFC 4632 sur le site web RFC Editor.

      • Un mandataire, un utilisateur, un rôle ou un mandataire de service AWS (p. ex. aws:PrincipalOrgID)

      • aws:SourceArn

      • aws:SourceVpc

      • aws:SourceVpce

      • aws:SourceOwner

      • aws:SourceAccount

      • s3:x-amz-server-side-encryption-aws-kms-key-id

      • aws:userid, en dehors du modèle « AROLEID:* »

      • s3:DataAccessPointArn

        Note

        Lorsqu'elle est utilisée dans une stratégie de compartiment, cette valeur peut contenir un caractère générique pour le nom du point d'accès sans rendre la stratégie publique, à condition que l'ID de compte soit corrigé. Par exemple, autoriser l'accès à arn:aws:s3:us-west-2:123456789012:accesspoint/* permettrait l'accès à n'importe quel point d'accès associé au compte 123456789012 dans la région us-west-2, sans rendre la stratégie de compartiment publique. Notez que ce comportement est différent pour les stratégies de point d'accès. Pour plus d’informations, consultez Points d'accès.

      • s3:DataAccessPointAccount

    • Conformément à ces règles, les exemples de stratégies suivants sont considérés comme publics.

      { "Principal": { "Federated": "graph.facebook.com" }, "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}} }

      Ces stratégies peuvent devenir non publiques grâce à une valeur fixe en incluant l'une des clés de condition énumérée précédemment. Par exemple, la dernière stratégie ci-dessus peut devenir non publique si vous définissez aws:SourceVpc sur une valeur fixe, comme suit :

      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}} }
    • Pour plus d'informations sur les stratégies de compartiment, consultez Utilisation de stratégies de compartiment et de stratégies utilisateur.

Exemple

Cet exemple illustre comment Amazon S3 évalue une stratégie de compartiment contenant des autorisations d'accès publiques et non publiques.

Supposons qu'un compartiment dispose d'une stratégie qui accorde l'accès à un ensemble de mandataires fixes. Conformément aux règles précédemment décrites, cette stratégie n'est pas publique. Ainsi, si vous activez le paramètre RestrictPublicBuckets, la stratégie reste effective comme indiqué, car RestrictPublicBuckets s'applique uniquement aux compartiments disposant de stratégies publiques. Cependant, si vous ajoutez une déclaration publique à la stratégie, RestrictPublicBuckets s’applique au compartiment. La stratégie autorise uniquement les mandataires de services AWS et les utilisateurs autorisés du compte du propriétaire du compartiment à accéder au compartiment.

Par exemple, supposons qu'un compartiment détenu par « Account-1 » dispose d'une stratégie contenant les éléments suivants :

  1. Une instruction qui accorde l'accès à AWS CloudTrail (un mandataire de service AWS)

  2. Une instruction qui accorde l'accès au compte « Account-2 »

  3. Une instruction qui accorde l'accès au public, par exemple en indiquant "Principal": "*" sans aucune Condition restrictive

Cette stratégie peut être publique à cause de la troisième instruction. Grâce à la mise en place de cette stratégie et l'activation de RestrictPublicBuckets, Amazon S3 autorise uniquement à CloudTrail. Notez que, bien que l'instruction 2 ne soit pas publique, Amazon S3 désactive l'accès à « Account-2 ». En effet, l'instruction 3 permet à la stratégie entière de devenir publique, ainsi RestrictPublicBuckets s'applique. Par conséquent, Amazon S3 désactive l'accès entre comptes, bien que la stratégie délègue l'accès à un compte spécifique, « Account-2 ». Mais si vous supprimez l'instruction 3 de la stratégie, cette dernière ne peut pas être publique et RestrictPublicBuckets ne s'applique plus. Ainsi, « Account-2 » a de nouveau accès au compartiment, même si RestrictPublicBuckets reste activé.

Points d'accès

Amazon S3 évalue les paramètres de blocage d'accès public de façon légèrement différente pour les points d'accès par rapport aux compartiments. Les règles que Amazon S3 applique pour déterminer quand une stratégie de point d'accès est publique sont généralement les mêmes pour les points d'accès et pour les compartiments, sauf dans les cas suivants :

  • Un point d'accès ayant une origine réseau VPC est toujours considéré comme non public, quel que soit le contenu de sa stratégie de point d'accès.

  • Une stratégie de point d'accès qui accorde l'accès à un ensemble de points d'accès utilisant s3:DataAccessPointArn est considérée comme publique. Notez que ce comportement est différent de celui des stratégies de compartiment. Par exemple, une stratégie de compartiment qui accorde l'accès aux valeurs de s3:DataAccessPointArn correspondant à arn:aws:s3:us-west-2:123456789012:accesspoint/* n'est pas considérée comme publique. Toutefois, la même instruction dans une stratégie de point d'accès rendrait le point d'accès public.

Utilisation d’Access Analyzer for S3 pour examiner les compartiments publics

Vous pouvez utiliser Access Analyzer for S3 pour vérifier les compartiments avec des listes de contrôle d'accès (ACL) de compartiment, des stratégies de compartiment ou des stratégies de point d'accès qui accordent un accès public. Access Analyzer for S3 vous prévient si des compartiments sont configurés pour autoriser l'accès à quiconque sur Internet ou à d'autres comptes AWS, y compris les comptes AWS en dehors de votre entreprise. Pour chaque compartiment public ou partagé, vous recevez des résultats qui signalent la source et le niveau d'accès public ou partagé.

Grâce aux connaissances présentées dans les résultats, vous pouvez prendre des mesures correctives immédiates et précises. Dans Access Analyzer for S3, vous pouvez bloquer tout accès public à un compartiment en un seul clic. Vous pouvez également aller plus loin en configurant des niveaux d’accès précis dans les paramètres des niveaux d’autorisation des compartiments. Pour les cas d'utilisation spécifiques et vérifiés nécessitant un accès public ou partagé, vous pouvez confirmer et enregistrer votre intention de maintenir le niveau d'accès public ou partagé en archivant les résultats pour le compartiment.

Dans de rares cas, Access Analyzer for S3 peut ne signaler aucun résultat pour un compartiment qu'une évaluation de blocage d'accès public Amazon S3 signale comme public. Cela se produit parce que le blocage d'accès public Amazon S3 examine les stratégies pour les actions en cours et les actions potentielles qui pourraient être ajoutées à l'avenir, ce qui rend un compartiment public. D'autre part, Access Analyzer for S3 analyse seulement les actions actuelles spécifiées pour le service Amazon S3 dans l'évaluation du statut d'accès.

Pour plus d'informations sur Access Analyzer for S3, consultez Utilisation d’Access Analyzer for S3 dans le manuel Amazon Simple Storage Service Guide de l'utilisateur de la console .

Autorisations

Pour utiliser les fonctionnalités Amazon S3 Block Public Access, vous devez disposer des autorisations suivantes.

Opération Autorisations requises
Statut de la stratégie GET Bucket s3:GetBucketPolicyStatus
Paramètres Block Public Access du compartiment GET s3:GetBucketPublicAccessBlock
Paramètres Block Public Access du compartiment PUT s3:PutBucketPublicAccessBlock
Paramètres Block Public Access du compartiment DELETE s3:PutBucketPublicAccessBlock
Paramètres Block Public Access du compte GET s3:GetAccountPublicAccessBlock
Paramètres Block Public Access du compte PUT s3:PutAccountPublicAccessBlock
Paramètres Block Public Access du compte DELETE s3:PutAccountPublicAccessBlock
Paramètres Block Public Access du point d'accès PUT s3:PutAccessPointPublicAccessBlock
Note

Les opérations DELETE exigent les mêmes autorisations que les opérations PUT. Il n'existe pas d'autorisations séparées pour les opérations DELETE.

Exemples

Utilisation de Block Public Access avec l'AWS CLI.

Vous pouvez désormais utiliser Amazon S3 Block Public Access via l'AWS CLI. La commande utilisée varie selon que vous souhaitez effectuer un appel de blocage d’accès public sur un point d'accès, un compartiment ou un compte. Pour plus d'informations sur la configuration et l'utilisation de l'AWS CLI, consultez Présentation de l'AWS Command Line Interface ?

  • Point d'accès

    • Pour effectuer des opérations de blocage d’accès public sur un point d’accès, utilisez le service s3control de l'AWS CLI. Notez qu'il n'est pas possible actuellement de modifier les paramètres de blocage d’accès public d'un point d'accès une fois ce dernier créé. Ainsi, la seule façon de spécifier les paramètres de blocage d’accès public pour un point d'accès est de les inclure lors de la création du point d'accès.

  • Compartiment

    • Pour effectuer des opérations Block Public Access sur un compartiment, utilisez le service de l'AWS CLI s3api. Les opérations au niveau des compartiments qui utilisent ce service sont les suivantes :

      • PUT PublicAccessBlock (pour un compartiment)

      • GET PublicAccessBlock (pour un compartiment)

      • DELETE PublicAccessBlock (pour un compartiment)

      • GET BucketPolicyStatus

  • Compte

    • Pour effectuer des opérations Block Public Access sur un compte, utilisez le service de l'AWS CLI s3control s3control. Les opérations au niveau des comptes qui utilisent ce service sont les suivantes :

      • PUT PublicAccessBlock (pour un compte)

      • GET PublicAccessBlock (pour un compte)

      • DELETE PublicAccessBlock (pour un compte)

Utilisation de Block Public Access avec l'AWS SDK for Java.

Les exemples suivants indiquent comment utiliser Amazon S3 Block Public Access avec l'AWS SDK for Java. Pour obtenir des instructions sur la façon de créer et de tester un exemple pratique, consultez Utilisation du kit AWS SDK for Java.

Exemple 1

Cet exemple montre comment définir une configuration Block Public Access sur un compartiment S3 à l'aide du kit AWS SDK for Java.

AmazonS3 client = AmazonS3ClientBuilder.standard() .withCredentials(<credentials>) .build(); client.setPublicAccessBlock(new SetPublicAccessBlockRequest() .withBucketName(<bucket-name>) .withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration() .withBlockPublicAcls(<value>) .withIgnorePublicAcls(<value>) .withBlockPublicPolicy(<value>) .withRestrictPublicBuckets(<value>)));
Important

Cet exemple s'applique uniquement aux opérations au niveau des compartiments qui utilisent la classe client AmazonS3. Pour les opérations au niveau des comptes, consultez l'exemple suivant.

Exemple 2

Cet exemple montre comment définir une configuration Block Public Access sur un compte Amazon S3 à l'aide du kit AWS SDK for Java.

AWSS3ControlClientBuilder controlClientBuilder = AWSS3ControlClientBuilder.standard(); controlClientBuilder.setRegion(<region>); controlClientBuilder.setCredentials(<credentials>); AWSS3Control client = controlClientBuilder.build(); client.putPublicAccessBlock(new PutPublicAccessBlockRequest() .withAccountId(<account-id>) .withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration() .withIgnorePublicAcls(<value>) .withBlockPublicAcls(<value>) .withBlockPublicPolicy(<value>) .withRestrictPublicBuckets(<value>)));
Important

Cet exemple s'applique uniquement aux opérations au niveau des comptes qui utilisent la classe client AWSS3Control. Pour les opérations au niveau des compartiments, consultez l'exemple précédent.

Utilisation de Block Public Access avec d'autres kits AWS SDK.

Pour plus d'informations sur l'utilisation d'autres kits AWS SDK, consultez Utilisation des kits SDK AWS, de l'interface de ligne de commande et des explorateurs AWS Explorer.

Utilisation de Block Public Access avec les API REST.

Pour plus d'informations sur l'utilisation d'Amazon S3 Block Public Access via les API REST, consultez les rubriques suivantes dans le Amazon Simple Storage Service API Reference.