Backup sous Amazon s3cmd (Debian Jessie)

Ce billet à pour but de répondre à plusieurs problèmes rencontrés lors de backups envoyés sur Amazon S3 depuis un serveur Debian Jessie.

Le premier problème est que la version de s3cmd, dans le package awscli de Debian 8.0 Jessie, n’est pas très à jour. (Version 1.50 sous Jessie)  En particulier elle ne supporte pas le protocole V4 et vous n’allez pas pouvoir faire du S3 dans certaines zones, dont les zones européennes ( EU, Frankfurt, etc )

Vous allez avoir une erreur :

The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256

Mais commencons par le début ; comment connecter votre serveur Jessie à Amazon S3

Avant toute chose, désinstallez le package par défaut awscli (s’il l’était) , téléchargez un backport unstable, et installez-le.

 apt-get remove awscli
 wget "http://ftp.us.debian.org/debian/pool/main/s/s3cmd/s3cmd_1.6.1-1~bpo8+1_all.deb"
 dpkg -i s3cmd_1.6.1-1~bpo8+1_all.deb
 rm s3cmd_1.6.1-1~bpo8+1_all.deb

Vous trouverez la dernière version de ce backport ici .

Pour configurer votre client, il faut taper

 s3cmd --configure

Avant de faire cela, allez dans le IAM de Amazon et créez un nouveau user dédié à vos échanges (backups) S3. N’utilisez pas votre root account. Notez les ID et clé secrète du/des nouveaux utilisateurs.

Ensuite ajoutez leur une Policy (cherchez “S3”) et donnez lui un full access S3. Ceci est temporaire le temps de finir s3cmd configure.

Image3-amazon-iam-s3-permissions-temporaires

Répondez aux questions de “s3cmd configure”, activez le transfert par SSL (https) tant qu’a faire. Toutes vos infos seront sauvées dans votre home, dans .s3cfg

Et faites un test ; il faut souvent le faire deux fois, c’est normal j’ai ça aussi.

Pour être sur que tout fonctionne, faites en ligne de commande :

s3cmd ls

Ca doit lister tous vos buckets. S’il n’y en a pas, créez-en.

Le problème avec les permissions S3 de Amazon qu’on vient de faire, c’est que cet user peut voir tous vos buckets, effacer tous vos buckets, etc. Si vous voulez un peu de sécurité, il faut reserrer la sécurité via une policy custom et ensuite retirer celle par défaut.

Ajoutez à la policy par defaut “full access” une “inline policy” ;

Image3-amazon-iam-s3-permissions

Notez simplement la façon dont on appelle un bucket dans cette fenêtre : arn:s3:::BUCKETNAME. Actions vous pouvez choisir “all”. Et service “S3” bien sûr.

Il faudra peut être l’éditer à la main jusqu’à obtenir :

s3cmd-iam

Remarquez que j’ai ajouté le nom du bucket + le nom du bucket avec slash et étoile (censuré en rose) : ceci est volontaire car si j’avais mis “nomdubucket*” cela aurait des conséquences sécurité si je créais un jour un nom de bucket type “nomdebucket-detest” (ce qui matche “étoile”). En faisant comme je fais vous limitez les accès du user à ce seul bucket.

Pourquoi je passe par milles précautions ? Pour le cas où le serveur qui pousse ces backups est hacké. Au pire si votre serveur se fait hacker, le pirate pourra effacer cet unique bucket. Il ne verra pas vos autres bucket. On peut mitiger voir éviter cela mais cela ne mènerait un peu loin (et faites appel à un sysadmin freelance pro pour le faire pour vous 🙂 )

Ok ; il est temps de nettoyer nos accès : retirez la policy “full access” et laissez la policy inline uniquement ; qui donne à votre user de backup le seul droit d’écrire et lire uniquement dans votre bucket de backup.

Vous pouvez vérifier que ca marche en faisant

s3cmd ls

Vous devriez maintenant avoir

ERROR: S3 error: 403 (AccessDenied): Access Denied

C’est parfait ; votre user ne peut plus lister tous vos buckets. Vérifiez qu’il peut encore lister le bucket dont vous aurez mis le nom dans votre policy,

 s3cmd ls s3://backup-bucket-tralala/

Ca, ca doit encore marcher.

Super ! Vous avez un serveur Debian Jessie, avec s3cmd version 1.6.x, qui se connecte avec les derniers protocoles sur votre bucket S3 de façon à peu près sécurisée (on peut faire mieux).

Vous pouvez backuper (équivalent de rsync) par exemple via ;

s3cmd sync --recursive --progress --no-check-md5 --verbose /home s3://backup-bucket/

Mais là je vous renvoie vers d’autres tutos sur l’usage générale de “s3cmd sync”,

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *