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 AmazonEFS, se utilizan los permisos de POSIX archivos 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 IAM rol.

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 CreateUser acción en la APIreferencia.

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

  • ${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 IAM rol. Estas variables se crean en una IAM política y se proporcionan 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 IAM de usuario y no al nombre de usuario requerido por AWS Transfer Family.

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 HomeDirectoryyImplementar tu método 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 diagonal inicial (/) del transfer:HomeDirectory parámetro para que pueda usarse como parte de un nombre de recurso de Amazon S3 (ARN) en una Resource declaración.

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 enfoque reduce la sobrecarga de la administración de IAM roles y políticas para administrar el acceso de los usuarios a su 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 Permisos para AssumeRole y AssumeRoleWithWebIdentity en la Guía del IAM usuario. AssumeRoleWith SAML

nota

AWS Transfer Family almacena la política JSON en lugar del nombre de recurso de Amazon (ARN) de la política. Por lo tanto, cuando cambies la política en la IAM consola, tendrás 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 utilizas la AWS CLI, puedes usar 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)"