# 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`.

{% hint style="info" %}
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.
{% endhint %}

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

{% code lineNumbers="true" %}

```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"
    }
  ]
}
```

{% endcode %}

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](https://academy.cegedim.cloud/francais/stockage/stockage-objet/stockage-objet-architecture/politiques-de-buckets "mention").

{% hint style="warning" %}
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.
{% endhint %}

## 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** :

{% code overflow="wrap" %}

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

{% endcode %}

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

{% code overflow="wrap" %}

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

{% endcode %}
