La vie d’un sysadmin étant parsemée de moulte suprises, se claquer soi-même la porte au nez avec une bucket policy trop restrictive peut faire partie de ces réjouissances infinies.
Halte-là, cher ami ! Ne déclarez pas forfait si vite, vos données présentes dans ledit bucket méritent que vous consultiez les instructions suivantes.
Où est mon erreur ?
Cette sortie de piste fortuite advient le plus souvent lorsque vous disposez d’un compte aux droits restreints soumis ou non à policy IAM, mais suffisamment pour éditer la policy d’un bucket S3.
D’une manière générale, Amazon indique dans ses documents de support que les droits minimum requis pour accéder aux bucket via l’interface web sont les suivants :
- s3:ListAllMyBuckets
- s3:GetBucketLocation
- s3:ListBucket
Malheureusement, il peut arriver que même avoir un compte avec le rôle AdministratorAccess (le plus permissif) soit insuffisant pour en récupérer l’accès.
Exemple ci-dessous :
Le bucket apparait en « error », cliquons dessus pour voir ce qu’il se passe.
Lorsque vous accédez au bucket, vous êtes accueillis par le message suivant:
Pas plus de succès du côté de l’onglet « permissions »
Impossible d’éditer la policy, elle est masquée et le bouton « Delete » est grisé
L’unique solution ? L’accès au bucket avec le compte root, uniquement.
Si vous n’avez pas les accès à ce compte, contactez sans plus attendre les personnes en disposant, votre aventure s’arrête là.
La résolution
Vous avez ensuite deux façons d’éditer votre bucket policy via le compte root, en utilisant l’interface graphique (GUI) ou l’invite de commande (aws-cli).
Via la GUI
Supprimer la bucket policy via l’interface graphique est relativement simple.
- Se connecter à la GUI via le compte root
- Se rendre dans S3 et cliquer sur le bucket concerné
- Malgré les messages d’erreur toujours présent, il faut poursuivre et cliquer sur l’onglet « permissions » puis bucket policy
- Le bouton « delete » précédement grisé apparaitra dorénavant en clair avec la policy
Via AWS-Cli
Le prérequis principal est de disposer de l’outil aws-cli installé, vous pouvez trouver les informations dans le guide d’amazon avec pip et python.
Création d’une access key
Pour l’accès à AWS via la cli, il est indispensable de créer une access key avec le compte concerné.
Attention : Créer des access keys avec le compte root n’est pas une pratique recommandée. Ici, l’impact sera limité dans la mesure où elles seront supprimées dès la fin de l’opération.
- Se connecter avec le compte root
- Se rendre dans IAM
- Cliquer sur « Delete your root access keys » puis « manage security credentials »
- Cliquer sur l’onglet access keys
- Créer une nouvelle access key
- Utiliser aws-configure pour l’enregistrer dans la configuration de aws-cli et sélectionner la région du bucket
La commande pour supprimer le bucket est la suivante :
aws s3api delete-bucket-policy --bucket lenomdubucket
Félicitations ! Vous avez finalement pu retrouver l’intégralité de vos données.
Il ne vous reste maintenant plus qu’à supprimer les access keys du compte root pour toujours plus de sécurité.