Tengo alguna configuración de aplicación almacenada en un archivo en un depósito S3 (claves de API). Tengo el depósito S3 configurado para permitir el acceso solo a través de un punto final de VPC específico, lo que vincula las claves a entornos específicos y evita, por ejemplo, que las claves de producción se usen accidentalmente en un entorno de ensayo o de prueba.
Sin embargo, de vez en cuando necesito modificar estas claves, y es un fastidio. Actualmente, la política del depósito impide el acceso a la consola, por lo que tengo que eliminar la política del depósito, actualizar el archivo y luego reemplazar la política.
¿Cómo puedo permitir el acceso desde la consola, un punto de enlace de la VPC específico y ningún otro lugar?
Política actual, donde ya lo intenté y fallé:
{ "Version": "2012-10-17", "Id": "Policy12345", "Statement": [ { "Sid": "Principal-Access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:root" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::my-keys-staging", "arn:aws:s3:::my-keys-staging/*" ] }, { "Sid": "Access-to-specific-VPCE-only", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::my-keys-staging", "arn:aws:s3:::my-keys-staging/*" ], "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-vpceid" } } } ] }Como se menciona en los comentarios, no se puede anular tener una Deny explícita. Al incluir Deny vinculado a una VPC en particular, no puede agregar ningún otro elemento Allow para contrarrestar esa instrucción Deny .
Opción 1
Una opción es cambiar su declaración "denegar si no es de VPC abc" a "permitir si es de VPC abc". Esto le permitiría agregar declaraciones Allow adicionales a su política para permitirle acceder al depósito desde otro lugar.
Sin embargo, hay 2 advertencias muy importantes que acompañan a hacer eso:
Entonces, al cambiar Deny a Allow , ya no tendrá una restricción de VPC en el nivel del depósito.
Esto puede o no estar dentro de los requisitos de seguridad de su organización.
opcion 2
En su lugar, puede modificar su Deny existente para agregar condiciones adicionales que funcionarán en una situación Y:
"Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-vpceid", "aws:username": "your-username" } }Este tipo de condición denegará la solicitud si:
Por lo tanto, debería poder mantener la restricción de limitar las solicitudes a su VPC con la excepción de que su inicio de sesión de usuario podría acceder al depósito desde cualquier lugar .
Tenga en cuenta el agujero de seguridad que está abriendo al hacer esto. Debe asegurarse de restringir el nombre de usuario a uno que (a) no tenga ninguna clave de acceso asignada y (b) tenga MFA habilitado.