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.

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

{ "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 HomeDirectoryy. Implementació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 realice cambios a la política en la consola de IAM, tiene que volver a la consola de AWS Transfer Family y actualizar sus usuarios con los últimos contenidos 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 el 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)"