Control del acceso de los clientes a un sistema de archivos de S3
En este tema se describe cómo usar las políticas del sistema de archivos, las políticas de identidad de IAM y los controles de red para controlar qué clientes pueden acceder al sistema de archivos de S3 y a través de qué puntos de acceso.
Puntos de acceso de archivos de S3
Los puntos de acceso de archivos de S3 son puntos de entrada específicos de la aplicación a un sistema de archivos que simplifican la administración del acceso de los datos a escala. Puede utilizar puntos de acceso para imponer identidades y permisos del usuario para todas las solicitudes del sistema de archivos realizadas a través del punto de acceso y restringir a los clientes el acceso exclusivo a los datos de un directorio raíz específico y sus subdirectorios.
Los puntos de acceso determinan lo que un cliente puede hacer en el sistema de archivos. No determinan qué clientes pueden utilizarlos. Cualquier rol de la cuenta que tenga permiso s3files:ClientMount puede utilizarse a través de cualquier punto de acceso del sistema de archivos, a menos que una política del sistema de archivos lo restrinja. Para controlar qué clientes pueden usar cada punto de acceso, combine tres niveles: controles de red (impiden la conexión), una política de recursos del sistema de archivos (denegación explícita que sobreviva a los cambios en la política de identidad) y una política de identidad de IAM (privilegios mínimos para el rol).
Los archivos de S3 evalúan s3files:ClientMount, s3files:ClientWrite y s3files:ClientRootAccess en comparación con la política del sistema de archivos en cada montaje. La clave de condición s3files:AccessPointArn también se evalúa en cada montaje, por lo que puede escribir una sola instrucción de denegación que bloquee el acceso a través de cualquier punto de acceso excepto el que especifique. Si se deniega o no se concede alguna acción necesaria, se produce un error en el montaje antes de que se lleve a cabo ninguna operación de archivo. En las dos secciones siguientes se abordan los dos requisitos más comunes: restringir una carga de trabajo a un punto de acceso específico y denegar por completo el acceso de una carga de trabajo al sistema de archivos.
Restricción del acceso a un punto de acceso específico
Este patrón se aplica cuando un rol (por ejemplo, un rol de instancia de EC2 o un rol de tarea de ECS) debe montar el sistema de archivos a través de un solo punto de acceso. La clave de condición es s3files:AccessPointArn. La política exige una Allow para el punto de acceso previsto y una Deny explícita para todos los demás puntos de acceso. Las concesiones de IAM son acumulativas en todas las políticas de identidad y recursos; sin una denegación explícita, una política independiente puede conceder el acceso a un punto de acceso diferente.
Política del sistema de archivos de ejemplo:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowComputeAOnlyViaSpecificAP", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT:role/compute-a-role" }, "Action": [ "s3files:ClientMount", "s3files:ClientWrite" ], "Condition": { "StringEquals": { "s3files:AccessPointArn": "arn:aws:s3files:REGION:ACCOUNT:file-system/fs-ID/access-point/fsap-ID" } } }, { "Sid": "DenyComputeAIfWrongAP", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::ACCOUNT:role/compute-a-role" }, "Action": "s3files:Client*", "Condition": { "StringNotEquals": { "s3files:AccessPointArn": "arn:aws:s3files:REGION:ACCOUNT:file-system/fs-ID/access-point/fsap-ID" } } } ] }
El rol compute-a-role solo puede montarse y escribirse cuando la solicitud está dirigida a fsap-ID, y se deniega de forma explícita en todos los demás puntos de acceso de este sistema de archivos. Las políticas de identidad no pueden invalidar una denegación explícita en una política de recursos, por lo que esta restricción se mantiene incluso si posteriormente se vincula al rol una política de IAM más amplia.
Comando de montaje:
sudo mount -t s3files -o accesspoint=fsap-ID fs-ID:/ /mnt/s3files
Denegación del acceso a una carga de trabajo a través de cualquier punto de acceso
Este patrón se aplica cuando un rol comparte una cuenta con un sistema de archivos de S3, pero no debe montarla directamente a través de ningún punto de acceso. Para bloquear el uso de todos los puntos de acceso, aplique tres capas ordenadas de la garantía de aislamiento más fuerte a la más débil.
1. Controles de red. Elimine la regla del grupo de seguridad que otorga a las instancias de compute-b-role acceso al destino de montaje en el puerto TCP 2049. Los controles de red son la capa más resistente porque impiden el intento de montaje antes de que se produzca cualquier intercambio de credenciales. Incluso si una política mal configurada concede permisos de montaje, la conexión NFS no puede alcanzar el objetivo de montaje.
2. Denegación explícita en la política del sistema de archivos. Una instrucción de denegación en la política del sistema de archivos rechaza el montaje aunque posteriormente se concedan al rol permisos de IAM más amplios. Una política de recursos del sistema de archivos establece una denegación que persiste incluso si alguien con iam:PutRolePolicy modifica las políticas de identidad del rol. Solo las entidades principales con s3files:PutFileSystemPolicy pueden cambiar esta capa.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyComputeBOnFileSystem", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::ACCOUNT:role/compute-b-role" }, "Action": "s3files:Client*", "Resource": "*" } ] }
3. Política de identidad de IAM. No conceda permisos de s3files:Client* al rol. Esta es la última capa y la más fácil de configurar erróneamente, ya que cualquier administrador con iam:PutRolePolicy puede conceder permisos de montaje a un rol.
Sin una política de sistema de archivos, cualquier rol puede montarse a través de cualquier punto de acceso.
Una política de recursos del sistema de archivos establece una denegación que no puede eliminar alguien que solo tenga permiso para modificar las políticas de identidad. Sin una política de sistema de archivos, cualquier rol con s3files:ClientMount en su política de identidad puede montarse a través de cualquier punto de acceso del sistema de archivos. Se recomienda adjuntar una política de sistema de archivos a cada sistema de archivos con una línea base de denegación y, a continuación, agregar instrucciones de autorización por carga de trabajo.
Prácticas recomendadas para aislamiento del punto de acceso
En la siguiente tabla se resumen los enfoques recomendados para los objetivos comunes de aislamiento de puntos de acceso.
| Objetivo | Método recomendado |
|---|---|
| Restricción de una carga de trabajo a un único punto de acceso | Permita el rol en el ARN del punto de acceso específico, además de una denegación explícita en todos los demás puntos de acceso. Consulte “Restricción del acceso a un punto de acceso específico”. |
| Impida que un rol de la misma cuenta monte el sistema de archivos. | Elimine el acceso de red al puerto 2049, deniegue la política del sistema de archivos y no lo conceda en IAM. |
| Varias cargas de trabajo en el mismo sistema de archivos, cada una vinculada a su propio punto de acceso | Mantenga un par de permitir y denegar por rol en la política del sistema de archivos, cada uno con un alcance de un ARN de punto de acceso diferente. |
| Acceso entre cuentas a través de un punto de acceso | Utilice la política del sistema de archivos para conceder el rol entre cuentas en el ARN del punto de acceso específico. No se base solo en políticas de identidad. |