Creación de una política de sesión para un bucket de Amazon S3 - AWS Transfer Family

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de una política de sesión para un bucket de Amazon S3

Una política de sesión es una política AWS Identity and Access Management (IAM) que restringe a los usuarios a determinadas partes de un bucket de Amazon S3. Esto se consigue evaluando el acceso en tiempo real.

nota

Las políticas de sesión solo se utilizan con Amazon S3. En el caso de Amazon EFS, se utilizan los permisos de archivos POSIX para limitar el acceso.

Puede usar una política de sesión cuando sea necesario proporcionar a un grupo de usuarios el mismo acceso a una parte determinada del bucket de Amazon S3. Por ejemplo, puede que un grupo de usuarios solo requiera acceso al directorio home. Ese grupo de usuarios comparte el mismo rol de IAM.

nota

La longitud máxima de una ruta es 2048 caracteres. Para obtener más información, consulte el Parámetro de solicitud de política correspondiente a la acción de CreateUser en la Referencia de la API.

Para crear una política de sesión, utilice las variables siguientes en su política de IAM:

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

importante

No puede usar las variables anteriores en Políticas administradas. Tampoco puede utilizarlas como variables de política en una definición de roles de IAM. Puede crear estas variables en una política de IAM y especificarlas directamente al configurar el usuario. Tampoco puede utilizar la variable ${aws:Username} en esta política de sesión. Esta variable hace referencia a un nombre de usuario de IAM, no al nombre de usuario que AWS Transfer Family necesita.

Ejemplo de política de sesión

El código siguiente muestra un ejemplo de política de sesión.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
nota

En el ejemplo de política anterior se supone que los directorios principales de los usuarios están configurados para incluir una barra al final, lo que significa que se trata de un directorio. Si, por el contrario, establece el HomeDirectory de un usuario sin la barra final, debe incluirlo como parte de su política.

En el ejemplo anterior de política, anote el uso de los parámetros de la política transfer:HomeFolder, transfer:HomeBucket y transfer:HomeDirectory. Estos parámetros se establecen para el HomeDirectory que está configurado para el usuario, tal y como se describe en HomeDirectoryyImplementación de su método de API Gateway. Estos parámetros tienen las siguientes definiciones:

  • El parámetro transfer:HomeBucket se sustituye por el primer componente de HomeDirectory.

  • El parámetro transfer:HomeFolder se sustituye por las partes restantes del parámetro HomeDirectory.

  • Se ha eliminado la barra inclinada inicial (/) del parámetro transfer:HomeDirectory para que pueda usarse como parte de un nombre de recurso de Amazon (ARN) de S3 en una declaración de Resource.

nota

Si utiliza directorios lógicos, es decir, el homeDirectoryType del usuario es LOGICAL, estos parámetros de política (HomeBucket, HomeDirectory y HomeFolder) no son compatibles.

Por ejemplo, supongamos que el parámetro HomeDirectory que está configurado para el usuario de Transfer Family es /home/bob/amazon/stuff/.

  • transfer:HomeBucket toma el valor de /home.

  • transfer:HomeFolder toma el valor de /bob/amazon/stuff/.

  • transfer:HomeDirectory se convierte en home/bob/amazon/stuff/.

El primer "Sid" permite al usuario enumerar todos los directorios a partir de /home/bob/amazon/stuff/.

El segundo "Sid" limita los accesos del usuario put y get a la misma ruta, /home/bob/amazon/stuff/.

Al aplicar la política anterior, cuando un usuario inicia sesión solo tiene acceso a los objetos de su directorio de inicio. En el momento de la conexión, AWS Transfer Family reemplaza estas variables por los valores adecuados para el usuario. Esto facilita la aplicación de los mismos documentos de política a múltiples usuarios. Este método reduce el trabajo de administración de roles y políticas de IAM para el acceso de los usuarios al bucket de Amazon S3.

También puede utilizar una política de sesión para personalizar el acceso de cada usuario en función de los requisitos de su negocio. Para obtener más información, consulte los permisos para AssumeRole AssumeRoleWith SAML y AssumeRoleWithWebIdentity la Guía del usuario de IAM.

nota

AWS Transfer Family almacena el JSON de la política, en lugar del nombre de recurso de Amazon (ARN) de la política. Por lo tanto, cuando cambias la política en la consola de IAM, tienes que volver a la AWS Transfer Family consola y actualizar a tus usuarios con el contenido más reciente de la política. Puede actualizar el usuario en la pestaña Información de la política en la sección Configuración de usuario.

Si utiliza la AWS CLI, puede utilizar el siguiente comando para actualizar la política.

aws transfer update-user --server-id server --user-name user --policy \ "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"

Sustituciones anidadas de las políticas de sesión

Las sustituciones anidadas no se realizan en las políticas de sesión de Transfer Family. Las políticas de sesión pueden usar variables anidadas, como. ${transfer:HomeDirectory} Cuando se procesa la política, es posible que la variable externa (por ejemplo,${transfer:HomeDirectory}) se sustituya por un valor que contenga otra variable (por ejemplo, {amzn-s3-demo-bucket:/$(transfer:UserName}). Sin embargo, la variable anidada ya no se sustituye por el nombre de usuario real (por ejemplo, johndoe).

Esto significa que, al crear políticas de sesión para Transfer Family, debe tener en cuenta este comportamiento y asegurarse de que la estructura de políticas y el uso de variables estén diseñados en consecuencia. Es posible que las variables anidadas no se resuelvan como se esperaba y que la política no conceda los permisos previstos. Es importante probar y validar minuciosamente las políticas de sesión para garantizar que funcionan según lo esperado. Este comportamiento es una consideración clave a la hora de implementar el control de acceso y los permisos para su entorno de Transfer Family.

Una solución a este problema es utilizar el nombre real del bucket de Amazon S3 en la política de sesión. Así, por ejemplo, en lugar de especificarlo ${transfer:HomeDirectory} en su política de sesión, utilice lo siguiente, donde amzn-s3-demo-bucket es su bucket real:. ${amzn-s3-demo-bucket/transfer:UserName}