No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Práctico de Storage en AWS

Curso Práctico de Storage en AWS

Carlos Andrés Zambrano Barrera

Carlos Andrés Zambrano Barrera

Ejemplos de Políticas en S3

22/37
Recursos

¿Cómo se estructuran las políticas en S3?

Amazon S3, un servicio de almacenamiento en la nube, permite gestionar el acceso a los datos usando políticas. Estas políticas se componen de varios elementos clave:

  • Versión: Especifica qué versión del lenguaje de políticas se está utilizando.
  • Statement: Define el efecto permitido o denegado.
  • Principal: Indica el usuario o entidad a la que se aplican los permisos.
  • Action: Define las acciones permitidas o denegadas sobre el recurso.
  • Resource: Es el objeto o bucket S3 al que se aplican los permisos.
  • Condition: Permite añadir restricciones adicionales para el acceso.

A través de estas políticas, se puede alcanzar un nivel de granularidad considerable al definir quién puede realizar qué acciones dentro de un bucket y bajo qué condiciones.

¿Qué tipo de políticas se pueden crear?

Políticas permisivas

Podemos crear políticas permisivas que permiten a todos los usuarios realizar acciones específicas. Por ejemplo, una política que use Principal: * sería aplicable a todos los usuarios, otorgándoles permisos sobre los objetos de un bucket específico.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::sample-bucket/*"
        }
    ]
}

Políticas específicas para cuentas

Las políticas también pueden ser creadas para dar acceso a cuentas específicas. Esto se puede hacer especificando el ARN para cada cuenta en el campo Principal.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/Alice",
                    "arn:aws:iam::444455556666:user/Bob"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::sample-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "public-read"
                }
            }
        }
    ]
}

Políticas con condiciones de seguridad

Las condiciones son opcionales y refuerzan la seguridad. Por ejemplo, se pueden configurar políticas para permitir acciones únicamente desde direcciones IP específicas.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::sample-bucket/*",
            "Condition": {
                "IpAddress": {"aws:SourceIp": "203.0.113.0/24"},
                "NotIpAddress": {"aws:SourceIp": "198.51.100.0/24"}
            }
        }
    ]
}

Políticas que responden a solicitudes de sitios web específicos

Las acciones pueden restringirse para ser realizadas únicamente si proceden de sitios web autorizados.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::sample-bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://www.example.com/*"
                    ]
                }
            }
        }
    ]
}

¿Cómo se combinan permisos y restricciones?

Uso de permisos explícitos de denegación

A veces, se requiere combinar permisos permitiendo acciones solo si cumplen con ciertas condiciones. En estos casos, se pueden definir políticas que explícitamente niegan el acceso si no se cumplen las condiciones de seguridad especificadas.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::sample-bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://www.trustedwebsite.com/*"
                    ]
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::sample-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "http://www.trustedwebsite.com/*"
                    ]
                }
            }
        }
    ]
}

Implementación de autenticación multifactor

En situaciones donde almacenamos información crítica, se puede requerir autenticación multifactor para ciertos subfolders dentro de un bucket, asegurando un nivel adicional de seguridad.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::example-bucket/tax-documents/*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example-bucket/*"
        }
    ]
}

Explorando y comprendiendo cómo funcionan las políticas en Amazon S3, se pueden implementar niveles de seguridad avanzados, protegiendo datos críticos de manera efectiva y asegurando que sólo usuarios autorizados tengan acceso necesario. Con las herramientas y estructuras adecuadas, la protección de los datos en la nube es mucho más manejable. ¡Adelante en dominar esta habilidad esencial en AWS!

Aportes 9

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¡Al fin entiendo las políticas! Desde que empecé a usar Amazon S3 tenía un choque con ellas porque no las entendía, ahora sí veo cómo puedo usarlas y de hecho con las condicionales puedo empezar a filtrar para que solo un sitio web que aloja archivos en S3 pueda consumirlos!

¿Podrían poner las políticas en los archivos para probar por favor?

Excelente los ejemplos presentados!. Esto es la navaja suiza para el S3

me gusto mucha el tipo de política que combina deny y allow excelente clase

## 📌 **Ejemplos de Políticas en S3 (AWS S3 Policies)** Aquí tienes algunos ejemplos de políticas para diferentes casos de uso en **Amazon S3**, utilizando **políticas de bucket y políticas de IAM** en formato JSON. ### **1️⃣ Política para Hacer un Bucket Público (Solo Lectura)** 🔹 **Permite que cualquiera pueda leer los archivos dentro del bucket.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Allow", "Principal": "\*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::mi-bucket/\*" } ] } ✅ **Útil para sitios web estáticos.** ⚠️ **No recomendado para datos sensibles.** ### **2️⃣ Política para Restringir Acceso a una IP Específica** 🔹 **Permite que solo usuarios desde** `192.168.1.10` **accedan al bucket.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Deny", "Principal": "\*", "Action": "s3:\*", "Resource": "arn:aws:s3:::mi-bucket/\*", "Condition": { "NotIpAddress": { "aws:SourceIp": "192.168.1.10/32" } } } ] } ✅ **Útil para restringir acceso a una ubicación específica.** ⚠️ **Asegúrate de usar la IP correcta.** ### **3️⃣ Política para Permitir Solo Cargas, No Descargas** 🔹 **El usuario puede subir archivos, pero no descargarlos.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Allow", "Principal": "\*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::mi-bucket/\*" }, { "Effect": "Deny", "Principal": "\*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::mi-bucket/\*" } ] } ✅ **Útil para recibir archivos sin exponer su contenido.** ### **4️⃣ Política para Permitir Acceso Solo a un Usuario IAM** 🔹 **Solo el usuario** `mi-usuario` **de IAM puede acceder.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Deny", "Principal": "\*", "Action": "s3:\*", "Resource": \["arn:aws:s3:::mi-bucket", "arn:aws:s3:::mi-bucket/\*"], "Condition": { "StringNotEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/mi-usuario" } } } ] } ✅ **Ideal para restringir acceso a un usuario específico.** ### **5️⃣ Política para Permitir Acceso Solo a una Cuenta de AWS** 🔹 **Solo la cuenta AWS** `123456789012` **puede acceder.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "s3:\*", "Resource": \["arn:aws:s3:::mi-bucket", "arn:aws:s3:::mi-bucket/\*"] } ] } ✅ **Útil para compartir datos solo con una cuenta específica.** ### **6️⃣ Política para Habilitar Acceso entre Buckets (Cross Account)** 🔹 **Permite que otra cuenta** `987654321098` **acceda al bucket.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::987654321098:root" }, "Action": "s3:\*", "Resource": \["arn:aws:s3:::mi-bucket", "arn:aws:s3:::mi-bucket/\*"] } ] } ✅ **Útil para compartir recursos entre cuentas de AWS.** ### **7️⃣ Política para Restringir Acceso Según la Hora del Día** 🔹 **Solo permite acceso entre las 08:00 y las 18:00 UTC.** { "Version": "2012-10-17", "Statement": \[ { "Effect": "Deny", "Principal": "\*", "Action": "s3:\*", "Resource": \["arn:aws:s3:::mi-bucket", "arn:aws:s3:::mi-bucket/\*"], "Condition": { "NumericLessThan": { "aws:CurrentTime": "08:00:00Z" }, "NumericGreaterThan": { "aws:CurrentTime": "18:00:00Z" } } } ] } ✅ **Útil para restringir acceso fuera del horario laboral.** ### 🚀 **Conclusión** ✅ **Las políticas en S3 permiten controlar el acceso de manera precisa.** ✅ **Puedes definir permisos según IP, usuario, cuenta o incluso la hora.** ✅ **Siempre prueba las políticas antes de aplicarlas en producción.**

super…muchas gracias por los ejemplos 😃

Buenas, estoy tratando de hacer, aplicarla a un usuario, para que ese usuario solo pueda ver y acceder a una unica carpeta de un bucket especifico pero no he podeido conectarme. He utilziado Netdrive y S3 Browser y con ninguno me conecta. Cuando le pongo en resource * me accede. Me podrian ayudar?

Tengo una consulta para que las policías se cumplan o se permitan tengo que tener desactivada la opción de acceso público, o en estos dos casos cuál es la prioridad entre las Políticas y la opción de bloqueo de acceso público. Como sería un ejemplo si quiero por ejemplo ver en mi localhost (127.0.0.1) o equipo de desarrollo un listado de imágenes que tenga en S3. He realizado varias pruebas con las políticas y estas no funcionan si tengo activado el bloqueo de acceso público, lo desactivo y puedo acceder a la imagen desde cualquier lugar aun cuando tenga la política que solo sea para mi ip o ur local