

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.

# Administración de usuarios para puntos finales de servidor
<a name="create-user"></a>

En las siguientes secciones, encontrará información sobre cómo añadir usuarios mediante AWS Transfer Family un proveedor de identidades personalizado AWS Directory Service for Microsoft Active Directory o personalizado.

Como parte de las propiedades de cada usuario se almacena también su clave pública de Secure Shell (SSH). Es necesario hacerlo para la autenticación basada en claves. La clave privada se almacenará localmente en el equipo de su usuario. Cuando el usuario envía una solicitud de autenticación a su servidor mediante un cliente, su servidor confirma que el usuario tiene acceso a la clave SSH privada asociada. A continuación, el servidor autentica correctamente al usuario.

**nota**  
Para obtener información sobre el despliegue y la administración automatizados de usuarios con varias claves SSH, consulte. [Módulos Transfer Family Terraform](terraform.md)

Además debe especificar el directorio de inicio o de destino del usuario y asignar un rol de AWS Identity and Access Management (IAM) al usuario. Opcionalmente puede indicar una política de sesión para restringir el acceso de los usuarios únicamente al directorio de inicio del bucket de Amazon S3.

**importante**  
AWS Transfer Family impide que los nombres de usuario que tengan 1 o 2 caracteres se autentiquen en los servidores SFTP. Además, también bloqueamos el nombre de usuario `root`.  
La razón de esto se debe al gran volumen de intentos de inicio de sesión maliciosos por parte de los escáneres de contraseñas.

## Amazon EFS frente a Amazon S3
<a name="efs-vs-s3-users"></a>

Características de cada opción de almacenamiento:
+ Para limitar el acceso: Amazon S3 admite políticas de sesión; Amazon EFS admite usuarios, grupos y grupos secundarios POSIX IDs
+  Ambas claves admiten public/private 
+  Ambos son compatibles con los directorios principales 
+  Ambos admiten directorios lógicos 
**nota**  
 En el caso de Amazon S3, la mayor parte del soporte para los directorios lógicos se realiza mediante API/CLI. Puede utilizar la casilla de verificación **Restringido** de la consola para bloquear a un usuario en su directorio de inicio, pero no puede especificar una estructura de directorios virtuales. 

## Directorios lógico
<a name="logical-dir-users"></a>

Si especifica valores de directorio lógico para el 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`.

AWS Transfer Family admite la especificación de un HomeDirectory valor cuando se utiliza el LOGICAL HomeDirectoryType. Esto se aplica a los usuarios gestionados por el servicio, al acceso a Active Directory y a las implementaciones de proveedores de identidad personalizados cuando HomeDirectoryDetails se proporcionan en la respuesta.

**importante**  
Al especificar a HomeDirectory con LOGICAL HomeDirectoryType, el valor debe asignarse a una de las asignaciones de directorios lógicos. El servicio lo valida tanto durante la creación del usuario como durante las actualizaciones para evitar configuraciones que no funcionen.

### Comportamiento predeterminado
<a name="logical-dir-default"></a>

De forma predeterminada, si no se especifica, HomeDirectory se establece en «/» para el modo LÓGICO. Este comportamiento no ha cambiado y sigue siendo compatible con las definiciones de usuario existentes.
+ Asegúrese de asignarlo HomeDirectory a una *entrada* y no a un *objetivo*. Para obtener más información, consulte [Reglas para el uso de directorios lógicos](logical-dir-mappings.md#logical-dir-rules).
+ Para obtener más información sobre la estructura de un directorio virtual, consulte[Estructura de directorio virtual](implement-log-dirs.md#virtual-dirs).

### Consideraciones sobre el proveedor de identidad personalizado
<a name="logical-dir-custom-idp"></a>

Al usar un proveedor de identidad personalizado, ahora puede especificar un HomeDirectory en la respuesta mientras usa LOGICAL HomeDirectoryType. La llamada a la TestIdentityProvider API generará resultados correctos cuando el IDP personalizado especifique un HomeDirectory en modo LÓGICO.

Ejemplo de respuesta de IDP personalizada con HomeDirectory y LOGICAL: HomeDirectoryType

```
{
  "Role": "arn:aws:iam::123456789012:role/transfer-user-role",
  "HomeDirectoryType": "LOGICAL",
  "HomeDirectory": "/marketing",
  "HomeDirectoryDetails": "[{\"Entry\":\"/\",\"Target\":\"/bucket/home\"},{\"Entry\":\"/marketing\",\"Target\":\"/marketing-bucket/campaigns\"}]"
}
```

## Cuotas de grupo de Active Directory
<a name="ad-group-quotas"></a>

AWS Transfer Family tiene un límite predeterminado de 100 grupos de Active Directory por servidor. Si su caso de uso requiere más de 100 grupos, considere la posibilidad de utilizar una solución de proveedor de identidad personalizada, tal como se describe en [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).

Este límite se aplica a los servidores que utilizan los siguientes proveedores de identidad:
+ AWS Directory Service para Microsoft Active Directory
+ AWS Directory Service para los servicios de dominio Entra ID

Si necesita solicitar un aumento del límite de servicio, consulte [Servicio de AWS las cuotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) en *Referencia general de AWS*. Si su caso de uso requiere más de 100 grupos, considere la posibilidad de utilizar una solución de proveedor de identidad personalizada, tal como se describe en [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).

Para obtener información sobre la solución de problemas relacionados con los límites de grupos de Active Directory, consulte[Se han superado los límites de grupos de Active Directory](auth-issues.md#managed-ad-group-limits).

**Topics**
+ [Amazon EFS frente a Amazon S3](#efs-vs-s3-users)
+ [Directorios lógico](#logical-dir-users)
+ [Cuotas de grupo de Active Directory](#ad-group-quotas)
+ [Trabajar con usuarios de servicios administrados](service-managed-users.md)
+ [Uso de proveedores de identidad personalizados](custom-idp-intro.md)
+ [Uso AWS de Directory Service para Microsoft Active Directory](directory-services-users.md)
+ [Uso AWS de Directory Service para los servicios de dominio Entra ID](azure-sftp.md)

# Trabajar con usuarios de servicios administrados
<a name="service-managed-users"></a>

Puede añadir usuarios administrados por el servicio Amazon S3 o Amazon EFS a su servidor, en función de la configuración del **Dominio** del servidor. Para obtener más información, consulte [Configuración de un punto final de servidor SFTP, FTPS o FTP](tf-server-endpoint.md).

Cuando utilice la modalidad con identidad administrada por el servicio, debe añadir los usuarios al servidor con protocolo habilitado de transferencia de archivos. Al hacerlo, cada nombre de usuario debe ser único en el servidor.

[Para añadir un usuario gestionado por el servicio mediante programación, consulta el ejemplo de la API. [CreateUser](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html)](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#API_CreateUser_Examples)

**nota**  
Para los usuarios gestionados por el servicio, hay un límite de 2000 entradas de directorio lógico. Para obtener información sobre el uso de directorios lógicos, consulte. [Uso de directorios lógicos para simplificar las estructuras de directorios de Transfer Family](logical-dir-mappings.md)

**Topics**
+ [Añadir usuarios administrados por el servicio Amazon S3](#add-s3-user)
+ [Añadir usuarios administrados por el servicio Amazon EFS](#add-efs-user)
+ [Administración de usuarios administrados por servicios](#managing-service-managed-users)

## Añadir usuarios administrados por el servicio Amazon S3
<a name="add-s3-user"></a>

**nota**  
 Si desea configurar un depósito de Amazon S3 multicuenta, siga los pasos que se mencionan en este artículo del Knowledge Center: [¿Cómo configuro mi AWS Transfer Family servidor para que utilice un depósito de Amazon Simple Storage Service que está en otra AWS cuenta?](https://aws.amazon.com/premiumsupport/knowledge-center/sftp-cross-account-s3-bucket/) .

**Cómo añadir un usuario administrado por el servicio Amazon S3 a su servidor**

1. Abra la AWS Transfer Family consola en y [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/), a continuación, seleccione **Servidores** en el panel de navegación.

1. En la página **Servidores**, seleccione la casilla de verificación situada junto al servidor al que desee añadir el usuario.

1. Seleccione **Agregar usuario**.

1. En la sección **Configuración de usuario**, en **Nombre de usuario**, introduzca el nombre de usuario. Este nombre de usuario debe tener un mínimo de 3 y un máximo de 100 caracteres. Puede utilizar los siguientes caracteres en el nombre de usuario: a—z, A-Z, 0—9, subrayado '\$1', guión '-', punto '.' y signo '@'. El nombre de usuario no puede empezar con un guión '-', punto '.' o con el signo '@'.

1. En **Acceso**, elija el rol de IAM que creó anteriormente y que proporciona acceso a su bucket de Amazon S3.

   Se trata del rol de IAM que creó siguiendo el procedimiento descrito en [Creación de una política y un rol de IAM](requirements-roles.md). Ese rol de IAM incluye una política de IAM que proporciona acceso al bucket de Amazon S3. También incluye una relación de confianza con el AWS Transfer Family servicio, definida en otra política de IAM. Si necesita un control de acceso detallado para sus usuarios, consulte la entrada del blog [Mejore el control de acceso a los datos con Amazon AWS Transfer Family S3](https://aws.amazon.com/blogs/storage/enhance-data-access-control-with-aws-transfer-family-and-amazon-s3-access-points/).

1. (Opcional) En **Política**, seleccione una de las siguientes opciones:
   + **Ninguna**
   + **Políticas existentes**
   + **Seleccione una política de IAM**: le permite elegir una política de sesión existente. Elija **Ver** para ver un objeto JSON que contiene los detalles de la política.
   + **Generar automáticamente una política basada en la carpeta de inicio**: genera una política de sesión para usted. Elija **Ver** para ver un objeto JSON que contiene los detalles de la política.
**nota**  
Si elige **Generar automáticamente una política basada en la carpeta principal**, no seleccione **Restringido** para este usuario.

   Para obtener más información sobre las políticas de sesión, consulte[Creación de una política y un rol de IAM](requirements-roles.md), [Creación de una política de sesión para un bucket de Amazon S3](users-policies-session.md) o. [Enfoques de gestión dinámica de permisos](dynamic-permission-management.md)

1. En el **directorio principal**, elija el bucket de Amazon S3 para almacenar los datos que se van a transferir AWS Transfer Family. Especifique la ruta al directorio `home` al que llega el usuario cuando inicia sesión con su cliente.

   Si deja este parámetro en blanco, se usará el directorio `root` del bucket de su Amazon S3. En ese caso, asegúrese de que el rol de IAM proporciona acceso al directorio `root`.
**nota**  
Le recomendamos que elija una ruta de directorio que contenga el nombre de usuario correspondiente, pues le permitirá usar con eficacia una política de sesión. La política de sesión limita el acceso de cada usuario a su directorio `home` en el bucket de Amazon S3.

1. (Opcional) En **Restringido**, seleccione la casilla de verificación para que los usuarios no puedan acceder a nada que esté fuera de esa carpeta y no puedan ver el nombre de la carpeta o el bucket de Amazon S3.
**nota**  
Asignar al usuario un directorio de inicio y restringirlo a ese directorio de inicio debería ser suficiente para bloquear el acceso del usuario a la carpeta designada. Si necesita aplicar más controles, utilice una política de sesión.   
Si selecciona **Restringido** para este usuario, no podrá seleccionar la **política de generación automática basada en la carpeta de inicio**, ya que la carpeta de inicio no es un valor definido para los usuarios restringidos.

1. En **Clave pública de SSH**, escriba el componente de clave pública del par de claves de SSH.

   El servicio validará la clave antes de permitirle añadir un nuevo usuario.
**nota**  
Para obtener instrucciones sobre el modo de generar un par de claves de SSH, consulte [Genere claves SSH para los usuarios administrados por el servicio](sshkeygen.md).

1. (Opcional) En **Clave** y **Valor**, escriba una o varias etiquetas como pares clave-valor y seleccione **Agregar etiqueta**.

1. Seleccione **Add (Añadir)** para agregar el nuevo usuario al servidor que haya elegido.

   El nuevo usuario aparecerá en la sección **Usuarios** de la página **Detalles del servidor**.

**Próximos pasos**: para el siguiente paso, continúe con [Transferencia de archivos a través de un punto de conexión mediante un cliente](transfer-file.md).

## Añadir usuarios administrados por el servicio Amazon EFS
<a name="add-efs-user"></a>

Amazon EFS utiliza el modelo de permisos de archivos de la Interfaz de sistema operativo portátil (POSIX) para representar la propiedad de los archivos.
+  Para obtener más información sobre la propiedad de los archivos de Amazon EFS, consulte [Propiedad de los archivos de Amazon EFS](configure-storage.md#efs-file-ownership). 
+ Para obtener más información sobre la configuración de directorios para los usuarios de EFS, consulte [Configuración de los usuarios de Amazon EFS para Transfer Family](configure-storage.md#configure-efs-users-permissions). 

**Cómo añadir un usuario administrado por el servicio Amazon EFS a su servidor**

1. Abra la AWS Transfer Family consola en y [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/), a continuación, seleccione **Servidores** en el panel de navegación.

1. En la página **Servidores**, seleccione el servidor Amazon EFS al que desee añadir un usuario.

1. Seleccione **Añadir usuario** para mostrar la página **Añadir usuario**.

1. En la sección **Configuración de usuario**, aplique los siguientes ajustes.

   1. El **Nombre de usuario**, debe tener un mínimo de 3 y un máximo de 100 caracteres. El nombre de usuario puede contener los siguientes caracteres: a-z, A-Z, 0-9, guion bajo (\$1), guion (-), punto (.) y arroba (@). El nombre de usuario no puede comenzar por un guion (-), un punto (.), ni una arroba (@).

   1.  Para el **Identificador de usuario** y el **Identificador de grupo**, tenga en cuenta lo siguiente: 
      + Para el primer usuario que cree, le recomendamos que introduzca un valor de **0** tanto para el **Identificador de grupo** como para el **Identificador de usuario**. Esto otorga al usuario privilegios de administrador para Amazon EFS. 
      + Para usuarios adicionales, introduzca el ID de usuario POSIX y el ID de grupo del usuario. Se IDs utilizan para todas las operaciones de Amazon Elastic File System realizadas por el usuario. 
      + Para el **Identificador de usuario** y el **Identificador de grupo**, no utilice ceros a la izquierda. Por ejemplo, **12345** es aceptable, pero **012345** no lo es. 

   1. (Opcional) Para el **grupo secundario IDs**, introduzca uno o más grupos POSIX adicionales IDs para cada usuario, separados por comas.

   1. En **Acceso**, elija el rol de IAM que:
      + Otorga al usuario acceso únicamente a los recursos de Amazon EFS (sistemas de archivos) a los que desea que accedan.
      + Define qué operaciones del sistema de archivos puede y no puede realizar el usuario.

      Le recomendamos que utilice el rol de IAM para la selección del sistema de archivos Amazon EFS con acceso y read/write permisos de montaje. Por ejemplo, la combinación de las dos políticas AWS administradas siguientes, si bien es bastante permisiva, otorga los permisos necesarios al usuario: 
      +  AmazonElasticFileSystemClientFullAccess 
      +  AWSTransferConsoleFullAccess 

      Para obtener más información, consulte la publicación del blog de [Soporte de AWS Transfer Family para Amazon Elastic File System](https://aws.amazon.com/blogs/aws/new-aws-transfer-family-support-for-amazon-elastic-file-system/).

   1. Para el **Directorio de inicio**, haga lo siguiente:
      + Elija el sistema de archivos Amazon EFS que desee utilizar para almacenar los datos que desee transferir con AWS Transfer Family.
      + Decida si desea establecer el directorio de inicio como **Restringido**. Si se establece el directorio de inicio en **Restringido**, se producen los siguientes efectos:
        + Los usuarios de Amazon EFS no pueden acceder a ningún archivo o directorio fuera de esa carpeta.
        + Los usuarios de Amazon EFS no pueden ver el nombre del sistema de archivos de Amazon EFS (**fs-xxxxxxx**).
**nota**  
Al seleccionar la opción **Restringido**, los enlaces simbólicos no se resuelven para los usuarios de Amazon EFS.
      + (Opcional) Introduzca la ruta al directorio de inicio en el que desea que estén los usuarios cuando inicien sesión con su cliente.

        Si no especifica un directorio de inicio, se utilizará el directorio raíz del sistema de archivos Amazon EFS. En ese caso, asegúrese de que su rol de IAM proporciona acceso a este directorio raíz.

1. En **Clave pública de SSH**, escriba el componente de clave pública del par de claves de SSH.

   El servicio validará la clave antes de permitirle añadir un nuevo usuario.
**nota**  
Para obtener instrucciones sobre el modo de generar un par de claves de SSH, consulte [Genere claves SSH para los usuarios administrados por el servicio](sshkeygen.md).

1. (Opcional) Introduzca cualquier etiqueta para el usuario. En **Clave** y **Valor**, escriba una o varias etiquetas como pares clave-valor y seleccione **Agregar etiqueta**.

1. Seleccione **Add (Añadir)** para agregar el nuevo usuario al servidor que haya elegido.

   El nuevo usuario aparecerá en la sección **Usuarios** de la página **Detalles del servidor**.

 Problemas que pueden surgir al usar SFTP por primera vez en su servidor de Transfer Family: 
+  Si ejecutas el comando `sftp` y no aparece el mensaje, es posible que aparezca el siguiente mensaje: 

   `Couldn't canonicalize: Permission denied` 

   `Need cwd` 

   En este caso, debe aumentar los permisos de política del rol de usuario. Puede añadir una política AWS gestionada, como. `AmazonElasticFileSystemClientFullAccess` 
+ Si lo introduce `pwd` cuando se le `sftp` solicita ver el directorio principal del usuario, es posible que aparezca el siguiente mensaje, donde *USER-HOME-DIRECTORY* se encuentra el directorio principal del usuario de SFTP:

   `remote readdir("/USER-HOME-DIRECTORY"): No such file or directory` 

  En este caso, debería poder navegar hasta el directorio de inicio (`cd ..`) y crear el directorio de inicio del usuario (`mkdir username`).

**Próximos pasos**: para el siguiente paso, continúe con [Transferencia de archivos a través de un punto de conexión mediante un cliente](transfer-file.md).

## Administración de usuarios administrados por servicios
<a name="managing-service-managed-users"></a>

 En esta sección, puede encontrar información sobre cómo ver una lista de usuarios, cómo editar los detalles de los usuarios y cómo agregar una clave pública SSH. 
+ [Ver una lista de usuarios](#list-users)
+ [Ver o editar los detalles del usuario](#view-user-details)
+ [Eliminar un usuario](#delete-user)
+ [Agregue la clave pública SSH](#add-user-ssh-key)
+ [Eliminar la clave pública SSH](#delete-user-ssh-key)<a name="list-users"></a>

**Cómo encontrar una lista de sus usuarios**

1. Abre la AWS Transfer Family consola en. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)

1. Seleccione **Servidores** en el panel de navegación para mostrar la página **Servidores**.

1. Elija el identificador en la columna **ID de servidor** para ver la página **Detalles del servidor**.

1. En **Usuarios**, consulte una lista de usuarios.<a name="view-user-details"></a>

**Visualización o edición de los detalles del usuario**

1. Abra la AWS Transfer Family consola en [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/).

1. Seleccione **Servidores** en el panel de navegación para mostrar la página **Servidores**.

1. Elija el identificador en la columna **ID de servidor** para ver la página **Detalles del servidor**.

1. En **Usuarios**, elija un nombre de usuario para ver la página de **Detalles del usuario**.

   Puede cambiar las propiedades del usuario en esta página seleccionando **Editar**.

1. En la página de **Detalles del usuario**, seleccione **Editar** junto a **Configuración del usuario**.  
![\[Imagen que muestra la pantalla para editar la configuración de un usuario\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/edit-user-details-page-user-config.png)

1. En la página **Editar configuración**, en **Acceso**, elija el rol de IAM que creó anteriormente y que proporciona acceso a su bucket de Amazon S3.

   Se trata del rol de IAM que creó siguiendo el procedimiento descrito en [Creación de una política y un rol de IAM](requirements-roles.md). Ese rol de IAM incluye una política de IAM que proporciona acceso al bucket de Amazon S3. También incluye una relación de confianza con el AWS Transfer Family servicio, definida en otra política de IAM.

1. (Opcional) Para la **política**, seleccione una de las siguientes opciones:
   + **Ninguna**
   + **Políticas existentes**
   + **Seleccione una política de IAM** para elegir una política existente. Elija **Ver** para ver un objeto JSON que contiene los detalles de la política.

   Para obtener más información sobre las políticas de sesiones, consulte [Creación de una política y un rol de IAM](requirements-roles.md). Para obtener más información sobre la creación de una política de sesión, consulte [Creación de una política de sesión para un bucket de Amazon S3](users-policies-session.md).

1. En el **directorio principal**, elija el bucket de Amazon S3 para almacenar los datos que se van a transferir AWS Transfer Family. Especifique la ruta al directorio `home` al que llega el usuario cuando inicia sesión con su cliente.

   Si deja este parámetro en blanco, se usará el directorio `root` del bucket de su Amazon S3. En ese caso, asegúrese de que el rol de IAM proporciona acceso al directorio `root`.
**nota**  
Le recomendamos que elija una ruta de directorio que contenga el nombre de usuario correspondiente, pues le permitirá usar con eficacia una política de sesión. La política de sesión limita el acceso de cada usuario a su directorio `home` en el bucket de Amazon S3.

1. (Opcional) En **Restringido**, seleccione la casilla de verificación para que los usuarios no puedan acceder a nada que esté fuera de esa carpeta y no puedan ver el nombre de la carpeta o el bucket de Amazon S3.
**nota**  
Al asignar al usuario un directorio de inicio y restringirlo a ese directorio de inicio, esto debería ser suficiente para bloquear el acceso del usuario a la carpeta designada. Utilice una política de sesión cuando necesite aplicar más controles.

1. Seleccione **Save (Guardar)** para guardar los cambios.<a name="delete-user"></a>

**Cómo eliminar un usuario**

1. Abra la AWS Transfer Family consola en [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/).

1. Seleccione **Servidores** en el panel de navegación para mostrar la página **Servidores**.

1. Elija el identificador en la columna **ID de servidor** para ver la página **Detalles del servidor**.

1. En **Usuarios**, elija un nombre de usuario para ver la página de **Detalles del usuario**. 

1. En la página de **Detalles del usuario**, seleccione **Eliminar** a la derecha del nombre de usuario.

1. En la ventana de diálogo de confirmación que aparece, escriba la palabra **delete**, y luego seleccione **Eliminar** para confirmar que desea eliminar al usuario.

 El usuario se elimina de la lista de **usuarios**.<a name="add-user-ssh-key"></a>

**Para añadir una clave pública SSH para un usuario**

1. Abre la AWS Transfer Family consola en. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)

1. En el panel de navegación, seleccione **Servers (Servidores)**.

1. Elija el identificador en la columna **ID de servidor** para ver la página **Detalles del servidor**.

1. En **Usuarios**, elija un nombre de usuario para ver la página de **Detalles del usuario**.

1. Seleccione **Add SSH public key (Añadir clave pública de SSH)** para añadir una nueva clave SSH pública a un usuario.
**nota**  
Las claves SSH las usan solo los servidores que están habilitados para el Protocolo de File Transfer (SFTP) Secure Shell (SSH). Para obtener más información sobre el modo de generar un par de claves SSH, consulte [Genere claves SSH para los usuarios administrados por el servicio](sshkeygen.md).

1. En **SSH public key (Clave pública de SSH)**, escriba el componente de clave pública del par de claves de SSH.

   El servicio validará la clave antes de permitirle añadir un nuevo usuario. El formato de la clave SSH es `ssh-rsa string`. Para generar un par de claves de SSH, consulte [Genere claves SSH para los usuarios administrados por el servicio](sshkeygen.md).

1. Seleccione **Añadir clave**.<a name="delete-user-ssh-key"></a>

**Para eliminar una clave pública SSH de un usuario**

1. Abre la AWS Transfer Family consola en. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)

1. En el panel de navegación, seleccione **Servers (Servidores)**.

1. Elija el identificador en la columna **ID de servidor** para ver la página **Detalles del servidor**.

1. En **Usuarios**, elija un nombre de usuario para ver la página de **Detalles del usuario**.

1. Para eliminar una clave pública, selecciona la casilla de verificación de su clave SSH y selecciona **Eliminar**.

# Uso de proveedores de identidad personalizados
<a name="custom-idp-intro"></a>

AWS Transfer Family ofrece varias opciones para que los proveedores de identidad personalizados autentiquen y autoricen a los usuarios a transferir archivos de forma segura. Estos son los enfoques principales:
+ [Solución de proveedor de identidad personalizada](custom-idp-toolkit.md)—En este tema se describe la solución de proveedor de identidad personalizado Transfer Family, mediante un conjunto de herramientas alojado en. GitHub
**nota**  
Para la mayoría de los casos de uso, esta es la opción recomendada. En concreto, si necesita admitir más de 100 grupos de Active Directory, la solución de proveedor de identidades personalizado ofrece una alternativa escalable sin limitaciones de grupo. Esta solución se describe en la entrada del blog titulada [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).
+ [Uso de Amazon API Gateway para integrar su proveedor de identidad](authentication-api-gateway.md)—En este tema se describe cómo utilizar una AWS Lambda función para respaldar un método de Amazon API Gateway.

  Puede proporcionar una RESTful interfaz con un único método de Amazon API Gateway. Transfer Family utiliza este método para conectarse con su proveedor de identidad, que autentica y autoriza a los usuarios a acceder a Amazon S3 o Amazon EFS. Utilice esta opción si necesita una RESTful API para integrar su proveedor de identidad o si quiere utilizarla para aprovechar sus capacidades AWS WAF para bloquear geográficamente o limitar la velocidad de las solicitudes. Para obtener más información, consulte [Uso de Amazon API Gateway para integrar su proveedor de identidad](authentication-api-gateway.md).
+ [Enfoques de gestión dinámica de permisos](dynamic-permission-management.md)—En este tema se describen los enfoques para administrar los permisos de los usuarios de forma dinámica mediante políticas de sesión.

  Para autenticar a sus usuarios, puede utilizar su proveedor de identidades actual con AWS Transfer Family. El proveedor de identidad se integra mediante una función de AWS Lambda que autentica y autoriza a los usuarios a acceder a Amazon S3 o Amazon Elastic File System (Amazon EFS). Para obtener más información, consulte [Se utiliza AWS Lambda para integrar su proveedor de identidad](custom-lambda-idp.md). También puede acceder a los CloudWatch gráficos para obtener métricas como el número de archivos y bytes transferidos en la consola de AWS Transfer Family administración, lo que le ofrece un panel único para supervisar las transferencias de archivos mediante un panel centralizado.
+ Transfer Family ofrece una entrada de blog y un taller que lo guiarán a través de la creación de una solución de transferencia de archivos. Esta solución aprovecha los SFTP/FTPS puntos AWS Transfer Family de conexión gestionados y Amazon Cognito y DynamoDB para la gestión de usuarios. 

  La entrada del blog está disponible en [Uso de Amazon Cognito como proveedor de identidad con Amazon AWS Transfer Family S3](https://aws.amazon.com/blogs/storage/using-amazon-cognito-as-an-identity-provider-with-aws-transfer-family-and-amazon-s3/). Puede ver los detalles del taller [aquí.](https://catalog.workshops.aws/transfer-family-sftp/en-US) 

**nota**  
En el caso de los proveedores de identidad personalizados, el nombre de usuario debe tener un mínimo de 3 y un máximo de 100 caracteres. Puede utilizar los siguientes caracteres en el nombre de usuario: a—z, A-Z, 0—9, guión bajo '\$1', guión '-', punto '.' y signo '@'. El nombre de usuario no puede empezar con un guión '-', punto '.' o con el signo '@'.

Al implementar un proveedor de identidad personalizado, tenga en cuenta las siguientes prácticas recomendadas:
+ Implemente la solución en la misma región Cuenta de AWS y en la misma región que sus servidores Transfer Family.
+ Implemente el principio de privilegios mínimos al configurar las funciones y políticas de IAM.
+ Utilice funciones como la lista de direcciones IP permitidas y el registro estandarizado para mejorar la seguridad.
+ Pruebe minuciosamente su proveedor de identidad personalizado en un entorno que no sea de producción antes del despliegue.

**Topics**
+ [Solución de proveedor de identidad personalizada](custom-idp-toolkit.md)
+ [Se utiliza AWS Lambda para integrar su proveedor de identidad](custom-lambda-idp.md)
+ [Uso de Amazon API Gateway para integrar su proveedor de identidad](authentication-api-gateway.md)
+ [Uso de varios métodos de autenticación](custom-idp-mfa.md)
+ [IPv6 soporte para proveedores de identidad personalizados](custom-idp-ipv6.md)

# Solución de proveedor de identidad personalizada
<a name="custom-idp-toolkit"></a>

La solución de proveedor de identidad AWS Transfer Family personalizado es una solución modular de proveedor de identidad personalizado que resuelve muchos casos de uso comunes de autenticación y autorización que tienen las empresas al implementar el servicio. Esta solución proporciona una base reutilizable para implementar proveedores de identidad personalizados con una configuración de sesión granular por usuario y separa la lógica de autenticación y autorización, lo que ofrece una easy-to-maintain base flexible para varios casos de uso. 

Con la solución de proveedor de identidad AWS Transfer Family personalizado, puede abordar los casos de uso más comunes de autenticación y autorización empresarial. Esta solución modular ofrece:
+ Una base reutilizable para implementar proveedores de identidad personalizados 
+ Configuración granular de sesión por usuario 
+ Lógica de autenticación y autorización separadas 

## Detalles de implementación del kit de herramientas de identidad personalizado
<a name="idp-toolkit-implementation-details"></a>

La solución proporciona una base flexible y fácil de mantener para varios casos de uso. Para empezar, consulte el kit de herramientas en [https://github.com/aws-samples/toolkit-for-aws-transfer-family](https://github.com/aws-samples/toolkit-for-aws-transfer-family) y, a continuación, siga las instrucciones de implementación de la sección [Primeros](https://github.com/aws-samples/toolkit-for-aws-transfer-family/tree/main/solutions/custom-idp#getting-started) pasos.

![\[Diagrama de arquitectura del kit de herramientas del proveedor de identidad personalizado disponible en. GitHub\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/custom-idp-solution-high-level-architecture.png)


**nota**  
Si anteriormente ha utilizado plantillas y ejemplos de proveedores de identidad personalizados, considere la posibilidad de adoptar esta solución en su lugar. En el futuro, los módulos específicos del proveedor se estandarizarán en esta solución. El mantenimiento continuo y las mejoras en las funciones se aplicarán a esta solución.

Esta solución contiene patrones estándar para implementar un proveedor personalizado que tenga en cuenta detalles como el registro y dónde almacenar los metadatos adicionales de la sesión necesarios AWS Transfer Family, como el `HomeDirectoryDetails` parámetro. Esta solución proporciona una base reutilizable para implementar proveedores de identidad personalizados con una configuración de sesión granular por usuario y desvincula la lógica de autenticación del proveedor de identidades de la lógica reutilizable que crea una configuración que se devuelve a Transfer Family para completar la autenticación y establecer los ajustes de la sesión. 

[El código y los recursos de apoyo de esta solución están disponibles en https://github.com/aws-samples/ toolkit-for-aws-transfer -family.](https://github.com/aws-samples/toolkit-for-aws-transfer-family)

El kit de herramientas contiene las siguientes funciones:
+ Una [AWS Serverless Application Model](https://aws.amazon.com/serverless/sam)plantilla que proporciona los recursos necesarios. Si lo desea, implemente y configure Amazon API Gateway para incorporarlo AWS WAF, tal y como se describe en la entrada del blog [AWS Transfer Family Securing with AWS Web Application Firewall y Amazon API Gateway](https://aws.amazon.com/blogs/storage/securing-aws-transfer-family-with-aws-web-application-firewall-and-amazon-api-gateway/).
+ Un esquema de [Amazon DynamoDB](https://aws.amazon.com/dynamodb) para almacenar los metadatos de configuración sobre los proveedores de identidad, incluidos los ajustes de sesión de usuario, `HomeDirectoryDetails` como`Role`, y. `Policy`
+ Un enfoque modular que le permite añadir nuevos proveedores de identidad a la solución en el futuro, en forma de módulos.
+ Recuperación de atributos: si lo desea, recupere los atributos del rol de IAM y del perfil POSIX (UID y GID) de los proveedores de identidad compatibles, como AD, LDAP y Okta.
+ Soporte para varios proveedores de identidad conectados a un único servidor de Transfer Family y varios servidores de Transfer Family mediante la misma implementación de la solución.
+ Verificación integrada de las listas de direcciones IP permitidas, como las listas de direcciones IP permitidas, que se pueden configurar opcionalmente por usuario o por proveedor de identidad.
+ Registro detallado con nivel de registro configurable y soporte de rastreo para facilitar la resolución de problemas.

Antes de empezar a implementar la solución de proveedor de identidad personalizado, debe disponer de los siguientes recursos. AWS 
+ Una Amazon Virtual Private Cloud (VPC) con subredes privadas, con conectividad a Internet a través de una puerta de enlace NAT o un punto de enlace de puerta de enlace de DynamoDB.
+ Los permisos de IAM adecuados para realizar las siguientes tareas:
  + Implemente la `custom-idp.yaml` CloudFormation plantilla,
  + Crear AWS CodePipeline proyectos
  + Crea AWS CodeBuild proyectos
  + Cree funciones y políticas de IAM

**importante**  
Debe implementar la solución en el mismo lugar Región de AWS que contiene Cuenta de AWS los servidores Transfer Family de destino.

## Proveedores de identidades compatibles
<a name="custom-supported-idp"></a>

La siguiente lista contiene detalles de los proveedores de identidad compatibles con la solución de proveedor de identidad personalizado.


| Proveedor | Flujos de contraseñas | Flujos de claves públicas | Multifactor | Recuperación de atributos | Details | 
| --- | --- | --- | --- | --- | --- | 
| Active Directory y LDAP | Sí | Sí | No | Sí | La verificación del usuario se puede realizar como parte del flujo de autenticación de clave pública. | 
| Argon2 (hash local) | Sí | No | No | No | Los hashes de Argon2 se almacenan en el registro de usuario para los casos de uso de autenticación basada en contraseñas «locales». | 
| Amazon Cognito | Sí | No | Sí\$1 | No | Solo para la autenticación multifactorial basada en el tiempo y basada en una contraseña de un solo uso (TOTP). \$1No se admite el MFA basado en SMS. | 
| Ingresa ID (anteriormente Azure AD) | Sí | No | No | No |  | 
| Okta | Sí | Sí | Sí\$1 | Sí | Solo MFA basado en TOTP. | 
| Clave pública | No | Sí | No | No | Las claves públicas se almacenan en el registro de usuario de DynamoDB. | 
| Secrets Manager  | Sí | Sí | No | No |  | 

# Se utiliza AWS Lambda para integrar su proveedor de identidad
<a name="custom-lambda-idp"></a>

En este tema se describe cómo crear una AWS Lambda función que se conecte a su proveedor de identidades personalizado. Puede usar cualquier proveedor de identidad personalizado, como Okta, Secrets Manager o un almacén de datos personalizado que incluya lógica de autorización y autenticación. OneLogin

En la mayoría de los casos de uso, la forma recomendada de configurar un proveedor de identidades personalizado es utilizar el[Solución de proveedor de identidad personalizada](custom-idp-toolkit.md).

**nota**  
Antes de crear un servidor de Transfer Family que utilice Lambda como proveedor de identidades, debe crear la función. Para ver una función de Lambda de ejemplo, consulte [Ejemplo de función de Lambda](#lambda-auth-examples). O bien, puede implementar una CloudFormation pila que utilice uno de los[Plantillas de función de Lambda](#lambda-idp-templates). Además, asegúrese de que la función de Lambda utilice una política basada en recursos que confíe en Transfer Family. Para ver una política de ejemplo, consulte [Política basada en recursos de Lambda](#lambda-resource-policy).

1. Abra la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/).

1. Seleccione **Crear servidor** para abrir la página **Crear servidor**. En **Elegir un proveedor de identidad**, elija un **proveedor de identidad personalizado**, como se muestra en la siguiente captura de pantalla.  
![\[La sección de la consola Elija un proveedor de identidad con el Proveedor de identidad personalizado seleccionado. También tiene seleccionado el valor predeterminado, que permite a los usuarios autenticarse con su contraseña o clave.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/custom-lambda-console.png)
**nota**  
La selección de métodos de autenticación solo está disponible si habilita SFTP como uno de los protocolos del servidor de Transfer Family.

1. Asegúrese de seleccionar el valor predeterminado, **Usar AWS Lambda para conectar su proveedor de identidad**.

1. Para la **AWS Lambda función**, seleccione el nombre de su Función de Lambda.

1. Rellene las casillas restantes y, a continuación, seleccione **Crear servidor**. Para obtener más información sobre los pasos restantes para crear un servidor, consulte [Configuración de un punto final de servidor SFTP, FTPS o FTP](tf-server-endpoint.md).

## Política basada en recursos de Lambda
<a name="lambda-resource-policy"></a>

Debe tener una política que haga referencia al servidor Transfer Family y a Lambda ARNs. Por ejemplo, puede usar la siguiente política con la función de Lambda que se conecta a su proveedor de identidad. La política es un JSON de escape en forma de cadena.

****  

```
"Policy":
"{\"Version\":\"2012-10-17\",
\"Id\":\"default\",
\"Statement\":[
  {\"Sid\":\"AllowTransferInvocation\",
  \"Effect\":\"Allow\",
  \"Principal\":{\"Service\":\"transfer.amazonaws.com\"},
  \"Action\":\"lambda:InvokeFunction\",
  \"Resource\":\"arn:aws:lambda:region:123456789012:function:my-lambda-auth-function\",
  \"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:transfer:region:123456789012:server/server-id\"}}}
]}"
```

**nota**  
En el ejemplo de política anterior, sustituya cada una *user input placeholder* por su propia información.

## Estructura de mensaje de evento
<a name="event-message-structure"></a>

La estructura de los mensajes de eventos del servidor SFTP enviados a la función de Lambda del autorizador para un IDP personalizado es la siguiente.

```
{
    "username": "value",
    "password": "value",
    "protocol": "SFTP",
    "serverId": "s-abcd123456",
    "sourceIp": "192.168.0.100"
}
```

Siendo `username` y `password` los valores de las credenciales de inicio de sesión que se envían al servidor.

Por ejemplo, introduzca el siguiente comando para la conexión:

```
sftp bobusa@server_hostname
```

Se le pedirá que escriba su contraseña:

```
Enter password:
    mysecretpassword
```

Puede comprobarlo desde la función de Lambda al imprimir el evento pasado desde la función de Lambda. Debería parecerse a lo que sigue.

```
{
    "username": "bobusa",
    "password": "mysecretpassword",
    "protocol": "SFTP",
    "serverId": "s-abcd123456",
    "sourceIp": "192.168.0.100"
}
```

La estructura de eventos es similar para FTP y FTPS: la única diferencia es que esos valores se utilizan para el parámetro `protocol` y no para SFTP.

## funciones de Lambda para autenticación
<a name="authentication-lambda-examples"></a>

Para implementar diferentes estrategias de autenticación, edite la función de Lambda. Para ayudarte a satisfacer las necesidades de tu aplicación, puedes implementar una CloudFormation pila. Para obtener más información acerca de Lambda, consulte la [Guía para desarrolladores de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) o [Crear funciones de Lambda con Node.js](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html).

**Topics**
+ [Valores de Lambda válidos](#lambda-valid-values)
+ [Ejemplo de función de Lambda](#lambda-auth-examples)
+ [Prueba de su configuración](#authentication-test-configuration)
+ [Plantillas de función de Lambda](#lambda-idp-templates)

### Valores de Lambda válidos
<a name="lambda-valid-values"></a>

En la siguiente tabla se describen los detalles de los valores que Transfer Family acepta para las funciones de Lambda que se utilizan para los proveedores de identidades personalizados.


|  Valor  |  Description (Descripción)  |  Obligatorio  | 
| --- | --- | --- | 
|  `Role`  |  Especifica el nombre de recurso de Amazon (ARN) del rol de IAM que controla el acceso de sus usuarios a su bucket de Amazon S3 o al sistema de archivos EFS. Las políticas asociadas a este rol determinarán el nivel de acceso que quiere ofrecer a los usuarios cuando se transfieran archivos dentro y fuera de su bucket de Amazon S3 o del sistema de archivos de Amazon EFS. El rol de IAM también debe contener una relación de confianza que permita que el servidor pueda obtener acceso a los recursos cuando atienda las solicitudes de transferencia de los usuarios. Para obtener más información sobre cómo establecer una relación de confianza, consulte [Para establecer una relación de confianza](requirements-roles.md#establish-trust-transfer).  |  Obligatorio  | 
|  `PosixProfile`  |  La identidad POSIX completa, que incluye el ID de usuario (`Uid`), el ID de grupo (`Gid`) y cualquier grupo secundario IDs (`SecondaryGids`), que controla el acceso de los usuarios a los sistemas de archivos de Amazon EFS. Los permisos POSIX establecidos en los archivos y directorios del sistema de archivos determinan el nivel de acceso que obtienen los usuarios al transferir archivos dentro y fuera de los sistemas de archivos de Amazon EFS.  |  Se requiere para el almacenamiento de respaldo de Amazon EFS  | 
|  `PublicKeys`  |  Una lista de valores de clave pública de SSH que son válidos para este usuario. Una lista vacía implica que no se trata de un inicio de sesión válido. No debe devolverse durante la autenticación de la contraseña.  |  Opcional  | 
|  `Policy`  |  Una política de sesión para el usuario, de modo que pueda usar el mismo rol de IAM en varios usuarios. Esta política reduce el ámbito de acceso del usuario a partes de su bucket de Amazon S3. Para obtener más información sobre el uso de políticas de sesión con proveedores de identidad personalizados, consulte los ejemplos de políticas de sesión de este tema.  |  Opcional  | 
|  `HomeDirectoryType`  |  El tipo de directorio de destino (carpeta) que quiere utilizar como directorio de inicio de los usuarios cuando inicien sesión en el servidor. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/custom-lambda-idp.html)  |  Opcional  | 
|  `HomeDirectoryDetails`  |  Los mapeos de directorio lógico que especifican qué rutas de acceso y claves de Amazon S3 deben ser visibles para el usuario y cómo desea hacerlas visibles. Deberá especificar el par `Entry` y `Target`, donde `Entry` muestra cómo se hace visible la ruta y `Target` es la ruta de Amazon S3 o de Amazon EFS real.  |  Obligatorio si `HomeDirectoryType` tiene un valor de `LOGICAL`  | 
|  `HomeDirectory`  |  Directorio de destino de un usuario cuando inicia sesión en el servidor a través del cliente. El formato depende del backend de almacenamiento: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/custom-lambda-idp.html)  El nombre del bucket o el ID del sistema de archivos Amazon EFS deben incluirse en la ruta. Si se omite esta información, se producirán errores de tipo «Archivo no encontrado» durante las transferencias de archivos.   |  Opcional  | 

**nota**  
`HomeDirectoryDetails` es una representación de cadenas de un mapa de JSON. Esto contrasta con `PosixProfile`, que es un objeto de mapa JSON real, y `PublicKeys`, que es una matriz JSON de cadenas. Consulte los ejemplos de código para ver los detalles específicos del idioma.

**HomeDirectory Requisitos de formato**  
Cuando utilice el `HomeDirectory` parámetro, asegúrese de incluir el formato de ruta completo:  
**Para el almacenamiento en Amazon S3:** incluya siempre el nombre del bucket en el formato `/bucket-name/path`
**Para el almacenamiento en Amazon EFS:** incluya siempre el ID del sistema de archivos en el formato `/fs-12345/path`
Una causa común de los errores de «Archivo no encontrado» es omitir el nombre del bucket o el ID del sistema de archivos EFS en la `HomeDirectory` ruta. Si `HomeDirectory` se establece solo `/` sin el identificador de almacenamiento, la autenticación se realizará correctamente, pero las operaciones con los archivos fallarán.

### Ejemplo de función de Lambda
<a name="lambda-auth-examples"></a>

En esta sección se presentan algunos ejemplos de funciones de Lambda, tanto en Nodejs como en Python.

**nota**  
En estos ejemplos, el usuario, el rol, el perfil POSIX, la contraseña y los detalles del directorio de inicio son todos ejemplos y deben reemplazarse por sus valores reales.

------
#### [ Logical home directory, NodeJS ]

La siguiente función de ejemplo de Nodejs proporciona los detalles de un usuario que tiene un [directorio de inicio lógico](https://docs.aws.amazon.com/transfer/latest/userguide/logical-dir-mappings.html). 

```
// GetUserConfig Lambda

exports.handler = (event, context, callback) => {
  console.log("Username:", event.username, "ServerId: ", event.serverId);

  var response;
  // Check if the username presented for authentication is correct. This doesn't check the value of the server ID, only that it is provided.
  if (event.serverId !== "" && event.username == 'example-user') {
    var homeDirectoryDetails = [
      {
        Entry: "/",
        Target: "/fs-faa1a123"
      }
    ];
    response = {
      Role: 'arn:aws:iam::123456789012:role/transfer-access-role', // The user is authenticated if and only if the Role field is not blank
      PosixProfile: {"Gid": 65534, "Uid": 65534}, // Required for EFS access, but not needed for S3
      HomeDirectoryDetails: JSON.stringify(homeDirectoryDetails),
      HomeDirectoryType: "LOGICAL",
    };

    // Check if password is provided
    if (!event.password) {
      // If no password provided, return the user's SSH public key
      response['PublicKeys'] = [ "ssh-rsa abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789" ];
    // Check if password is correct
    } else if (event.password !== 'Password1234') {
      // Return HTTP status 200 but with no role in the response to indicate authentication failure
      response = {};
    }
  } else {
    // Return HTTP status 200 but with no role in the response to indicate authentication failure
    response = {};
  }
  callback(null, response);
};
```

------
#### [ Path-based home directory, NodeJS ]

La siguiente función de ejemplo de Nodejs proporciona los detalles de un usuario que tiene un directorio de inicio basado en rutas. 

```
// GetUserConfig Lambda

exports.handler = (event, context, callback) => {
  console.log("Username:", event.username, "ServerId: ", event.serverId);

  var response;
  // Check if the username presented for authentication is correct. This doesn't check the value of the server ID, only that it is provided.
  // There is also event.protocol (one of "FTP", "FTPS", "SFTP") and event.sourceIp (e.g., "127.0.0.1") to further restrict logins.
  if (event.serverId !== "" && event.username == 'example-user') {
    response = {
      Role: 'arn:aws:iam::123456789012:role/transfer-access-role', // The user is authenticated if and only if the Role field is not blank
      Policy: '', // Optional, JSON stringified blob to further restrict this user's permissions
      // HomeDirectory format depends on your storage backend:
      // For S3: '/bucket-name/user-home-directory' (e.g., '/my-transfer-bucket/users/john')
      // For EFS: '/fs-12345/user-home-directory' (e.g., '/fs-faa1a123/users/john')
      HomeDirectory: '/my-transfer-bucket/users/example-user' // S3 example - replace with your bucket name
      // HomeDirectory: '/fs-faa1a123/users/example-user' // EFS example - uncomment for EFS
    };
    
    // Check if password is provided
    if (!event.password) {
      // If no password provided, return the user's SSH public key
     response['PublicKeys'] = [ "ssh-rsa abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789" ];
    // Check if password is correct
    } else if (event.password !== 'Password1234') {
      // Return HTTP status 200 but with no role in the response to indicate authentication failure
      response = {};
    } 
  } else {
    // Return HTTP status 200 but with no role in the response to indicate authentication failure
    response = {};
  }
  callback(null, response);
};
```

------
#### [ Logical home directory, Python ]

La siguiente función de ejemplo de Python proporciona los detalles de un usuario que tiene un [directorio de inicio lógico](https://docs.aws.amazon.com/transfer/latest/userguide/logical-dir-mappings.html). 

```
# GetUserConfig Python Lambda with LOGICAL HomeDirectoryDetails
import json

def lambda_handler(event, context):
  print("Username: {}, ServerId: {}".format(event['username'], event['serverId']))

  response = {}

  # Check if the username presented for authentication is correct. This doesn't check the value of the server ID, only that it is provided.
  if event['serverId'] != '' and event['username'] == 'example-user':
    homeDirectoryDetails = [
      {
        'Entry': '/',
        'Target': '/fs-faa1a123'
      }
    ]
    response = {
      'Role': 'arn:aws:iam::123456789012:role/transfer-access-role', # The user will be authenticated if and only if the Role field is not blank
      'PosixProfile': {"Gid": 65534, "Uid": 65534}, # Required for EFS access, but not needed for S3
      'HomeDirectoryDetails': json.dumps(homeDirectoryDetails),
      'HomeDirectoryType': "LOGICAL"
    }

    # Check if password is provided
    if event.get('password', '') == '':
      # If no password provided, return the user's SSH public key
     response['PublicKeys'] = [ "ssh-rsa abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789" ]
    # Check if password is correct
    elif event['password'] != 'Password1234':
      # Return HTTP status 200 but with no role in the response to indicate authentication failure
      response = {}
  else:
    # Return HTTP status 200 but with no role in the response to indicate authentication failure
    response = {}

  return response
```

------
#### [ Path-based home directory, Python ]

La siguiente función de ejemplo de Python proporciona los detalles de un usuario que tiene un directorio de inicio basado en rutas. 

```
# GetUserConfig Python Lambda with PATH HomeDirectory

def lambda_handler(event, context):
  print("Username: {}, ServerId: {}".format(event['username'], event['serverId']))

  response = {}

  # Check if the username presented for authentication is correct. This doesn't check the value of the server ID, only that it is provided.
  # There is also event.protocol (one of "FTP", "FTPS", "SFTP") and event.sourceIp (e.g., "127.0.0.1") to further restrict logins.
  if event['serverId'] != '' and event['username'] == 'example-user':
    response = {
      'Role': 'arn:aws:iam::123456789012:role/transfer-access-role', # The user will be authenticated if and only if the Role field is not blank
      'Policy': '', #  Optional, JSON stringified blob to further restrict this user's permissions
      # HomeDirectory format depends on your storage backend:
      # For S3: '/bucket-name/user-home-directory' (e.g., '/my-transfer-bucket/users/john')
      # For EFS: '/fs-12345/user-home-directory' (e.g., '/fs-faa1a123/users/john')
      'HomeDirectory': '/my-transfer-bucket/users/example-user', # S3 example - replace with your bucket name
      # 'HomeDirectory': '/fs-faa1a123/users/example-user', # EFS example - uncomment for EFS
      'HomeDirectoryType': "PATH" # Not strictly required, defaults to PATH
    }
    
    # Check if password is provided
    if event.get('password', '') == '':
      # If no password provided, return the user's SSH public key
     response['PublicKeys'] = [ "ssh-rsa abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789" ]
    # Check if password is correct
    elif event['password'] != 'Password1234':
      # Return HTTP status 200 but with no role in the response to indicate authentication failure
      response = {}
  else:
    # Return HTTP status 200 but with no role in the response to indicate authentication failure
    response = {}

  return response
```

------

### Prueba de su configuración
<a name="authentication-test-configuration"></a>

Tras crear el proveedor de identidad personalizado, debe probar la configuración.

------
#### [ Console ]

**Para probar la configuración mediante la AWS Transfer Family consola**

1. Abra la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/). 

1. En la página **Servidores**, elija su nuevo servidor, elija **Acciones** y, a continuación, elija **Probar**.

1. Introduzca el texto del **nombre de usuario** y la **contraseña** que estableció al implementar la CloudFormation pila. Si ha mantenido las opciones predeterminadas, el nombre de usuario es `myuser` y la contraseña es `MySuperSecretPassword`.

1. Elija el **protocolo del servidor** e introduzca la dirección IP de la **IP de origen**, si la configuró al implementar la CloudFormation pila.

------
#### [ CLI ]

**Para probar la configuración mediante la AWS CLI**

1. Ejecute el comando [test-identity-provider](https://docs.aws.amazon.com/cli/latest/reference/transfer/test-identity-provider.html). Sustituya cada `user input placeholder` por su propia información, tal y como se describe en los pasos siguientes.

   ```
   aws transfer test-identity-provider --server-id s-1234abcd5678efgh --user-name myuser --user-password MySuperSecretPassword --server-protocol FTP --source-ip 127.0.0.1
   ```

1. Introduzca el identificador del servidor.

1. Introduzca el nombre de usuario y la contraseña que estableció al implementar la CloudFormation pila. Si ha mantenido las opciones predeterminadas, el nombre de usuario es `myuser` y la contraseña es `MySuperSecretPassword`.

1. Introduzca el protocolo del servidor y la dirección IP de origen, si los configuró al implementar la CloudFormation pila.

------

Si la autenticación del usuario se realiza correctamente, la prueba devuelve una respuesta HTTP de `StatusCode: 200`, una cadena vacía de `Message: ""` (que, de lo contrario, contendría el motivo del error) y un campo `Response`.

**nota**  
 En el ejemplo de respuesta que aparece a continuación, el campo `Response` es un objeto JSON que se ha “encadenado” (convertido en una cadena JSON plana que se puede utilizar dentro de un programa) y contiene los detalles de los roles y permisos del usuario.

```
{
    "Response":"{\"Policy\":\"{\\\"Version\\\":\\\"2012-10-17\\\",\\\"Statement\\\":[{\\\"Sid\\\":\\\"ReadAndListAllBuckets\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Action\\\":[\\\"s3:ListAllMybuckets\\\",\\\"s3:GetBucketLocation\\\",\\\"s3:ListBucket\\\",\\\"s3:GetObjectVersion\\\",\\\"s3:GetObjectVersion\\\"],\\\"Resource\\\":\\\"*\\\"}]}\",\"Role\":\"arn:aws:iam::000000000000:role/MyUserS3AccessRole\",\"HomeDirectory\":\"/\"}",
    "StatusCode": 200,
    "Message": ""
}
```

### Plantillas de función de Lambda
<a name="lambda-idp-templates"></a>

Puede implementar una CloudFormation pila que utilice una función Lambda para la autenticación. Proporcionamos varias plantillas que autentican y autorizan a sus usuarios mediante credenciales de inicio de sesión. Puede modificar estas plantillas o AWS Lambda códigos para personalizar aún más el acceso de los usuarios.

**nota**  
Puede crear un AWS Transfer Family servidor compatible con FIPS CloudFormation especificando una política de seguridad con FIPS en la plantilla. Las políticas de seguridad disponibles se describen en [Políticas de seguridad para servidores AWS Transfer Family](security-policies.md) 

**Para crear una pila para utilizarla en la autenticación CloudFormation**

1. Abre la CloudFormation consola en [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Siga las instrucciones para implementar una CloudFormation pila a partir de una plantilla existente en [Seleccionar una plantilla de pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-template.html) en la Guía del *AWS CloudFormation usuario*.

1. Utilice una de las siguientes plantillas para crear una función de Lambda que se utilizará para la autenticación en Transfer Family. 
   + [Plantilla de pila clásica (Amazon Cognito)](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-lambda-cognito-s3.template.yml)

     Una plantilla básica para crear una AWS Lambda para usarla como proveedor de identidad personalizado en AWS Transfer Family. Se autentica con Amazon Cognito para la autenticación basada en contraseñas y las claves públicas se devuelven desde un bucket de Amazon S3 si se utiliza la autenticación basada en claves públicas. Tras la implementación, puede modificar el código de la función de Lambda para hacer algo diferente.
   + [AWS Secrets Manager plantilla de pila](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-secrets-manager-lambda.template.yml)

     Una plantilla básica que se utiliza AWS Lambda con un AWS Transfer Family servidor para integrar Secrets Manager como proveedor de identidad. Se autentica con una entrada AWS Secrets Manager de ese formato`aws/transfer/server-id/username`. Además, el secreto debe contener los pares clave-valor de todas las propiedades de usuario devueltas a Transfer Family. Tras la implementación, puede modificar el código de la función de Lambda para hacer algo diferente.
   + Plantilla de [pila Okta: plantilla](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-okta-lambda.template.yml) básica que se utiliza AWS Lambda con un AWS Transfer Family servidor para integrar Okta como proveedor de identidad personalizado.
   + [Plantilla apilada Okta-MFA: plantilla](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-okta-mfa-lambda.template.yml) básica que se utiliza AWS Lambda con un AWS Transfer Family servidor para integrar Okta, con autenticación multifactor, como proveedor de identidad personalizado.
   + [Plantilla de Azure Active Directory](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-lambda-azure-ad.template.yml): los detalles de esta pila se describen en la entrada del blog Cómo [autenticarse AWS Transfer Family con](https://aws.amazon.com/blogs/storage/authenticating-to-aws-transfer-family-with-azure-active-directory-and-aws-lambda/) Azure Active Directory y. AWS Lambda

   Una vez implementada la pila, puede ver sus detalles en la pestaña **Salidas** de la CloudFormation consola.

   Implementar una de estas pilas es la forma más sencilla de integrar un proveedor de identidades personalizado en el flujo de trabajo de Transfer Family.

# Uso de Amazon API Gateway para integrar su proveedor de identidad
<a name="authentication-api-gateway"></a>

En este tema se describe cómo utilizar una AWS Lambda función para respaldar un método de API Gateway. Utilice esta opción si necesita una RESTful API para integrar su proveedor de identidad o si quiere utilizarla para aprovechar sus capacidades AWS WAF para bloquear geográficamente o limitar la velocidad de las solicitudes.

En la mayoría de los casos de uso, la forma recomendada de configurar un proveedor de identidades personalizado es utilizar el. [Solución de proveedor de identidad personalizada](custom-idp-toolkit.md)

**Limitaciones si utiliza una API Gateway para integrar su proveedor de identidad**
+ Esta configuración no admite dominios personalizados.
+ Esta configuración no admite una URL de API Gateway privada.

Si necesita alguna de estas opciones, puede usar Lambda como proveedor de identidades, sin API Gateway. Para obtener más información, consulte [Se utiliza AWS Lambda para integrar su proveedor de identidad](custom-lambda-idp.md).

## Autenticación mediante un método de API Gateway
<a name="authentication-custom-ip"></a>

Puede crear un método API Gateway para usarlo como proveedor de identidad para Transfer Family. Este enfoque le proporciona una forma altamente segura de crear y proporcionar APIs. Con API Gateway, puede crear un punto final HTTPS para que todas las operaciones de API entrantes se transmitan con mayor seguridad. Para obtener más información sobre el servicio API Gateway, consulte la [Guía para desarrolladores de API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html).

API Gateway ofrece un método de autorización denominado`AWS_IAM`, que le proporciona la misma autenticación basada en AWS Identity and Access Management (IAM) que se AWS utiliza internamente. Si habilita la autenticación con `AWS_IAM`, solo las personas que llaman con permisos explícitos para llamar a una API pueden acceder al método API Gateway de esa API.

Para usar su método API Gateway como proveedor de identidad personalizado para Transfer Family, habilita IAM para su método API Gateway. Como parte de este proceso, usted proporciona un rol de IAM con permisos para que Transfer Family utilice su puerta de enlace.

**nota**  
Para mejorar la seguridad, puede configurar un firewall de aplicaciones web. AWS WAF es un firewall de aplicaciones web que permite monitorizar las solicitudes HTTP y HTTPS que se reenvían a una Amazon API Gateway. Para obtener más información, consulte [Agregue un cortafuegos de aplicaciones web](web-application-firewall.md).

**No habilite el almacenamiento en caché de API Gateway**  
No habilites el almacenamiento en caché para tu método API Gateway cuando lo utilices como proveedor de identidad personalizado para Transfer Family. El almacenamiento en caché es inapropiado e inválido para las solicitudes de autenticación porque:  
Cada solicitud de autenticación es única y requiere una respuesta en tiempo real, no una respuesta en caché
El almacenamiento en caché no ofrece ningún beneficio, ya que Transfer Family nunca envía solicitudes duplicadas o repetidas a la API Gateway.
Si se habilita el almacenamiento en caché, la API Gateway responderá con datos no coincidentes, lo que provocará que las respuestas a las solicitudes de autenticación no sean válidas.

**Uso del método API Gateway para la autenticación personalizada con Transfer Family**

1. Crea una CloudFormation pila. Para ello:
**nota**  
Las plantillas de pila se han actualizado para usar contraseñas BASE64 codificadas: para obtener más información, consulte[Mejoras en las plantillas CloudFormation](#base64-templates).

   1. Abre la CloudFormation consola en [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

   1. Siga las instrucciones para implementar una CloudFormation pila a partir de una plantilla existente en [Seleccionar una plantilla de pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-template.html) en la Guía del *AWS CloudFormation usuario*.

   1. Use una de las siguientes plantillas básicas para crear un método API Gateway respaldado por la API de AWS Lambda para usarlo como proveedor de identidad personalizado en Transfer Family.
      + [Plantilla de pila básica](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-apig.template.yml)

        De forma predeterminada, el método API Gateway se utiliza como proveedor de identidad personalizado para autenticar a un único usuario en un único servidor mediante una clave o contraseña SSH (Secure Shell) codificada de forma rígida. Tras la implementación, puede modificar el código de la función de Lambda para hacer algo diferente.
      + [AWS Secrets Manager plantilla de pila](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-secrets-manager-apig.template.yml)

        De forma predeterminada, el método API Gateway se autentica con una entrada de este formato de `aws/transfer/server-id/username` en Secrets Manager. Además, el secreto debe contener los pares clave-valor de todas las propiedades de usuario devueltas a Transfer Family. Tras la implementación, puede modificar el código de la función de Lambda para hacer algo diferente. Para obtener más información, consulte la entrada del blog [Habilitar la autenticación por contraseña para su AWS Transfer Family uso AWS Secrets Manager](https://aws.amazon.com/blogs/storage/enable-password-authentication-for-aws-transfer-family-using-aws-secrets-manager-updated/).
      + [Plantilla de pila Okta](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-okta-apig.template.yml)

        Su método API Gateway se integra con Okta como proveedor de identidad personalizado en Transfer Family. Para obtener más información, consulte la publicación de blog sobre el [Uso de Okta como proveedor de identidad con AWS Transfer Family](https://aws.amazon.com/blogs/storage/using-okta-as-an-identity-provider-with-aws-transfer-for-sftp/).

   Implementar una de estas pilas es la forma más sencilla de integrar un proveedor de identidades personalizado en el flujo de trabajo de Transfer Family. Cada pila utiliza la función de Lambda para admitir su método de API basado en API Gateway. A continuación, puede usar su método de API como proveedor de identidad personalizado en Transfer Family. De forma predeterminada, la función de Lambda autentica a un único usuario llamado `myuser` con una contraseña de `MySuperSecretPassword`. Tras la implementación, puede editar estas credenciales o actualizar el código de la función de Lambda para hacer algo diferente.
**importante**  
Le recomendamos que edite las credenciales de usuario y contraseña predeterminadas.

   Una vez desplegada la pila, puede ver sus detalles en la pestaña **Salidas** de la CloudFormation consola. Estos detalles incluyen el nombre de recurso de Amazon (ARN) de la pila, el ARN del rol de IAM que creó la pila y la URL de su nueva puerta de enlace.
**nota**  
Si utiliza la opción de proveedor de identidad personalizado para habilitar la autenticación basada en contraseñas para sus usuarios y habilita el registro de solicitudes y respuestas que proporciona API Gateway, API Gateway registra las contraseñas de sus usuarios en sus Amazon Logs. CloudWatch No recomendamos utilizar este modo de inicio en entornos de producción. Para obtener más información, consulte [Configurar el registro de CloudWatch API en API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html) en la *Guía para desarrolladores de API Gateway*.

1. Compruebe la configuración del método API Gateway para su servidor. Para ello:

   1. Abra la consola de API Gateway en [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/). 

   1. Elija la **API de plantilla básica Transfer Custom Identity Provider** que generó la CloudFormation plantilla. Puede que tengas que seleccionar tu región para ver las pasarelas.

   1. En el panel **Recursos**, selecciona **GET**. La siguiente captura de pantalla muestra la configuración correcta del método.  
![\[Detalles de la configuración de la API, que muestran los parámetros de configuración del método para las rutas de solicitud y para la cadena de consulta URL.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/apig-config-method-fields.png)

   En este punto, su API Gateway está lista para ser implementada.

1. Para **Acciones**, elija **Implementar API**. Para la **Etapa de implementación**, elija **prod** y, a continuación, elija **Implementar**.

   Una vez que el método API Gateway se haya implementado correctamente, consulta su rendimiento en **Stages** > **Stage details**, como se muestra en la siguiente captura de pantalla.
**nota**  
Copie la dirección **URL de invocación** que aparece en la parte superior de la pantalla. Puede que lo necesites para el siguiente paso.  
![\[Detalles del escenario con la URL de invocación resaltada.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/apig-config-method-invoke.png)

1. Abra la AWS Transfer Family consola en. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)

1. Se debería haber creado una Transfer Family para ti cuando creaste la pila. Si no es así, configure el servidor siguiendo estos pasos.

   1. Seleccione **Crear servidor** para abrir la página **Crear servidor**. En **Elija un proveedor de identidad**, seleccione **Personalizado** y, a continuación, seleccione **Usar Amazon API Gateway para conectarse con su proveedor de identidad**, como se muestra en la siguiente captura de pantalla.  
![\[La pantalla del proveedor de identidad con el proveedor de identidad personalizado seleccionado y la API Gateway elegida para conectarse a su proveedor de identidad.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/create-server-choose-idp-custom.png)

   1. En el cuadro de texto **Proporcionar una URL de Amazon API Gateway**, pegue la dirección **URL de invocación** del punto de conexión de API Gateway que creó en el paso 3 de este procedimiento.

   1. En **Función**, elige la función de IAM que creó la CloudFormation plantilla. Este rol permite a Transfer Family invocar su método de puerta de enlace de API.

      El rol de invocación contiene el nombre de la CloudFormation pila que seleccionó para la pila que creó en el paso 1. Tiene el formato siguiente: `CloudFormation-stack-name-TransferIdentityProviderRole-ABC123DEF456GHI`.

   1. Rellene las casillas restantes y, a continuación, seleccione **Crear servidor**. Para obtener más información sobre los pasos restantes para crear un servidor, consulte [Configuración de un punto final de servidor SFTP, FTPS o FTP](tf-server-endpoint.md).

## Implementación de su método de API Gateway
<a name="authentication-api-method"></a>

Para crear un proveedor de identidades personalizado para Transfer Family, el método API Gateway debe implementar un único método que tenga una ruta de recursos de `/servers/serverId/users/username/config`. Los `username` valores `serverId` y provienen de la ruta del RESTful recurso. Además, añada `sourceIp` y `protocol` como **Parámetros de cadena de consulta de URL** en la **Solicitud de método**, como se muestra en la imagen siguiente.

![\[La pantalla de recursos de la API Gateway que muestra los detalles del GET método.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/apig-config-method-request.png)


**nota**  
El nombre de usuario debe tener un mínimo de 3 y un máximo de 100 caracteres. Puede utilizar los siguientes caracteres en el nombre de usuario: a—z, A-Z, 0—9, subrayado '\$1', guión '-', punto '.' y signo '@'. El nombre de usuario no puede empezar con un guión '-', punto '.' o con el signo '@'.

Si Transfer Family intenta autenticar una contraseña en nombre de un usuario, el servicio proporciona un campo de encabezado `Password:`. En ausencia de un encabezado de `Password:`, Transfer Family intenta la autenticación con clave pública para autenticar al usuario.

Si utiliza un proveedor de identidad para autenticar y autorizar a los usuarios finales, además de validar sus credenciales, puede permitir o denegar las solicitudes de acceso en función de las direcciones IP de los clientes utilizados por los usuarios finales. Puede usar esta característica para asegurarse de que solo se pueda acceder a los datos almacenados en sus buckets de S3 o en su sistema de archivos Amazon EFS a través de los protocolos compatibles desde las direcciones IP que haya especificado como confiables. Para habilitar esta característica, debe incluir `sourceIp` en la cadena de consulta.

Si tiene varios protocolos habilitados para su servidor y desea proporcionar acceso con el mismo nombre de usuario a través de varios protocolos, puede hacerlo siempre que las credenciales específicas de cada protocolo estén configuradas en su proveedor de identidad. Para habilitar esta función, debe incluir el `protocol` valor en la ruta del recurso. RESTful 

El método API Gateway siempre debe devolver el código de estado HTTP `200`. Cualquier otro código de estado HTTP significa que se ha producido un error en el acceso a la API.

**Ejemplo de respuesta de Amazon S3**  
El cuerpo de la respuesta de ejemplo es un documento JSON del siguiente formato para Amazon S3.

```
{
 "Role": "IAM role with configured S3 permissions",
 "PublicKeys": [
     "ssh-rsa public-key1",
     "ssh-rsa public-key2"
  ],
 "Policy": "STS Assume role session policy",
 "HomeDirectory": "/amzn-s3-demo-bucket/path/to/home/directory"
}
```

**nota**  
 La política es un JSON de escape en forma de cadena. Por ejemplo:   

****  

```
"Policy":
"{
  \"Version\": \"2012-10-17\",
  \"Statement\":
     [
     {\"Condition\":
        {\"StringLike\":
            {\"s3:prefix\":
               [\"user/*\", \"user/\"]}},
     \"Resource\": \"arn:aws:s3:::amzn-s3-demo-bucket\",
     \"Action\": \"s3:ListBucket\",
     \"Effect\": \"Allow\",
     \"Sid\": \"ListHomeDir\"},
     {\"Resource\": \"arn:aws:s3:::*\",
        \"Action\": [\"s3:PutObject\",
        \"s3:GetObject\",
        \"s3:DeleteObjectVersion\",
        \"s3:DeleteObject\",
        \"s3:GetObjectVersion\",
        \"s3:GetObjectACL\",
        \"s3:PutObjectACL\"],
     \"Effect\": \"Allow\",
     \"Sid\": \"HomeDirObjectAccess\"}]
}"
```

El siguiente ejemplo de respuesta muestra que un usuario tiene un tipo de directorio de inicio lógico.

```
{
   "Role": "arn:aws:iam::123456789012:role/transfer-access-role-s3",
   "HomeDirectoryType":"LOGICAL",
   "HomeDirectoryDetails":"[{\"Entry\":\"/\",\"Target\":\"/amzn-s3-demo-bucket1\"}]",
   "PublicKeys":[""]
}
```

**Ejemplo de respuesta de Amazon EFS**  
El cuerpo de la respuesta de ejemplo es un documento JSON del siguiente formato para Amazon EFS.

```
{
 "Role": "IAM role with configured EFS permissions",
 "PublicKeys": [
     "ssh-rsa public-key1",
     "ssh-rsa public-key2"
  ],
 "PosixProfile": {
   "Uid": "POSIX user ID",
   "Gid": "POSIX group ID",
   "SecondaryGids": [Optional list of secondary Group IDs],
 },
 "HomeDirectory": "/fs-id/path/to/home/directory"
}
```

El campo `Role` indica que la autenticación ha tenido éxito. Al realizar la autenticación con contraseña (cuando se proporciona un encabezado de `Password:`), no es necesario que proporcione las claves públicas de SSH. Si un usuario no se puede autenticar, por ejemplo, si la contraseña es incorrecta, su método debería devolver una respuesta de `Role` sin configurar. Un ejemplo de esta respuesta es un objeto JSON vacío.

 El siguiente ejemplo de respuesta muestra un usuario que tiene un tipo de directorio de inicio lógico. 

```
{
    "Role": "arn:aws:iam::123456789012:role/transfer-access-role-efs",
    "HomeDirectoryType": "LOGICAL",
    "HomeDirectoryDetails":"[{\"Entry\":\"/\",\"Target\":\"/faa1a123\"}]",
    "PublicKeys":[""],
    "PosixProfile":{"Uid":65534,"Gid":65534}
}
```

Puede incluir políticas de usuario en la función de Lambda en formato JSON. Para obtener más información acerca de la configuración de usuario en Transfer Family, consulte [Administrar los controles de acceso](users-policies.md).

## Función de Lambda por defecto
<a name="authentication-lambda-examples-default"></a>

Para implementar diferentes estrategias de autenticación, edite la función de Lambda que utiliza su puerta de enlace. Para ayudarle a satisfacer las necesidades de su aplicación, puede utilizar las siguientes funciones de Lambda de ejemplo en Node.js. Para obtener más información acerca de Lambda, consulte la [Guía para desarrolladores de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) o [Crear funciones de Lambda con Node.js](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html).

El siguiente ejemplo de función de Lambda toma el nombre de usuario, la contraseña (si está realizando la autenticación con contraseña), el identificador del servidor, el protocolo y la dirección IP del cliente. Puede usar una combinación de estas entradas para buscar su proveedor de identidad y determinar si se debe aceptar el inicio de sesión.

**nota**  
Si tiene varios protocolos habilitados para su servidor y desea proporcionar acceso con el mismo nombre de usuario a través de varios protocolos, puede hacerlo siempre que las credenciales específicas del protocolo se hayan configurado en su proveedor de identidad.  
Para el Protocolo de File Transfer (FTP), se recomienda mantener credenciales separadas del Protocolo de File Transfer (SFTP) de Secure Shell (SSH) y el Protocolo de File Transfer a través de SSL (FTPS). Recomendamos mantener credenciales separadas para el FTP porque, a diferencia del SFTP y el FTPS, el FTP transmite las credenciales en texto no cifrado. Al aislar las credenciales de FTP de las de SFTP o FTPS, si las credenciales de FTP se comparten o están expuestas, las cargas de trabajo que utilizan SFTP o FTPS permanecen seguras.

Este rol de ejemplo devuelve el rol y los detalles del directorio de inicio lógico, junto con las claves públicas (si realiza la autenticación de clave pública).

Al crear usuarios administrados por el servicio, se establece su directorio de inicio, ya sea lógico o físico. Del mismo modo, necesitamos que los resultados de la función de Lambda transmitan la estructura de directorios física o lógica deseada por el usuario. Los parámetros que defina dependen del valor del campo de [https://docs.aws.amazon.com//transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectoryType](https://docs.aws.amazon.com//transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectoryType).
+ `HomeDirectoryType` establecido como `PATH`: el campo `HomeDirectory` debe ser un prefijo absoluto de bucket de Amazon S3 o una ruta absoluta de Amazon EFS visible para los usuarios.
+ `HomeDirectoryType` establecido como `LOGICAL`: *no* defina un campo `HomeDirectory`. En su lugar, configuramos un `HomeDirectoryDetails` campo que proporciona las Entry/Target asignaciones deseadas, similares a los valores descritos en el [https://docs.aws.amazon.com//transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectoryMappings](https://docs.aws.amazon.com//transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectoryMappings)parámetro para los usuarios gestionados por el servicio.

Las funciones de ejemplo se muestran en [Ejemplo de función de Lambda](custom-lambda-idp.md#lambda-auth-examples).

## Función Lambda para usar con AWS Secrets Manager
<a name="authentication-lambda-examples-secrets-mgr"></a>

Para AWS Secrets Manager utilizarla como proveedor de identidad, puede trabajar con la función Lambda de la plantilla de ejemplo CloudFormation . La función de Lambda consulta el servicio Secrets Manager con sus credenciales y, si se ejecuta correctamente, devuelve un secreto designado. Para obtener más información acerca de Secrets Manager, consulte la [Guía del usuario de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Para descargar una CloudFormation plantilla de ejemplo que utilice esta función Lambda, vaya al [bucket de Amazon S3 proporcionado por](https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-secrets-manager-apig.template.yml). AWS Transfer Family

## Mejoras en las plantillas CloudFormation
<a name="base64-templates"></a>

Se han realizado mejoras en la interfaz de API Gateway en las CloudFormation plantillas publicadas. Las plantillas ahora utilizan contraseñas BASE64 codificadas con la API Gateway. Sus implementaciones actuales siguen funcionando sin esta mejora, pero no permiten contraseñas con caracteres que no estén incluidos en el conjunto básico de caracteres US-ASCII.

Los cambios en la plantilla que permiten esta capacidad son los siguientes:
+ El `GetUserConfigRequest AWS::ApiGateway::Method` recurso debe tener este `RequestTemplates` código (la línea en cursiva es la línea actualizada)

  ```
  RequestTemplates:
     application/json: |
     {
        "username": "$util.urlDecode($input.params('username'))",
        "password": "$util.escapeJavaScript($util.base64Decode($input.params('PasswordBase64'))).replaceAll("\\'","'")",
        "protocol": "$input.params('protocol')",
        "serverId": "$input.params('serverId')",
        "sourceIp": "$input.params('sourceIp')"
  }
  ```
+ El `RequestParameters` campo correspondiente al `GetUserConfig` recurso debe cambiar para poder utilizar el `PasswordBase64` encabezado (la línea en cursiva es la línea actualizada):

  ```
  RequestParameters:
     method.request.header.PasswordBase64: false
     method.request.querystring.protocol: false
     method.request.querystring.sourceIp: false
  ```

**Para comprobar si la plantilla de tu pila es la más reciente**

1. Abre la CloudFormation consola en [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. De la lista de pilas, elige la tuya.

1. En el panel de detalles, selecciona la pestaña **Plantilla**.

1. Busque lo siguiente:
   + Busca `RequestTemplates` y asegúrate de tener esta línea:

     ```
     "password": "$util.escapeJavaScript($util.base64Decode($input.params('PasswordBase64'))).replaceAll("\\'","'")",
     ```
   + Busca `RequestParameters` y asegúrate de tener esta línea:

     ```
     method.request.header.PasswordBase64: false
     ```

Si no ves las líneas actualizadas, edita tu pila. Para obtener más información sobre cómo actualizar la CloudFormation pila, consulta [Modificación de una plantilla de pila](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html) en la *AWS CloudFormation Guía del usuario*.

# Uso de varios métodos de autenticación
<a name="custom-idp-mfa"></a>

El servidor Transfer Family controla la lógica AND cuando se utilizan varios métodos de autenticación. Transfer Family trata esto como dos solicitudes independientes a tu proveedor de identidad personalizado; sin embargo, su efecto es combinado.

Ambas solicitudes deben devolverse correctamente con la respuesta correcta para permitir que se complete la autenticación. Transfer Family requiere que las dos respuestas estén completas, lo que significa que contienen todos los elementos necesarios (función, directorio principal, política y perfil POSIX si utiliza Amazon EFS para el almacenamiento). Transfer Family también exige que la respuesta de la contraseña no incluya claves públicas.

La solicitud de clave pública debe tener una respuesta independiente de la del proveedor de identidad. Ese comportamiento no cambia cuando se utiliza **Contraseña O Clave** o **Contraseña Y Clave**.

El protocolo SSH/SFTP desafía al cliente de software primero con una autenticación de clave pública y, a continuación, solicita una autenticación con contraseña. Esta operación exige que ambas se realicen correctamente antes de que el usuario pueda completar la autenticación.

Para las opciones de proveedores de identidad personalizados, puede especificar cualquiera de las siguientes opciones sobre cómo autenticarse.
+ **Contraseña o clave**: los usuarios pueden autenticarse con su contraseña o su clave. Este es el valor predeterminado.
+ **SOLO con contraseña**: los usuarios deben proporcionar su contraseña para conectarse.
+ **SOLO clave**: los usuarios deben proporcionar su clave privada para conectarse.
+ **Contraseña y clave**: los usuarios deben proporcionar su clave privada y su contraseña para conectarse. El servidor comprueba primero la clave y, después, si la clave es válida, el sistema solicita una contraseña. Si la clave privada proporcionada no coincide con la clave pública que se encuentra almacenada, se produce un error en la autenticación.

# IPv6 soporte para proveedores de identidad personalizados
<a name="custom-idp-ipv6"></a>

AWS Transfer Family los proveedores de identidad personalizados admiten totalmente IPv6 las conexiones. Al implementar un proveedor de identidades personalizado, la función Lambda puede recibir y procesar solicitudes de autenticación tanto de clientes como IPv4 de IPv6 clientes sin necesidad de configuración adicional. La función Lambda recibe la dirección IP del cliente en el `sourceIp` campo de la solicitud, que puede ser una IPv4 dirección (por ejemplo`203.0.113.42`) o una IPv6 dirección (por ejemplo,`2001:db8:85a3:8d3:1319:8a2e:370:7348`). La implementación de su proveedor de identidad personalizado debe gestionar ambos formatos de dirección de forma adecuada.

**importante**  
Si su proveedor de identidad personalizado realiza la validación o el registro basados en IP, asegúrese de que su implementación gestione correctamente los formatos de IPv6 dirección. IPv6 las direcciones son más largas que IPv4 las direcciones y utilizan un formato de notación diferente.

**nota**  
Cuando gestione IPv6 las direcciones en su proveedor de identidad personalizado, asegúrese de utilizar las funciones de análisis de IPv6 direcciones adecuadas en lugar de simples comparaciones de cadenas. IPv6las direcciones se pueden representar en varios formatos canónicos (por ejemplo`fd00:b600::ec2`, o). `fd00:b600:0:0:0:0:0:ec2` Utilice las bibliotecas de IPv6 direcciones o funciones adecuadas en su lenguaje de implementación para validar y comparar IPv6 direcciones correctamente.

**Example Gestionar ambas IPv6 direcciones IPv4 y las direcciones en un proveedor de identidad personalizado**  

```
def lambda_handler(event, context):
    # Extract the source IP address from the request
    source_ip = event.get('sourceIp', '')
    
    # Log the client IP address (works for both IPv4 and IPv6)
    print(f"Authentication request from: {source_ip}")
    
    # Example of IP-based validation that works with both IPv4 and IPv6
    if is_ip_allowed(source_ip):
        # Continue with authentication
        # ...
    else:
        # Reject the authentication request
        return {
            "Role": "",
            "HomeDirectory": "",
            "Status": "DENIED"
        }
```

Para obtener más información sobre la implementación de proveedores de identidad personalizados, consulte[Se utiliza AWS Lambda para integrar su proveedor de identidad](custom-lambda-idp.md).

# Uso AWS de Directory Service para Microsoft Active Directory
<a name="directory-services-users"></a>

Puede utilizarlos AWS Transfer Family para autenticar su transferencia de archivos a los usuarios finales. AWS Directory Service for Microsoft Active Directory Permite una migración fluida de los flujos de trabajo de transferencia de archivos que se basan en la autenticación de Active Directory sin cambiar las credenciales de los usuarios finales ni necesitar un autorizador personalizado. 

Con AWS Managed Microsoft AD, puede proporcionar a Directory Service los usuarios y grupos acceso de forma segura a través de SFTP, FTPS y FTP a los datos almacenados en Amazon Simple Storage Service (Amazon S3) o Amazon Elastic File System (Amazon EFS). Si utiliza Active Directory para almacenar las credenciales de sus usuarios, ahora dispone de una forma más sencilla de habilitar la transferencia de archivos para estos usuarios. 

Puede proporcionar acceso a los grupos de Active Directory AWS Managed Microsoft AD en su entorno local o en la AWS nube mediante conectores de Active Directory. Puede dar a los usuarios que ya están configurados en su entorno de Microsoft Windows, ya sea en la AWS nube o en su red local, acceso a un AWS Transfer Family servidor que utilice AWS Managed Microsoft AD como identidad. El blog AWS de almacenamiento contiene una publicación que detalla una solución para usar Active Directory con Transfer Family: [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).

**nota**  
AWS Transfer Family no es compatible con Simple AD.
Transfer Family no admite configuraciones de Active Directory entre regiones: solo admitimos integraciones de Active Directory que estén en la misma región que la del servidor de Transfer Family.
Transfer Family no admite el uso de AD Connector AWS Managed Microsoft AD ni el uso de AD Connector para habilitar la autenticación multifactor (MFA) en su infraestructura de MFA basada en RADIUS existente.
AWS Transfer Family no admite regiones replicadas de Active Directory administrado.

Para usarlo AWS Managed Microsoft AD, debe realizar los siguientes pasos:

1. Cree uno o más AWS Managed Microsoft AD directorios mediante la Directory Service consola.

1. Utilice la consola Transfer Family para crear un servidor que AWS Managed Microsoft AD lo utilice como proveedor de identidad. 

1. Configure el AWS directorio mediante un conector de Active Directory.

1. Agregue el acceso desde uno o más de sus Directory Service grupos. 

1. Aunque no es obligatorio, le recomendamos que pruebe y verifique el acceso de los usuarios.

**Topics**
+ [Antes de empezar a usar AWS Directory Service for Microsoft Active Directory](#managed-ad-prereq)
+ [Trabajando con dominios de Active Directory](#managed-ad-realms)
+ [Elegir AWS Managed Microsoft AD como proveedor de identidad](#managed-ad-identity-provider)
+ [Conexión a Microsoft Active Directory local](#on-prem-ad)
+ [Conceder acceso a los grupos](#directory-services-grant-access)
+ [Probando usuarios](#directory-services-test-user)
+ [Eliminar el acceso al servidor de un grupo](#directory-services-misc)
+ [Conexión al servidor mediante SSH (Secure Shell)](#directory-services-ssh-procedure)
+ [AWS Transfer Family Conectarse a un Active Directory autoadministrado mediante bosques y fideicomisos](#directory-services-ad-trust)

## Antes de empezar a usar AWS Directory Service for Microsoft Active Directory
<a name="managed-ad-prereq"></a>

**nota**  
AWS Transfer Family tiene un límite predeterminado de 100 grupos de Active Directory por servidor. Si su caso de uso requiere más de 100 grupos, considere la posibilidad de utilizar una solución de proveedor de identidad personalizada, tal como se describe en [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).

### Proporcione un identificador único para sus grupos de AD
<a name="add-identifier-adgroups"></a>

Antes de poder usarlo AWS Managed Microsoft AD, debe proporcionar un identificador único para cada grupo del directorio de Microsoft AD. Para ello, puede utilizar el identificador de seguridad (SID) de cada grupo. Los usuarios del grupo que asocie tienen acceso a sus recursos de Amazon S3 o Amazon EFS a través de los protocolos habilitados mediante AWS Transfer Family. 

Utilice el siguiente PowerShell comando de Windows para recuperar el SID de un grupo y *YourGroupName* sustitúyalo por el nombre del grupo. 

```
Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties * | Select SamAccountName,ObjectSid
```

**nota**  
Si lo utiliza AWS Directory Service como proveedor de identidad `userPrincipalName` y `SamAccountName` tiene valores diferentes, AWS Transfer Family acepta el valor in`SamAccountName`. Transfer Family no acepta el valor especificado en `userPrincipalName`.

### Añada Directory Service permisos a su función
<a name="add-active-directory-permissions"></a>

También necesitas permisos Directory Service de API para usarlos AWS Directory Service como proveedor de identidades. Los siguientes permisos son necesarios o recomendados:
+ Se requiere `ds:DescribeDirectories` para que Transfer Family busque en el directorio
+ `ds:AuthorizeApplication` es necesario añadir una autorización para Transfer Family
+ Se sugiere `ds:UnauthorizeApplication` para eliminar todos los recursos que se hayan creado provisionalmente, en caso de que algo vaya mal durante el proceso de creación del servidor

Añada estos permisos al rol que está utilizando para crear sus servidores de Transfer Family. Para obtener información detallada sobre estos permisos, consulte Permisos API [Directory Service : acciones, recursos y referencia de condiciones](https://docs.aws.amazon.com//directoryservice/latest/admin-guide/UsingWithDS_IAM_ResourcePermissions.html).

## Trabajando con dominios de Active Directory
<a name="managed-ad-realms"></a>

 Cuando esté pensando en cómo hacer que los usuarios de Active Directory accedan a los servidores de AWS Transfer Family , tenga en cuenta el dominio del usuario y el dominio de su grupo. Lo ideal es que el dominio del usuario y el dominio de su grupo coincidan. Es decir, tanto el usuario como el grupo están en el dominio predeterminado o ambos están en el dominio de confianza. Si este no es el caso, Transfer Family no podrá autenticar al usuario.

Puede probar al usuario para asegurarse de que la configuración es correcta. Para obtener más información, consulte [Probando usuarios](#directory-services-test-user). Si hay algún problema con el user/group dominio, aparece el mensaje de error: No se ha encontrado ningún acceso asociado a los grupos de usuarios.

## Elegir AWS Managed Microsoft AD como proveedor de identidad
<a name="managed-ad-identity-provider"></a>

En esta sección se describe cómo usarlo AWS Directory Service for Microsoft Active Directory con un servidor.

**Para usar AWS Managed Microsoft AD con Transfer Family**

1. Inicia sesión en Consola de administración de AWS y abre la Directory Service consola en [https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/).

   Utilice la Directory Service consola para configurar uno o más directorios gestionados. Para obtener más información, consulte [AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) en la *Guía para administradores de Directory Service *.  
![\[La consola de Directory Service que muestra una lista de directorios y sus detalles.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/directory-services-AD-list.png)

1. Abra la AWS Transfer Family consola en [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)y seleccione **Crear servidor**.

1. En la página **Elegir protocolos**, elija uno o más protocolos de la lista.
**nota**  
Si selecciona **FTPS**, debe proporcionar el certificado de AWS Certificate Manager . 

1. En **Elegir un proveedor de identidad**, elija **Directory Service de AWS **.  
![\[Captura de pantalla de la consola que muestra la sección Elegir proveedor de identidad con Directory Service seleccionado.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/create-server-choose-idp-directory-services.png)

1. La lista **Directorio** contiene todos los directorios administrados que ha configurado. Elija un directorio de la lista y elija **Siguiente**.
**nota**  
 No se admiten los directorios multicuenta y compartidos. AWS Managed Microsoft AD
Para configurar un servidor con Directory Service como proveedor de identidad, debe añadir algunos Directory Service permisos. Para obtener más información, consulte [Antes de empezar a usar AWS Directory Service for Microsoft Active Directory](#managed-ad-prereq).

1. Para terminar de crear el servidor, utilice uno de los procedimientos siguientes:
   + [Cree un servidor compatible con SFTP](create-server-sftp.md)
   + [Cree un servidor compatible con FTPS](create-server-ftps.md)
   + [Cree un servidor compatible con FTP](create-server-ftp.md)

   En esos procedimientos, continúe con el paso siguiente: elegir un proveedor de identidad.

**importante**  
 No puedes eliminar un directorio de Microsoft AD Directory Service si lo usaste en un servidor Transfer Family. Primero debe eliminar el servidor y, a continuación, puede eliminar el directorio. 

## Conexión a Microsoft Active Directory local
<a name="on-prem-ad"></a>

En esta sección se describe cómo configurar un AWS directorio mediante un conector AD.

**Para configurar el AWS directorio mediante AD Connector**

1. Abra la consola [Servicio de directorio](https://console.aws.amazon.com/directoryservicev2/) y seleccione **Directorios**.

1. Seleccione **Configurar directorio**.

1. Para el tipo de directorio, elija **Conector de AD**.

1. Seleccione un tamaño de directorio, seleccione **Siguiente** y, a continuación, seleccione su VPC y sus subredes.

1. Seleccione **Siguiente** y, a continuación, rellene los campos de la siguiente manera:
   + **Nombre DNS del directorio**: introduzca el nombre de dominio que está utilizando para su Microsoft Active Directory.
   + **Direcciones IP DNS: introduzca las direcciones** IP de Microsoft Active Directory.
   + Nombre de **usuario y **contraseña** de la cuenta del servidor**: introduzca los detalles de la cuenta de servicio que va a utilizar.

1. Complete las pantallas para crear el servicio de directorio.

El siguiente paso es crear un servidor Transfer Family con el protocolo SFTP y el tipo de proveedor de identidad de **AWS Directory Service**. En la lista desplegable del **directorio**, seleccione el directorio que agregó en el procedimiento anterior.

## Conceder acceso a los grupos
<a name="directory-services-grant-access"></a>

 Tras crear el servidor, debe elegir qué grupos del directorio deben tener acceso para cargar y descargar archivos mediante los protocolos habilitados AWS Transfer Family. Para ello, debe crear un *acceso*.

**nota**  
AWS Transfer Family tiene un límite predeterminado de 100 grupos de Active Directory por servidor. Si su caso de uso requiere más de 100 grupos, considere la posibilidad de utilizar una solución de proveedor de identidad personalizada, tal como se describe en [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).

**nota**  
Los usuarios deben pertenecer *directamente* al grupo al que se concede el acceso. Por ejemplo, supongamos que Bob es un usuario y pertenece al grupo A y que el propio grupo A está incluido en el grupo B.  
Si concede acceso al Grupo A, a Bob se le concede el acceso.
 Si concede acceso al grupo B (y no al grupo A), Bob no tendrá acceso.

**Cómo conceder acceso a un grupo**

1. Abra la consola en AWS Transfer Family . [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)

1. Navegue a la página de detalles del servidor.

1.  En la sección **Accesos**, seleccione **Añadir acceso**. 

1.  Introduzca el SID del AWS Managed Microsoft AD directorio al que desea acceder a este servidor.
**nota**  
Para obtener información acerca de cómo buscar el SID de su grupo, consulte [Antes de empezar a usar AWS Directory Service for Microsoft Active Directory](#managed-ad-prereq).

1. En **Access**, elija un rol AWS Identity and Access Management (IAM) para el grupo.

1.  En la sección **Política**, elija una política. El valor predeterminado es **Ninguno**. 

1. En el **directorio principal**, elija un bucket de Amazon S3 que se corresponda con el directorio principal del grupo.
**nota**  
Puede limitar las partes del bucket que ven los usuarios mediante la creación de una política de sesión. Por ejemplo, para limitar a los usuarios a su propia carpeta en el directorio de `/filetest`, introduzca el siguiente texto en el cuadro.  

   ```
   /filetest/${transfer:UserName}
   ```
 Para obtener más información sobre la creación de una política de sesión, consulte [Creación de una política de sesión para un bucket de Amazon S3](users-policies-session.md). 

1.  Seleccione **Añadir** para crear la asociación. 

1. Seleccione su servidor.

1. Seleccione **Añadir acceso**.

   1.  Introduzca el SID del grupo. 
**nota**  
Para obtener información acerca de cómo encontrar el SID, consulte [Antes de empezar a usar AWS Directory Service for Microsoft Active Directory](#managed-ad-prereq).

1. Seleccione **Añadir acceso**.

 En la sección **Accesos**, se muestran los accesos al servidor. 

![\[La consola muestra la sección de accesos con los accesos al servidor listados.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/accesses-list.png)


## Probando usuarios
<a name="directory-services-test-user"></a>

Puede comprobar si un usuario tiene acceso al AWS Managed Microsoft AD directorio de su servidor.

**nota**  
Un usuario debe pertenecer exactamente a un grupo (un identificador externo) que aparece en la sección **Acceso** de la página **Configuración del punto de conexión**. Si el usuario no está en ningún grupo o está en más de un grupo, no se le concede el acceso.

**Comprobación de si un usuario específico tiene acceso**

1. En la página de detalles del servidor, elija **Acciones** y, a continuación, elija **Probar**.

1. Para **Realizar pruebas con un proveedor de identidad**, introduzca las credenciales de inicio de sesión de un usuario que pertenezca a uno de los grupos a los que tenga acceso. 

1.  Seleccione **Probar** 

Aparece una prueba de proveedor de identidad correcta, que indica que se ha concedido acceso al servidor al usuario seleccionado.

![\[Captura de pantalla de la consola donde se muestra la respuesta correcta a la prueba del proveedor de identidad.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/identity-provider-test-success.png)


Si el usuario pertenece a más de un grupo al que tiene acceso, recibirá la siguiente respuesta.

```
"Response":"",
"StatusCode":200,
"Message":"More than one associated access found for user's groups."
```

## Eliminar el acceso al servidor de un grupo
<a name="directory-services-misc"></a>

**Eliminación del acceso al servidor de un grupo**

1. En la página de detalles del servidor, elija **Acciones** y, a continuación, elija **Eliminar acceso**.

1. En el cuadro de diálogo, confirme que desea eliminar el acceso para este grupo.

 Al volver a la página de detalles del servidor, verá que el acceso a este grupo ya no aparece en la lista. 

## Conexión al servidor mediante SSH (Secure Shell)
<a name="directory-services-ssh-procedure"></a>

Después de configurar el servidor y los usuarios, puede conectarse al servidor mediante SSH y utilizar el nombre de usuario completo para un usuario que tenga acceso. 

```
sftp user@active-directory-domain@vpc-endpoint
```

Por ejemplo: `transferuserexample@mycompany.com@vpce-0123456abcdef-789xyz.vpc-svc-987654zyxabc.us-east-1.vpce.amazonaws.com`.

Este formato apunta a la búsqueda de la federación, lo que limita la búsqueda de un Active Directory potencialmente grande. 

**nota**  
Puede especificar un nombre de usuario sencillo. Sin embargo, en este caso, el código de Active Directory debe buscar en todos los directorios de la federación. Esto podría limitar la búsqueda y la autenticación podría fallar aunque el usuario tuviera acceso. 

Tras la autenticación, el usuario se encuentra en el directorio de inicio que especificó al configurar el usuario.

## AWS Transfer Family Conectarse a un Active Directory autoadministrado mediante bosques y fideicomisos
<a name="directory-services-ad-trust"></a>

Directory Service dispone de las siguientes opciones para conectarse a un Active Directory autoadministrado:
+ La confianza unidireccional en el bosque (saliente AWS Managed Microsoft AD y entrante en el caso de Active Directory local) solo funciona para el dominio raíz.
+ Para dominios secundarios, puede utilizar uno de los procedimientos a continuación:
  + Utilice una confianza bidireccional entre el Active Directory local AWS Managed Microsoft AD y el entorno local
  + Utilice una confianza externa unidireccional para cada dominio secundario.

Al conectarse al servidor mediante un dominio de confianza, el usuario debe especificar el dominio de confianza, por ejemplo, `transferuserexample@mycompany.com`.

# Uso AWS de Directory Service para los servicios de dominio Entra ID
<a name="azure-sftp"></a>

 Para los clientes que solo necesitan la transferencia por SFTP y no desean administrar un dominio, existe Simple Active Directory. Como alternativa, los clientes que desean disfrutar de las ventajas de Active Directory y la alta disponibilidad en un servicio totalmente administrado pueden usar AWS Managed Microsoft AD. Por último, para los clientes que desean aprovechar su bosque de Active Directory existente para realizar la transferencia por SFTP, existe Conector Active Directory. 

Tenga en cuenta lo siguiente:
+ Para aprovechar el bosque de Active Directory existente para sus necesidades de transferencia por SFTP, puede usar [Conector Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_ad_connector.html).
+ Si desea disfrutar de las ventajas de Active Directory y de la alta disponibilidad en un servicio totalmente administrado, puede utilizar AWS Directory Service for Microsoft Active Directory. Para obtener más información, consulte [Uso AWS de Directory Service para Microsoft Active Directory](directory-services-users.md).

En este tema se describe cómo usar un conector de Active Directory y los [servicios de dominio Entra ID (anteriormente Azure AD) para autenticar a los](https://azure.microsoft.com/en-us/services/active-directory-ds/) usuarios de SFTP Transfer con Entra ID.

**Topics**
+ [Antes de empezar a utilizar AWS Directory Service para los servicios de dominio Entra ID](#azure-prereq)
+ [Paso 1: Añadir los servicios de dominio Entra ID](#azure-add-adds)
+ [Paso 2: creación de una cuenta de servicio](#azure-create-service-acct)
+ [Paso 3: Configuración del AWS directorio mediante AD Connector](#azure-setup-directory)
+ [Paso 4: Configurar el AWS Transfer Family servidor](#azure-setup-transfer-server)
+ [Paso 5: concesión de acceso a los grupos](#azure-grant-access)
+ [Paso 6: prueba de usuarios](#azure-test)

## Antes de empezar a utilizar AWS Directory Service para los servicios de dominio Entra ID
<a name="azure-prereq"></a>

**nota**  
AWS Transfer Family tiene un límite predeterminado de 100 grupos de Active Directory por servidor. Si su caso de uso requiere más de 100 grupos, considere la posibilidad de utilizar una solución de proveedor de identidad personalizada, tal como se describe en [Simplifique la autenticación de Active Directory con un proveedor de identidad personalizado para AWS Transfer Family](https://aws.amazon.com/blogs/storage/simplify-active-directory-authentication-with-a-custom-identity-provider-for-aws-transfer-family/).

Para AWS ello, necesita lo siguiente:
+ Una nube privada virtual (VPC) en una AWS región en la que utilice sus servidores Transfer Family
+ Al menos dos subredes privadas en la VPC
+ Los VPC deben tener conexión a Internet
+ Una puerta de enlace para clientes y una puerta de enlace privada virtual para la conexión site-to-site VPN con Microsoft Entra

Para Microsoft Entra, necesitas lo siguiente:
+ Un servicio de dominio de Active Directory e ID de Entra
+ Un grupo de recursos de Entra
+ Una red virtual Entra
+ Conectividad VPN entre su Amazon VPC y su grupo de recursos Entra
**nota**  
Esto puede realizarse a través de túneles IPSEC nativos o mediante dispositivos VPN. En este tema, utilizamos túneles IPSEC entre una puerta de enlace de red Entra Virtual y una puerta de enlace de red local. Los túneles deben estar configurados para permitir el tráfico entre los puntos finales del Entra Domain Service y las subredes que alojan la AWS VPC.
+ Una puerta de enlace para clientes y una puerta de enlace privada virtual para la conexión site-to-site VPN con Microsoft Entra

En el siguiente diagrama se muestra la configuración necesaria antes de comenzar.

![\[Entra/Azure AD y diagrama de AWS Transfer Family arquitectura. Una AWS VPC que se conecta a una red virtual Entra a través de Internet mediante un conector de AWS Directory Service al servicio de dominio Entra.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-architecture.png)


## Paso 1: Añadir los servicios de dominio Entra ID
<a name="azure-add-adds"></a>

 Entra ID no admite instancias de unión de dominios de forma predeterminada. Para realizar acciones como unirse a un dominio y utilizar herramientas como la política de grupo, los administradores deben habilitar los servicios de dominio Entra ID. Si aún no has añadido Entra DS o tu implementación actual no está asociada al dominio que quieres que utilice tu servidor de transferencia SFTP, debes añadir una nueva instancia.

Para obtener información sobre cómo habilitar los Servicios de dominio Entra ID, consulte el [Tutorial: Creación y configuración de un dominio administrado de Microsoft Entra ID Domain Services](https://docs.microsoft.com/en-us/azure/active-directory-domain-services/active-directory-ds-getting-started).

**nota**  
Cuando habilite Entra DS, asegúrese de que esté configurado para el grupo de recursos y el dominio Entra al que está conectando su servidor de transferencia SFTP.

![\[Entra en la pantalla de servicios de dominio que muestra el grupo de recursos bob.us en ejecución.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-ad-add-instance.png)


## Paso 2: creación de una cuenta de servicio
<a name="azure-create-service-acct"></a>

 Entra debe tener una cuenta de servicio que forme parte de un grupo de administradores de Entra DS. Esta cuenta se usa con el conector de AWS Active Directory. Asegúrese de que esta cuenta esté sincronizada con Entra DS. 

![\[Entra en la pantalla que muestra el perfil de un usuario.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-service-acct.png)


**sugerencia**  
La autenticación multifactor para Entra ID no es compatible con los servidores Transfer Family que utilizan el protocolo SFTP. El servidor de Transfer Family no puede proporcionar el token de MFA después de que un usuario se autentique en SFTP. Asegúrese de deshabilitar el MFA antes de intentar conectarse.  

![\[Introduzca los detalles de autenticación multifactorial, que muestran el estado del MFA como desactivado para dos usuarios.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-ad-mfa-disable.png)


## Paso 3: Configuración del AWS directorio mediante AD Connector
<a name="azure-setup-directory"></a>

 Una vez que haya configurado Entra DS y creado una cuenta de servicio con túneles VPN IPSEC entre su AWS VPC y la red virtual Entra, puede probar la conectividad haciendo ping a la dirección IP DNS de Entra DS desde AWS cualquier instancia de EC2.

Después de comprobar que la conexión está activa, puede continuar a continuación.

**Para configurar el AWS directorio mediante AD Connector**

1. Abra la consola [Servicio de directorio](https://console.aws.amazon.com/directoryservicev2/) y seleccione **Directorios**.

1. Seleccione **Configurar directorio**.

1. Para el tipo de directorio, elija **Conector de AD**.

1. Seleccione un tamaño de directorio, seleccione **Siguiente** y, a continuación, seleccione su VPC y sus subredes.

1. Seleccione **Siguiente** y, a continuación, rellene los campos de la siguiente manera:
   + **Nombre DNS del directorio**: introduce el nombre de dominio que utilizas para tu Entra DS.
   + **Direcciones IP de DNS**: introduzca sus direcciones IP de Entra DS.
   + **Nombre de usuario de la cuenta del servidor** y **contraseña**: introduzca los detalles de la cuenta de servicio que creó en el *Paso 2: Crear una cuenta de servicio*.

1. Complete las pantallas para crear el servicio de directorio.

Ahora el estado del directorio debería ser **Activo** y está listo para usarse con un servidor de transferencia SFTP.

![\[La pantalla de servicios de directorio muestra un directorio con el estado Activo, según sea necesario.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-connector-ready.png)


## Paso 4: Configurar el AWS Transfer Family servidor
<a name="azure-setup-transfer-server"></a>

Cree un servidor Transfer Family con el protocolo SFTP y el tipo de proveedor de identidad de **AWS Directory Service**. En la lista desplegable de **Directorios**, seleccione el directorio que agregó en el *Paso 3: configuración del directorio de AWS mediante AD Connector*.

**nota**  
No puede eliminar un directorio de Microsoft AD en AWS Directory Service si lo utilizó en un servidor Transfer Family. Primero debe eliminar el servidor y, a continuación, puede eliminar el directorio. 

## Paso 5: concesión de acceso a los grupos
<a name="azure-grant-access"></a>

 Tras crear el servidor, debe elegir qué grupos del directorio deben tener acceso para cargar y descargar archivos mediante los protocolos habilitados AWS Transfer Family. Para ello, debe crear un *acceso*.

**nota**  
Los usuarios deben pertenecer *directamente* al grupo al que se concede el acceso. Por ejemplo, supongamos que Bob es un usuario y pertenece al grupo A y que el propio grupo A está incluido en el grupo B.  
Si concede acceso al Grupo A, a Bob se le concede el acceso.
 Si concede acceso al grupo B (y no al grupo A), Bob no tendrá acceso.

 Para conceder el acceso, debe recuperar el SID del grupo.

Use el siguiente PowerShell comando de Windows para recuperar el SID de un grupo y *YourGroupName* sustitúyalo por el nombre del grupo. 

```
Get-ADGroup -Filter {samAccountName -like "YourGroupName*"} -Properties * | Select SamAccountName,ObjectSid
```

![\[Windows PowerShell muestra el SID de un objeto que se está recuperando.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-grant-access.png)


**Conceda acceso a los grupos**

1. Abra [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/).

1. Ve a la página de detalles del servidor y, en la sección **Accesos**, seleccione **Añadir acceso**. 

1. Introduzca el SID que recibió de la salida del procedimiento anterior.

1. En **Access**, elija un AWS Identity and Access Management rol para el grupo.

1. En la sección **Política**, elija una política. El valor predeterminado es **None (Ninguno)**.

1. En el **directorio principal**, elija un bucket de Amazon S3 que se corresponda con el directorio principal del grupo.

1. Seleccione **Añadir** para crear la asociación.

Los detalles de su servidor de transferencia deben ser similares a los siguientes:

![\[Parte de la pantalla de detalles del servidor Transfer Family, que muestra un ejemplo de ID de directorio para el proveedor de identidad.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-assoc-1.png)


![\[Parte de la pantalla de detalles del servidor Transfer Family, que muestra el ID externo del directorio activo en la parte de Accesos de la pantalla.\]](http://docs.aws.amazon.com/es_es/transfer/latest/userguide/images/azure-assoc-2.png)


## Paso 6: prueba de usuarios
<a name="azure-test"></a>

Puede probar ([Probando usuarios](directory-services-users.md#directory-services-test-user)) si un usuario tiene acceso al directorio AWS Managed Microsoft AD de su servidor. Un usuario debe pertenecer exactamente a un grupo (un identificador externo) que aparece en la sección **Acceso** de la página **Configuración del punto de conexión**. Si el usuario no está en ningún grupo o está en más de un grupo, no se le concede el acceso. 