> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://wiki.leviia.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# S3cmd : protéger l'accès à un bucket en fonction de l'adresse IP

## Pré-requis
* [Avoir configurer s3cmd sur son ordinateur ](https://wiki.leviia.com/fr/article/s3cmd-configuration-et-utilisation-1xd0jna/) 

| S3 - Protection de l'accès d'un bucket en fonction de l'IP
Il est possible de protéger l'accès d'un bucket en fonction de l'adresse IP.
Cette protection peut être réalisée en modifiant la politique (policy) associée à ce bucket.

## Mise en place de la protection par IP
Créer un fichier sur votre machine en local contenant les lignes suivantes :

```json
{
    "Version": "2012-10-17",
    "Id": "S3PolicyIPRestrict",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal":{
                "AWS":"*"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<nom_du_bucket>",
                "arn:aws:s3:::<nom_du_bucket>/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "xx.xx.xx.xx/xx"
                }
            }
        }
    ]
}
```

* La date de la version ne doit pas être modifiée.
* <nom_du_bucket> doit être remplacé par le nom du bucket. Il est possible d'en protéger plusieurs.
* "xx.xx.xx.xx/xx" doit être remplacé par l'adresse IP ou le sous-réseau autorisé. Il est possible d'en protéger plusieurs à l'aide d'un tableau  :

```json
"Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "192.0.2.0/24",
                    "203.0.113.0/24"
                ]
            },
```

||| Si la commande "s3cmd" propose de sélectionner une application, entrer la commande suivante :

```
Set-Content -Path "$env:LOCALAPPDATA\Programs\Python\Python314\Scripts\s3cmd.cmd" -Value '@py "%~dp0s3cmd" %*'
```

Appliquer la politique :

```bash
s3cmd setpolicy /chemin/du/fichier/nom_du_fichier s3://<nom_du_bucket>
```

Vérifier la politique : 

```bash
s3cmd info s3://<nom_du_bucket>
```

Supprimer la politique :

```bash
s3cmd delpolicy s3://<nom_du_bucket>
```
