
Un kit de herramientas de seguridad para Amazon S3
Un conjunto de herramientas de seguridad para Amazon S3

🍊 Probado en combate en Instacart
Ejecuta:
pip install s3tk
Puedes usar la AWS CLI o AWS Vault para configurar tus credenciales de AWS:
pip install awscli
aws configure
Consulta las políticas de IAM necesarias para cada comando.
Escanea tus buckets para buscar:
s3tk scan
Ejecutar solo en buckets específicos
s3tk scan my-bucket my-bucket-2
También funciona con comodines
s3tk scan "my-bucket*"
Confirma el/los bucket(s) de registro correcto(s) y el prefijo
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"
Verificar el registro a nivel de objeto de CloudTrail [experimental]
s3tk scan --object-level-logging
Saltar registro, versionado o cifrado predeterminado
s3tk scan --skip-logging --skip-versioning --skip-default-encryption
Recibir notificaciones por correo electrónico de fallos (a través de SNS)
s3tk scan --sns-topic arn:aws:sns:...
Listar políticas de bucket
s3tk list-policy
Ejecutar solo en buckets específicos
s3tk list-policy my-bucket my-bucket-2
Mostrar declaraciones nombradas
s3tk list-policy --named
Nota: Esto reemplaza la política anterior
Solo cargas privadas
s3tk set-policy my-bucket --no-object-acl
Eliminar política
s3tk delete-policy my-bucket
Bloquear acceso público en buckets específicos
s3tk block-public-access my-bucket my-bucket-2
Usa la bandera --dry-run para probar
Habilitar registro en todos los buckets
s3tk enable-logging --log-bucket my-s3-logs
Solo en buckets específicos
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs
Establecer prefijo de registro ({bucket}/ por defecto)
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"
Usa la bandera --dry-run para probar
Algunas notas sobre el registro:
Habilitar versionado en todos los buckets
s3tk enable-versioning
Solo en buckets específicos
s3tk enable-versioning my-bucket my-bucket-2
Usa la bandera --dry-run para probar
Habilitar cifrado predeterminado en todos los buckets
s3tk enable-default-encryption
Solo en buckets específicos
s3tk enable-default-encryption my-bucket my-bucket-2
Esto no cifra objetos existentes - usa el comando encrypt para esto
Usa la bandera --dry-run para probar
Escanea ACL en todos los objetos de un bucket
s3tk scan-object-acl my-bucket
Solo ciertos objetos
s3tk scan-object-acl my-bucket --only "*.pdf"
Excepto ciertos objetos
s3tk scan-object-acl my-bucket --except "*.jpg"
Restablecer ACL en todos los objetos de un bucket
s3tk reset-object-acl my-bucket
Esto hace que todos los objetos sean privados. Consulta las políticas de bucket para saber cómo aplicar esto en el futuro.
Usa la bandera --dry-run para probar
Especifica ciertos objetos de la misma manera que scan-object-acl
Cifrar todos los objetos de un bucket con cifrado del lado del servidor
s3tk encrypt my-bucket
Usa claves administradas por S3 por defecto. Para claves administradas por KMS, usa:
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...
Para claves proporcionadas por el cliente, usa:
s3tk encrypt my-bucket --customer-key secret-key
Usa la bandera --dry-run para probar
Especifica ciertos objetos de la misma manera que scan-object-acl
Nota: Los objetos perderán cualquier ACL personalizada
Eliminar todas las versiones no cifradas de objetos en un bucket
s3tk delete-unencrypted-versions my-bucket
Por seguridad, esto no eliminará ninguna versión actual de objetos
Usa la bandera --dry-run para probar
Especifica ciertos objetos de la misma manera que scan-object-acl
Escanea Route 53 en busca de buckets para asegurarte de que los posees
s3tk scan-dns
De lo contrario, podrías ser susceptible a toma de subdominio
Las credenciales se pueden especificar en ~/.aws/credentials o con variables de entorno. Consulta esta guía para una explicación de las variables de entorno.
Puedes especificar un perfil para usar con:
AWS_PROFILE=your-profile s3tk
Aquí están los permisos necesarios para cada comando. Incluye solo las declaraciones que necesites.