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
Para simplificar la estructura de directorios AWS Transfer Family del servidor, puede utilizar directorios lógicos. Con los directorios lógicos, puede crear una estructura de directorios virtuales que utilice nombres fáciles de usar por los que navegan los usuarios cuando se conectan a su bucket de Amazon S3 o al sistema de EFS archivos de Amazon. Al utilizar directorios lógicos, puede evitar revelar a sus usuarios finales las rutas de directorio absolutas, los nombres de los buckets de Amazon S3 y los nombres de los sistemas de EFS archivos.
nota
Aunque depende del uso que haga de las políticas de sesión y de otros requisitos internos, por lo general no necesitará tanto las políticas de sesión como los directorios lógicos para garantizar que sus usuarios accedan únicamente a los archivos que usted desea que accedan. Si está configurando directorios lógicos, no cree también políticas de sesión, ya que tener ambas puede provocar errores de denegación de permisos.
Puede utilizar los directorios lógicos para establecer el directorio raíz del usuario en la ubicación que desee dentro de la jerarquía de almacenamiento mediante la realización de lo que se conoce como operación chroot. En este modo, los usuarios no pueden navegar a un directorio fuera del directorio de inicio o raíz que haya configurado para ellos.
Por ejemplo, aunque a un usuario de Amazon S3 se le ha limitado el acceso únicamente a /
, algunos clientes permiten a los usuarios recorrer una carpeta hasta mybucket
/home
/${transfer:UserName
}/
. En esta situación, el usuario vuelve a acceder al directorio de inicio deseado solo después de cerrar sesión y volver a iniciar sesión en el servidor de Transfer Family. Realizar una operación chroot puede evitar que se produzca esta situación.mybucket
/home
Puede crear su propia estructura de directorio en buckets y prefijos. Esta característica resulta útil si tiene un flujo de trabajo que espera una estructura de directorios específica que no pueda replicar mediante prefijos de bucket. 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.
FILEAsignaciones de directorios lógicos
El tipo HomeDirectoryMapEntry
de datos ahora incluye un Type
parámetro. Antes de que existiera este parámetro, podría haber creado una asignación de directorios lógica en la que el destino fuera un archivo. Si ha creado anteriormente alguno de estos tipos de asignaciones de directorios lógicas, debe definirlo de forma explícita o estas asignaciones no funcionarán correctamente en el futuro. Type
FILE
Una forma de hacerlo consiste en llamar al mapeo existente y establecer el UpdateUser
API valor Type
to FILE
para el mapeo existente.
Reglas para el uso de directorios lógicos
Antes de crear las asignaciones de directorio lógico, debe comprender las siguientes reglas:
-
Si
Entry
es"/"
, solo puede tener una asignación, ya que no se permite la superposición de rutas. -
Los directorios lógicos admiten mapeos de hasta 2,1 MB (para los usuarios gestionados por el servicio, este límite es de 2000 entradas). Es decir, la estructura de datos que contiene las asignaciones tiene un tamaño máximo de 2,1 MB. Si tiene muchos mapeos, puede calcular el tamaño de los mapeos de la siguiente manera:
-
Escribe un mapeo típico en el formato
{"Entry":"/
, dondeentry-path
","Target":"/target-path
"}
yentry-path
son 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.
-
-
Los destinos pueden usar la variable
${transfer:UserName}
si la ruta del bucket o del sistema de archivos se ha parametrizado en función del nombre de usuario. -
Los destinos pueden ser rutas en distintos depósitos o sistemas de archivos, pero debe asegurarse de que la función mapped AWS Identity and Access Management (IAM) (el
Role
parámetro de la respuesta) proporcione acceso a esos depósitos o sistemas de archivos. -
No especifiques el
HomeDirectory
parámetro, ya que este valor viene implícito en losEntry
Target
pares cuando usas elLOGICAL
valor del parámetro.HomeDirectoryType
-
Los objetivos deben empezar con un carácter de barra diagonal (
/
), pero no deben utilizarse barras diagonales finales (/
) al especificar el.Target
Por ejemplo,/
es aceptable, pero noDOC-EXAMPLE-BUCKET
/images
lo es.DOC-EXAMPLE-BUCKET
/images/
DOC-EXAMPLE-BUCKET
/images/ -
Amazon S3 es un almacén de objetos, lo que significa que las carpetas son un concepto virtual y no existe una jerarquía de directorios real. Si su aplicación ejecuta una
stat
operación desde un cliente, todo se clasifica como un archivo cuando utiliza Amazon S3 como almacenamiento. 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. Si su aplicación requiere que se muestrestat
con precisión si algo es un archivo o una carpeta, puede utilizar Amazon Elastic File System (AmazonEFS) como opción de almacenamiento para los servidores 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
.
-
importante
A menos que opte por optimizar el rendimiento de sus directorios de Amazon S3 (al crear o actualizar un servidor), el directorio raíz debe existir al inicio. En el caso de Amazon S3, esto significa que ya debe haber creado un objeto de cero bytes que termine con una barra diagonal (/
) para crear la carpeta raíz. Evitar este problema es una razón para considerar la optimización del rendimiento de Amazon S3.
Implementar directorios lógicos y chroot
Para utilizar las características chroot y los directorios lógicos, debe hacer lo siguiente:
Active los directorios lógicos para cada usuario. Para ello, defina el parámetro HomeDirectoryType
a LOGICAL
cuando cree o actualice el usuario.
"HomeDirectoryType": "LOGICAL"
chroot
Para chroot, cree una estructura de directorios que consista en un único Entry
y un par Target
para cada usuario. La carpeta raíz es el punto Entry
y Target
es la ubicación del bucket o sistema de archivos a la que se realiza la asignación.
Puede utilizar una ruta absoluta, como en el ejemplo anterior, o puede usar una sustitución dinámica del nombre de usuario por ${transfer:UserName}
, como en el ejemplo siguiente.
[{"Entry": "/", "Target": "/mybucket/${transfer:UserName}"}]
En el ejemplo anterior, el usuario está bloqueado en su directorio raíz y no puede ascender en la jerarquía.
Estructura de directorio virtual
Para una estructura de directorios virtuales, puede crear varios Entry
Target
emparejamientos, con destinos en cualquier parte de los depósitos o sistemas de EFS archivos de S3, incluso en varios depósitos o sistemas de archivos, siempre que la asignación de IAM roles del usuario tenga permisos para acceder a ellos.
En el siguiente ejemplo de estructura virtual, cuando el usuario inicia sesión AWS SFTP, se encuentra en el directorio raíz con los subdirectorios de/pics
,, y/doc
. /reporting
/anotherpath/subpath/financials
nota
A menos que elija optimizar el rendimiento de sus directorios de Amazon S3 (al crear o actualizar un servidor), el usuario o el administrador deberán crear los directorios si aún no existen. Evitar este problema es una razón para considerar la optimización del rendimiento de Amazon S3.
En el caso de AmazonEFS, sigue siendo necesario que el administrador cree las asignaciones lógicas o el /
directorio.
[ {"Entry": "/pics", "Target": "/bucket1/pics"}, {"Entry": "/doc", "Target": "/bucket1/anotherpath/docs"}, {"Entry": "/reporting", "Target": "/reportingbucket/Q1"}, {"Entry": "/anotherpath/subpath/financials", "Target": "/reportingbucket/financials"}]
nota
Solo puede cargar archivos en las carpetas específicas que se asignen. Esto significa que, en el ejemplo anterior, no puede subirlos a los directorios /anotherpath
o anotherpath/subpath
, únicamente a anotherpath/subpath/financials
. Tampoco puede asignar esas rutas directamente, ya que no se permite la superposición de rutas.
Por ejemplo, supongamos que realiza las siguientes asignaciones:
{ "Entry": "/pics", "Target": "/mybucket/pics" }, { "Entry": "/doc", "Target": "/mybucket/mydocs" }, { "Entry": "/temp", "Target": "/mybucket" }
Solo puede cargar archivos en esos buckets. Cuando se conecta por primera vez a través de sftp
, iniciará en el directorio raíz, /
. Si intenta cargar un archivo en ese directorio, la carga no se realizará correctamente. Los siguientes comandos muestran una secuencia de ejemplo:
sftp> pwd Remote working directory: / sftp> put file Uploading file to /file remote open("/file"): No such file or directory
Para subirlo a cualquier directory/sub-directory
, debe asignar de forma explícita la ruta a sub-directory
.
Para obtener más información sobre la configuración de los directorios lógicos y chroot para sus usuarios, incluida una AWS CloudFormation plantilla que pueda descargar y usar, consulte Simplifique su AWS SFTP estructura con directorios lógicos y chroot
Ejemplo de configuración de directorios lógicos
En este ejemplo, creamos un usuario y asignamos dos directorios lógicos. El siguiente comando crea un nuevo usuario (para un servidor de Transfer Family existente) con directorios lógicos pics
y doc
.
aws transfer create-user --user-name marymajor-logical --server-id s-11112222333344445 --role arn:aws:iam::1234abcd5678:role/marymajor-role --home-directory-type LOGICAL \ --home-directory-mappings "[{\"Entry\":\"/pics\", \"Target\":\"/
DOC-EXAMPLE-BUCKET1
/pics\"}, {\"Entry\":\"/doc\", \"Target\":\"/DOC-EXAMPLE-BUCKET2
/test/mydocs\"}]" \ --ssh-public-key-body file://~/.ssh/id_rsa.pub
Si marymajor
es un usuario existente y su tipo de directorio de inicio es PATH
, puede cambiarlo a LOGICAL
con un comando similar al anterior.
aws transfer update-user --user-name marymajor-logical \ --server-id s-11112222333344445 --role arn:aws:iam::1234abcd5678:role/marymajor-role \ --home-directory-type LOGICAL --home-directory-mappings "[{\"Entry\":\"/pics\", \"Target\":\"/
DOC-EXAMPLE-BUCKET1
/pics\"}, \ {\"Entry\":\"/doc\", \"Target\":\"/DOC-EXAMPLE-BUCKET2
/test/mydocs\"}]"
Tenga en cuenta lo siguiente:
-
Si los directorios
/
yDOC-EXAMPLE-BUCKET1
/pics/
aún no existen, el usuario (o un administrador) debe crearlos.DOC-EXAMPLE-BUCKET2
/test/mydocs -
Cuando
marymajor
se conecta al servidor y ejecuta el comandols -l
, ve lo siguiente:drwxr--r-- 1 - - 0 Mar 17 15:42 doc drwxr--r-- 1 - - 0 Mar 17 16:04 pics
-
marymajor
no puede crear ningún archivo o directorio en este nivel. Sin embargo, dentro depics
ydoc
, puede añadir subdirectorios. -
Los archivos que añade a
pics
ydoc
se añaden a las rutas de Amazon S3/
yDOC-EXAMPLE-BUCKET1
/pics/
, respectivamente.DOC-EXAMPLE-BUCKET2
/test/mydocs -
En este ejemplo, especificamos dos buckets diferentes para ilustrar esa posibilidad. Sin embargo, puede usar el mismo bucket para varios o todos los directorios lógicos que especifique para el usuario.
Configurar directorios lógicos para Amazon EFS
Si su servidor Transfer Family utiliza AmazonEFS, el directorio principal del usuario debe crearse con acceso de lectura y escritura para que el usuario pueda trabajar en su directorio principal 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.
AWS Lambda Respuesta personalizada
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\": \"/
DOC-EXAMPLE-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\\\":\\\"/
DOC-EXAMPLE-BUCKET
/theRealFolder\\\"}]\",\"PublicKeys\": \"[ssh-rsa myrsapubkey]\"}", "StatusCode": 200 }
nota
La "Url":
línea se devuelve solo si utiliza un método API Gateway como proveedor de identidad personalizado.