
Un kit de sécurité pour Amazon S3
Une boîte à outils de sécurité pour Amazon S3

🍊 Éprouvée sur le terrain chez Instacart
Exécutez :
pip install s3tk
Vous pouvez utiliser AWS CLI ou AWS Vault pour configurer vos identifiants AWS :
pip install awscli
aws configure
Consultez les politiques IAM nécessaires pour chaque commande.
Analysez vos buckets pour :
s3tk scan
Exécuter uniquement sur des buckets spécifiques
s3tk scan mon-bucket mon-bucket-2
Fonctionne également avec des wildcards
s3tk scan "mon-bucket*"
Confirmer le(s) bucket(s) de journalisation et le préfixe corrects
s3tk scan --log-bucket mes-logs-s3 --log-bucket logs-autre-region --log-prefix "{bucket}/"
Vérifier la journalisation au niveau objet de CloudTrail [expérimental]
s3tk scan --object-level-logging
Ignorer la journalisation, le versionnage ou le chiffrement par défaut
s3tk scan --skip-logging --skip-versioning --skip-default-encryption
Recevoir des notifications par email des échecs (via SNS)
s3tk scan --sns-topic arn:aws:sns:...
Lister les politiques des buckets
s3tk list-policy
Exécuter uniquement sur des buckets spécifiques
s3tk list-policy mon-bucket mon-bucket-2
Afficher les instructions nommées
s3tk list-policy --named
Remarque : Ceci remplace la politique précédente
Uniquement les téléversements privés
s3tk set-policy mon-bucket --no-object-acl
Supprimer la politique
s3tk delete-policy mon-bucket
Bloquer l’accès public sur des buckets spécifiques
s3tk block-public-access mon-bucket mon-bucket-2
Utilisez l’option --dry-run pour tester
Activer la journalisation sur tous les buckets
s3tk enable-logging --log-bucket mes-logs-s3
Uniquement sur des buckets spécifiques
s3tk enable-logging mon-bucket mon-bucket-2 --log-bucket mes-logs-s3
Définir le préfixe de journalisation ({bucket}/ par défaut)
s3tk enable-logging --log-bucket mes-logs-s3 --log-prefix "logs/{bucket}/"
Utilisez l’option --dry-run pour tester
Quelques notes sur la journalisation :
Activer le versionnage sur tous les buckets
s3tk enable-versioning
Uniquement sur des buckets spécifiques
s3tk enable-versioning mon-bucket mon-bucket-2
Utilisez l’option --dry-run pour tester
Activer le chiffrement par défaut sur tous les buckets
s3tk enable-default-encryption
Uniquement sur des buckets spécifiques
s3tk enable-default-encryption mon-bucket mon-bucket-2
Ceci ne chiffre pas les objets existants – utilisez la commande encrypt pour cela
Utilisez l’option --dry-run pour tester
Analyser les ACL sur tous les objets d’un bucket
s3tk scan-object-acl mon-bucket
Uniquement certains objets
s3tk scan-object-acl mon-bucket --only "*.pdf"
Sauf certains objets
s3tk scan-object-acl mon-bucket --except "*.jpg"
Réinitialiser les ACL sur tous les objets d’un bucket
s3tk reset-object-acl mon-bucket
Ceci rend tous les objets privés. Consultez les politiques de bucket pour savoir comment imposer cette règle à l’avenir.
Utilisez l’option --dry-run pour tester
Spécifiez certains objets de la même manière que scan-object-acl
Chiffrer tous les objets d’un bucket avec le chiffrement côté serveur
s3tk encrypt mon-bucket
Utilisez les clés gérées par S3 par défaut. Pour les clés gérées par KMS, utilisez :
s3tk encrypt mon-bucket --kms-key-id arn:aws:kms:...
Pour les clés fournies par le client, utilisez :
s3tk encrypt mon-bucket --customer-key clé-secrète
Utilisez l’option --dry-run pour tester
Spécifiez certains objets de la même manière que scan-object-acl
Remarque : Les objets perdront toute ACL personnalisée
Supprimer toutes les versions non chiffrées des objets dans un bucket
s3tk delete-unencrypted-versions mon-bucket
Par sécurité, cela ne supprimera aucune version actuelle des objets
Utilisez l’option --dry-run pour tester
Spécifiez certains objets de la même manière que scan-object-acl
Analyser Route 53 pour les buckets afin de vérifier que vous les possédez
s3tk scan-dns
Sinon, vous pourriez être vulnérable à une prise de contrôle de sous-domaine
Les identifiants peuvent être spécifiés dans ~/.aws/credentials ou avec des variables d’environnement. Consultez ce guide pour une explication des variables d’environnement.
Vous pouvez spécifier un profil à utiliser avec :
AWS_PROFILE=votre-profil s3tk
Voici les autorisations nécessaires pour chaque commande. Incluez uniquement les instructions dont vous avez besoin.