Acceso a Bucket S3 para Clientes
Acceso a Bucket S3 para Clientes
Manual: Acceso a Bucket S3 para Clientes
Guía paso a paso para crear un bucket S3 exclusivo para un cliente, con acceso restringido mediante una política IAM y un usuario dedicado (Access Key), para que el cliente pueda subir/descargar sus archivos de forma segura.
Reemplaza los nombres de ejemplo (
nxs-s3-cliente,nxs-user-cliente-app, etc.) por la convención de nombres real del cliente que estás configurando.
Índice
- Crear el bucket S3
- Verificar el bucket creado
- Revisar la pestaña de permisos del bucket
- Crear la política IAM
- Nombrar y crear la política
- Crear el usuario IAM
- Asignar la política al usuario
- Generar el Access Key
- Configuración del lado del cliente (AWS CLI)
- Buenas prácticas de seguridad
1. Crear el bucket S3
- Ir a Amazon S3 → Buckets y hacer clic en Create bucket.
- Bucket type:
General purpose. - Bucket name: usar convención
nxs-s3-<cliente>(debe ser único a nivel global). - AWS Region: dejar la región estándar de la cuenta (ej.
US East (Ohio) us-east-2). - Object Ownership: dejar
ACLs disabled(recomendado). - Block Public Access: mantener todo bloqueado (bucket privado, sin acceso público).
- Bucket Versioning: según necesidad del cliente (
DisableuEnable). - Default encryption:
SSE-S3(por defecto),Bucket Key: Enable. - Clic en Create bucket.

2. Verificar el bucket creado
El bucket queda vacío y listo para recibir archivos (vía consola, CLI o API).

3. Revisar la pestaña de permisos del bucket
Entrar a la pestaña Permissions del bucket. En este flujo no se usa una Bucket Policy pública: el acceso se controla con una política IAM asociada a un usuario dedicado (pasos siguientes).

4. Crear la política IAM
- Ir a IAM → Policies → Create policy.
- Cambiar al editor JSON (arriba a la derecha).
- Pegar el JSON de permisos (ver bloque abajo), reemplazando el nombre del bucket.

JSON de permisos (copiar y pegar)
Da permisos de subir, leer, listar y eliminar objetos, limitado a un bucket específico:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NxsS3AccessCliente",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::nxs-s3-cliente/*"
},
{
"Sid": "NxsS3ListBucketCliente",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::nxs-s3-cliente"
}
]
}
⚠️ Importante: reemplazar
nxs-s3-clientepor el nombre real del bucket creado en el paso 1, en ambas líneas (Resourcecon/*para objetos, y sin/*para elListBucket).

5. Nombrar y crear la política
- En Review and create, asignar un nombre descriptivo, ej:
nxs-s3-cliente-policy. - Verificar el resumen de permisos (S3: List, Read, Write).
- Clic en Create policy.

6. Crear el usuario IAM
- Ir a IAM → Users → Create user.
- User name: convención
nxs-user-<cliente>-app. - No marcar "Provide user access to the AWS Management Console" (el cliente no necesita acceso a la consola, solo Access Key para API/CLI/SDK).
- Clic en Next.

7. Asignar la política al usuario
- En Set permissions, elegir Attach policies directly.
- Buscar la política creada en el paso 5 (filtrar por el prefijo, ej:
nxs). - Marcar el checkbox de la política correspondiente.
- Clic en Next y luego Create user.

8. Generar el Access Key
- Entrar al usuario creado → pestaña Security credentials.
- En Access keys, clic en Create access key.

- Use case: seleccionar
Application running outside AWS(oCommand Line Interface (CLI)si el cliente usará la CLI directamente). Clic en Next.

- Description tag (opcional): se puede indicar el propósito de la key. Clic en Create access key.

- Se muestran el Access key y el Secret access key. Copiar ambos o
descargar el archivo
.csv. El Secret access key solo se muestra una vez.

🔒 Entregar estas credenciales al cliente por un canal seguro (gestor de contraseñas, no por correo o chat en texto plano).
9. Configuración del lado del cliente (AWS CLI)
En la máquina del cliente, con la AWS CLI instalada:
aws configure
AWS Access Key ID [None]: <ACCESS_KEY_ID>
AWS Secret Access Key [None]: <SECRET_ACCESS_KEY>
Default region name [None]: us-east-2
Default output format [None]: json
Prueba rápida de conexión (debe listar el contenido del bucket, vacío al inicio):
aws s3 ls s3://nxs-s3-cliente
Subir un archivo de prueba:
aws s3 cp archivo-prueba.txt s3://nxs-s3-cliente/

10. Buenas prácticas de seguridad
- Mantener Block Public Access activado en el bucket (privado, sin excepciones).
- Un usuario IAM + una política dedicada por cliente — nunca compartir credenciales entre clientes.
- No usar Bucket Policy pública salvo un requerimiento explícito y justificado.
- Rotar el Access Key periódicamente y desactivar/eliminar keys que ya no se usen.
- Habilitar MFA para usuarios humanos con acceso a la consola (no aplica a este flujo de solo Access Key).
- Documentar en un registro interno qué bucket, política y usuario corresponden a cada cliente.
Referencia rápida — plantilla JSON para copiar
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NxsS3AccessCliente",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::NOMBRE_BUCKET/*"
},
{
"Sid": "NxsS3ListBucketCliente",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::NOMBRE_BUCKET"
}
]
}