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.
Uso de directorios lógicos para simplificar las estructuras de directorios de Transfer Family
Los directorios lógicos simplifican la estructura AWS Transfer Family de directorios del servidor. Con los directorios lógicos, puede crear una estructura de directorios virtuales con nombres fáciles de usar por los que navegan los usuarios cuando se conectan a su bucket de Amazon S3 o al sistema de archivos Amazon EFS. Esto impide que los usuarios vean las rutas de directorio reales, los nombres de los buckets y los nombres del sistema de archivos.
nota
Debe utilizar las políticas de sesión para que los usuarios finales solo puedan realizar las operaciones que usted les permita realizar.
Debe utilizar directorios lógicos para crear un directorio virtual fácil de usar para sus usuarios finales y eliminar los nombres de los segmentos. Las asignaciones de directorios lógicos solo permiten a los usuarios acceder a sus rutas lógicas y subdirectorios designados, y prohíben las rutas relativas que atraviesan las raíces lógicas.
Transfer Family valida todas las rutas que puedan incluir elementos relativos y bloquea activamente estas rutas para que no se resuelvan antes de pasarlas a Amazon S3; esto evita que los usuarios vayan más allá de sus asignaciones lógicas.
Si bien Transfer Family impide que los usuarios finales accedan a directorios fuera de su directorio lógico, le recomendamos que también utilice funciones o políticas de sesión únicas para aplicar los privilegios mínimos a nivel de almacenamiento.
Comprender el chroot y la estructura de directorios
Una operación chroot le permite establecer el directorio raíz de un usuario en cualquier ubicación de la jerarquía de almacenamiento. Esto restringe a los usuarios a su directorio principal o raíz configurado, lo que impide el acceso a los directorios de nivel superior.
Pensemos en un caso en el que un usuario de Amazon S3 esté limitado aamzn-s3-demo-bucket/home/${transfer:UserName}
. Sin chroot, algunos clientes podrían permitir a los usuarios pasar a /amzn-s3-demo-bucket/home, lo que requeriría cerrar sesión e iniciar sesión para volver al directorio correspondiente. Al realizar una operación de chroot, se evita este problema.
Puede crear estructuras de directorios personalizadas en varios buckets y prefijos. Esto resulta útil si tu flujo de trabajo requiere un diseño de directorio específico que los prefijos de bucket por sí solos no pueden proporcionar. También puede vincular a varias ubicaciones no contiguas dentro de Amazon S3, de forma similar a la creación de un enlace simbólico en un sistema de archivos de Linux en el que la ruta del directorio hace referencia a una ubicación diferente del sistema de archivos.
Reglas para el uso de directorios lógicos
En esta sección, se describen algunas reglas y otras consideraciones para usar directorios lógicos.
Límites de mapeo
-
Solo se permite un mapeo cuando
Entry
está"/"
(no se permiten rutas superpuestas). -
Los directorios lógicos admiten mapeos de hasta 2,1 MB para los usuarios personalizados de IDP y AD, y de 2000 entradas para los usuarios gestionados por el servicio. Puede calcular el tamaño de las asignaciones de la siguiente manera:
-
Escribe un mapeo típico en el formato
{"Entry":"/
, dondeentry-path
","Target":"/target-path
"}
yentry-path
están los valores reales que utilizarás.target-path
-
Cuente los caracteres de esa cadena y, a continuación, añada uno (1).
-
Multiplique ese número por el número aproximado de mapeos que tiene para su servidor.
Si el número que calculó en el paso 3 es inferior a 2,1 MB, las asignaciones se encuentran dentro del límite aceptable.
-
Requisitos de la ruta de destino
-
Utilice la
${transfer:UserName}
variable si la ruta del depósito o del sistema de archivos se ha parametrizado en función del nombre de usuario. -
Los destinos se pueden configurar para que apunten a diferentes depósitos o sistemas de archivos de Amazon S3, siempre que la función de IAM asociada tenga los permisos necesarios para acceder a esas ubicaciones de almacenamiento.
-
Todos los objetivos deben empezar con una barra inclinada (
/
), pero no pueden terminar con una. Por ejemplo,/amzn-s3-demo-bucket/images
es correcto, mientras queamzn-s3-demo-bucket/images
y/amzn-s3-demo-bucket/images/
no lo es.
Consideraciones de almacenamiento
-
Amazon S3 es un almacén de objetos en el que las carpetas solo existen como un concepto virtual. Cuando se utiliza el almacenamiento de Amazon S3, Transfer Family muestra los prefijos como directorios en las operaciones STAT, incluso si no hay ningún objeto de cero bytes con una barra al final. Un objeto de cero bytes propiamente dicho con una barra al final también se presenta como directorio en las operaciones de STAT. Este comportamiento se describe en Organizar objetos en la consola de Amazon S3 mediante carpetas de la Guía del usuario de Amazon Simple Storage Service.
-
Para las aplicaciones que necesitan distinguir entre archivos y carpetas, utilice Amazon Elastic File System (Amazon EFS) como opción de almacenamiento de Transfer Family.
-
Si especifica valores de directorio lógicos para su usuario, el parámetro que utilice depende del tipo de usuario:
-
Para los usuarios administrados por el servicio, introduzca los valores del directorio lógico en
HomeDirectoryMappings
. -
Para los usuarios de proveedores de identidad personalizados, proporcione los valores del directorio lógico en
HomeDirectoryDetails
.
-
Valores del directorio de usuarios
-
El parámetro para especificar los valores del directorio lógico depende del tipo de usuario:
-
Para los usuarios administrados por el servicio, introduzca los valores del directorio lógico en
HomeDirectoryMappings
. -
Para los usuarios de proveedores de identidades personalizados, proporcione los valores del directorio lógico en
HomeDirectoryDetails
.
-
-
Al usar LOGICAL HomeDirectoryType, puede especificar un HomeDirectory valor para los usuarios gestionados por el servicio, el acceso a Active Directory y las implementaciones de proveedores de identidad personalizados, siempre que HomeDirectoryDetails se indique en la respuesta. Si no se especifica, el HomeDirectory valor predeterminado es.
/
Para obtener más información sobre cómo implementar directorios lógicos, consulteImplementación de directorios lógicos.
Configuración de directorios lógicos para Amazon EFS
Si su servidor de Transfer Family utiliza Amazon EFS, el directorio de inicio del usuario debe crearse con acceso de lectura y escritura para que el usuario pueda trabajar en su directorio de inicio lógico. El usuario no puede crear este directorio por sí mismo, ya que carecería de permisos para mkdir
en su directorio de inicio lógico.
Si el directorio de inicio del usuario no existe y este ejecuta un comando ls
, el sistema responde de la siguiente manera:
sftp> ls remote readdir ("/"): No such file or directory
Un usuario con acceso administrativo al directorio de inicio debe crear el directorio de inicio lógico del usuario.
Respuesta personalizada AWS Lambda
Puede utilizar directorios lógicos con una función de Lambda que se conecte al proveedor de identidad personalizado. Para ello, en la función de Lambda, especifique HomeDirectoryType
como LOGICAL
, y añada los valores Entry
y Target
para el parámetro HomeDirectoryDetails
. Por ejemplo:
HomeDirectoryType: "LOGICAL" HomeDirectoryDetails: "[{\"Entry\": \"/\", \"Target\": \"/amzn-s3-demo-bucket/theRealFolder"}]"
El siguiente código es un ejemplo de una respuesta correcta de una llamada de autenticación de Lambda personalizada.
aws transfer test-identity-provider \ --server-id s-1234567890abcdef0 \ --user-name myuser { "Url": "https://a1b2c3d4e5.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234567890abcdef0/users/myuser/config", "Message": "", "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/bob-usa-role\", \"HomeDirectoryType\": \"LOGICAL\", \"HomeDirectoryDetails\": \"[{\\\"Entry\\\":\\\"/myhome\\\",\\\"Target\\\":\\\"/amzn-s3-demo-bucket/theRealFolder\\\"}]\", \"PublicKeys\": \"[ssh-rsa myrsapubkey]\"}", "StatusCode": 200 }
nota
La línea "Url":
se devuelve solo si utiliza un método de puerta de enlace API como proveedor de identidad personalizado.