Gérer l'accès à un Bucket

Si vous souhaitez limiter les accès réseau à un Bucket, vous devrez créer une politique de gestion de Bucket en utilisant la condition suivante aws:SourceIp.

Nous utilisons les utilitaires aws s3 et aws s3api issues du client S3 AWSCLIv2 sur Linux.${S3_ENDPOINT} et ${S3_PROFILE} sont des variables d'environnement.

Créez un fichier et insérez votre politique de gestion au format JSON :

{
  "Version": "2012-10-17",
  "Id": "OnlyInternal",
  "Statement": [
    {
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "10.0.0.0/8",
            "192.168.0.0/16"
            "98.2.3.123"
          ]
        }
      },
      "Action": "s3:*",
      "Resource": [
        "<bucket>/*",
        "<bucket>"
      ],
      "Effect": "Deny",
      "Principal": "*",
      "Sid": "BlockExternal"
    }
  ]
}

La politique ci-dessus aura pour effet :

  • de refuser toutes opérations dont l'adresse IP source n'appartient pas aux réseaux 10.0.0.0/8 et 192.168.0.0/16

Modifiez <bucket> par le nom de votre Bucket.

Pour une documentation complète sur les politiques de gestion des Buckets, veuillez vous référer à Politiques de Buckets.

Notation CIDR

Avec la condition aws:SourceIp, prend en charge des adresses IPV4 ou des plages d'adresses IPV4. Les adresses en IPV6 ne sont pas supportées.

Lorsque aws:SourceIp est un réseau complet (ex: 10.0.0.0), il faut indiquer le masque de sous réseau au format CIDR (Classless Inter-Domain Routing).

Exemple:

  • 10.0.0.0/8

  • 192.168.0.0/16

  • 10.45.2.0/24

Lorsque aws:SourceIp est une adresse IP (ex: 98.2.3.123), il ne faut pas indiquer le masque de sous réseau au format CIDR (Classless Inter-Domain Routing).

Exemples:

  • 98.2.3.123

  • 192.168.1.23

  • 10.45.2.67

Appliquez la politique sur votre Bucket :

aws s3api --endpoint=${S3_ENDPOINT} --bucket bucket-test --policy file://mypolicy.json --profile ${S3_PROFILE}

Vérifiez si la politique est correctement définie :

aws s3api --endpoint-url=${S3_ENDPOINT} get-bucket-policy --bucket bucket-test --profile ${S3_PROFILE}

Last updated