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.

Le service de Stockage d'Objets de cegedim.cloud est un service dit "S3 compatible". Certaines fonctionnalités spécifiques d'AWS S3 ne sont pas supportées.

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}

Dernière mise à jour