Políticas de Seguridad en Amazon S3: Ejemplos y Configuración

Clase 22 de 37Curso Práctico de Storage en AWS

Resumen

¿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!