Configuración de un flujo de trabajo gestionado para descifrar un archivo - AWS Transfer Family

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de un flujo de trabajo gestionado para descifrar un archivo

En este tutorial se muestra cómo configurar un flujo de trabajo administrado que contenga un paso de descifrado. El tutorial también muestra cómo cargar un archivo cifrado en un bucket de Amazon S3 y, a continuación, ver el archivo descifrado en ese mismo bucket.

nota

El blog AWS de almacenamiento tiene una entrada que describe cómo cifrar y descifrar archivos, cifrar y descifrar archivos con PGP y. AWS Transfer Family

Paso 1: creación y configuración de un rol de ejecución de IAM

Cree una función de ejecución AWS Identity and Access Management (IAM) que Transfer Family pueda utilizar para iniciar un flujo de trabajo. El proceso de creación de un rol de ejecución se describe en Políticas de IAM para flujos de trabajo.

nota

Como parte de la creación de un rol de ejecución, asegúrese de establecer una relación de confianza entre el rol de ejecución y Transfer Family, tal y como se describe en Para establecer una relación de confianza.

La siguiente política de roles de ejecución contiene todos los permisos necesarios para ejecutar correctamente el flujo de trabajo que va a crear en este tutorial. Para utilizar esta política de ejemplo, sustituya user input placeholders por su propia información. Sustituya DOC-EXAMPLE-BUCKET por el nombre del bucket de Amazon S3 donde cargará sus archivos cifrados.

nota

No todos los flujos de trabajo requieren todos los permisos que se enumeran en este ejemplo. Puede limitar los permisos en función de los tipos de pasos de su flujo de trabajo específico. Los permisos necesarios para cada tipo de paso predefinido se describen en Utilice pasos predefinidos. Los permisos necesarios para un paso personalizado se describen en Permisos de IAM para un paso personalizado.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WorkflowsS3Permissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:PutObject", "s3:PutObjectTagging", "s3:ListBucket", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET"] "Condition": { "StringEquals": { "s3:RequestObjectTag/Archive": "yes" } } }, { "Sid": "DecryptSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*" } ] }

Paso 2: creación de un flujo de trabajo administrado

Ahora necesita crear un flujo de trabajo que contenga un paso de descifrado.

Creación de un flujo de trabajo que contenga un paso de descifrado
  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. En el panel de navegación izquierdo, seleccione Flujos de trabajo y, a continuación, Crear flujo de trabajo.

  3. Escriba la información siguiente:

    • Introduzca una descripción, por ejemplo, Decrypt workflow example.

    • En la sección Pasos nominales, seleccione Añadir paso.

  4. En Elegir el tipo de paso, elija Descifrar archivo y, a continuación, elija Siguiente.

  5. En el cuadro de diálogo Configurar parámetros, especifique lo siguiente:

    • Introduzca un nombre de paso descriptivo, por ejemplo, decrypt-step. No se permiten espacios en los nombres de los pasos.

    • Para el Destino de los archivos descifrados, elija Amazon S3.

    • Para el nombre del bucket de destino, elija el mismo bucket de Amazon S3 que especificó como DOC-EXAMPLE-BUCKET en la política de IAM que creó en el paso 1.

    • Para el prefijo de clave de destino, introduzca el nombre del prefijo (carpeta) en el que desee almacenar los archivos descifrados en el bucket de destino, por ejemplo, decrypted-files/.

      nota

      Asegúrese de añadir una barra (/) final al prefijo.

    • Para este tutorial, deja desactivada la opción Sobrescribir existente. Si se borra esta configuración, si intenta descifrar un archivo con el mismo nombre que un archivo existente, el procesamiento del flujo de trabajo se detiene y el nuevo archivo no se procesa.

    Elija Siguiente para pasar a la pantalla de revisión.

  6. Revise los detalles del paso. Si todo es correcto, seleccione Crear paso.

  7. Su flujo de trabajo solo necesita un único paso de descifrado, por lo que no es necesario configurar ningún paso adicional. Seleccione Crear flujo de trabajo para crear el nuevo flujo de trabajo.

Anote el ID de flujo de trabajo del nuevo flujo de trabajo. Necesitará este ID en el siguiente paso. En este tutorial se utiliza w-1234abcd5678efghi como ejemplo el ID del flujo de trabajo.

Paso 3: agregar el flujo de trabajo a un servidor y crear un usuario

Ahora que tiene un flujo de trabajo con un paso de descifrado, debe asociarlo a un servidor de Transfer Family. En este tutorial se muestra cómo adjuntar el flujo de trabajo a un servidor de Transfer Family existente. Si lo desea, puede crear un nuevo servidor para usarlo con su flujo de trabajo.

Tras adjuntar el flujo de trabajo a un servidor, debe crear un usuario que pueda introducir el SFTP en el servidor y activar la ejecución del flujo de trabajo.

Configuración de un servidor de Transfer Family para ejecutar un flujo de trabajo
  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. En el panel de navegación izquierdo, seleccione Servidores y, a continuación, seleccione un servidor de la lista. Asegúrese de que este servidor es compatible con el protocolo SFTP.

  3. En la página de detalles del servidor, desplácese hacia abajo hasta la sección Detalles adicionales y, a continuación, seleccione Editar.

  4. En la página Editar detalles adicionales, en la sección Flujos de trabajo administrados, elija su flujo de trabajo y elija el rol de ejecución correspondiente.

  5. Desplácese hasta la parte inferior de la página y elija Guardar para guardar sus cambios.

Anote el ID del servidor que está utilizando. El nombre del AWS Secrets Manager secreto que se utiliza para almacenar las claves PGP se basa en parte en el ID del servidor.

Cómo añadir un usuario que pueda activar el flujo de trabajo
  1. Abre la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. En el panel de navegación izquierdo, seleccione Servidores y, a continuación, seleccione el servidor que utilice para el flujo de trabajo de descifrado.

  3. En la página de detalles del servidor, desplácese hacia abajo hasta la sección Usuarios y seleccione Añadir usuario.

  4. Para el nuevo usuario, introduzca los siguientes detalles:

    • En Nombre de usuario, introduzca decrypt-user.

    • En Rol, elija un rol de usuario que pueda acceder a su servidor.

    • En el Directorio de inicio, elija el bucket de Amazon S3 que utilizó anteriormente, por ejemplo, DOC-EXAMPLE-BUCKET.

    • En el caso de las claves públicas de SSH, pega una clave pública que corresponda a la clave privada que tengas. Para obtener más detalles, consulte Genere claves SSH para los usuarios administrados por el servicio.

  5. Seleccione Añadir para guardar el nuevo usuario.

Anote el nombre de su usuario de Transfer Family para este servidor. El secreto se basa parcialmente en el nombre del usuario. Para simplificar, este tutorial usa un secreto predeterminado que puede usar cualquier usuario del servidor.

Paso 4: creación de un par de claves PGP

Utilice uno de los clientes PGP compatibles para generar un par de claves PGP. Este proceso se describe en detalle en Generar claves PGP.

Generación de un par de claves PGP
  1. Para este tutorial, puede usar el cliente gpg (GnuPG) versión 2.0.22 para generar un par de claves PGP que utilice RSA como algoritmo de cifrado. Para este cliente, ejecute el siguiente comando y proporcione una dirección de correo electrónico y una frase de contraseña. Puede usar cualquier nombre o dirección de correo electrónico que desee. Asegúrese de recordar los valores que utiliza, ya que tendrá que introducirlos más adelante en el tutorial.

    gpg --gen-key
    nota

    Si utiliza la versión 2.3.0 o posterior de GnuPG, debe ejecutar gpg --full-gen-key. Cuando se le pida el tipo de clave que desea crear, elija RSA o Elliptic Curve Cryptography (ECC, criptografía de curva elíptica). Sin embargo, si elige ECC, asegúrese de seleccionar una NIST o BrainPool para la curva elíptica. No seleccione Curve 25519.

  2. Exporte la clave privada mediante el siguiente comando. Sustituya user@example.com por la dirección de correo electrónico que utilizó al momento de generar la clave.

    gpg --output workflow-tutorial-key.pgp --armor --export-secret-key user@example.com

    Este comando exporta la clave privada al archivo workflow-tutorial-key.pgp. Puede asignar al archivo de salida el nombre que desee. También puede eliminar el archivo de clave privada una vez que lo haya agregado AWS Secrets Manager.

Paso 5: guardar la clave privada PGP en AWS Secrets Manager

Debe almacenar la clave privada en Secrets Manager, de una manera muy específica, para que el flujo de trabajo pueda encontrar la clave privada cuando el flujo de trabajo ejecute un paso de descifrado en un archivo cargado.

nota

Cuando guardas secretos en Secrets Manager, Cuenta de AWS incurres en cargos. Para obtener más información acerca de los precios, consulte Precios de AWS Secrets Manager.

Almacenamiento de una clave privada PGP en Secrets Manager
  1. Inicie sesión AWS Management Console y abra la AWS Secrets Manager consola en https://console.aws.amazon.com/secretsmanager/.

  2. En el panel de navegación izquierdo, seleccione Secretos.

  3. En la página Secretos, seleccione Almacenar un nuevo secreto.

  4. En la página Seleccionar tipo de secreto, en Tipo de secreto, seleccione Otro tipo de secreto.

  5. En la sección de Pares clave-valor, seleccione la pestaña Clave/valor.

    • Clave: introduzca PGPPrivateKey.

    • valor: pegue el texto de su clave privada en el campo valor.

  6. Seleccione Añadir fila y, en la sección de Pares clave/valor, seleccione la pestaña Clave/valor.

  7. Elija Siguiente.

  8. En la página Configurar secreto, introduzca un nombre y una descripción para el secreto. Puede crear un secreto para un usuario específico o uno que puedan usar todos los usuarios. Si su ID de servidor es s-11112222333344445, asigne el nombre al secreto de la siguiente manera.

    • Para crear un secreto predeterminado para todos los usuarios, asigne un nombre al secretoaws/transfer/s-11112222333344445/@pgp-default.

    • Para crear un secreto solo para el usuario que creó anteriormente, asigne un nombre al secreto aws/transfer/s-11112222333344445/decrypt-user.

  9. Seleccione Siguiente y, a continuación, acepte los valores predeterminados de la página Configurar rotación. A continuación, elija Siguiente.

  10. En la página de Revisión, elija Guardar para crear y almacenar el secreto.

Para obtener más información sobre cómo añadir tu clave privada PGP a Secrets Manager, consulta Usar AWS Secrets Manager para almacenar tu clave PGP.

Paso 6: cifrado de un archivo

Use el programa gpg para cifrar un archivo para usarlo en su flujo de trabajo. Para cifrar el archivo, ejecute el siguiente comando:

gpg -e -r marymajor@example.com --openpgp testfile.txt

Antes de ejecutar este comando, tenga en cuenta lo siguiente:

  • Para el argumento -r, sustituya marymajor@example.com por la dirección de correo electrónico que utilizó al crear el par de claves PGP.

  • La etiqueta --openpgp es opcional. Este indicador hace que el archivo cifrado se ajuste al estándar RFC4880 de OpenPGP.

  • Este comando crea un archivo cuyo nombre se encuentra testfile.txt.gpg en la misma ubicación que testfile.txt.

Paso 7: ejecución del flujo de trabajo y visualización de los resultados

Para ejecutar el flujo de trabajo, debe conectarse al servidor de Transfer Family con el usuario que creó en el paso 3. A continuación, puede buscar en el bucket de Amazon S3 que especificó en el paso 2.5 y configurar los parámetros de destino para ver el archivo descifrado.

Ejecución del flujo de trabajo de descifrado
  1. Abra un terminal de comandos.

  2. Ejecute el siguiente comando y sustituya your-endpoint por su punto de conexión actual y transfer-key por la clave privada SSH de su usuario:

    sftp -i transfer-key decrypt-user@your-endpoint

    Por ejemplo, si la clave privada está almacenada en ~/.ssh/decrypt-user y su punto de conexión es s-11112222333344445.server.transfer.us-east-2.amazonaws.com, el comando es el siguiente:

    sftp -i ~/.ssh/decrypt-user decrypt-user@s-11112222333344445.server.transfer.us-east-2.amazonaws.com
  3. Ejecute el comando pwd. Si se ejecuta correctamente, este comando devuelve lo siguiente:

    Remote working directory: /DOC-EXAMPLE-BUCKET/decrypt-user

    El directorio refleja el nombre del bucket de Amazon S3.

  4. Ejecute el siguiente comando para cargar el archivo y activar el flujo de trabajo:

    put testfile.txt.gpg
  5. Como destino de los archivos descifrados, especificó la carpeta decrypted-files/ al crear el flujo de trabajo. Ahora, puede ir a esa carpeta y enumerar el contenido.

    cd ../decrypted-files/ ls

    Si tiene éxito, el comando ls muestra el archivo testfile.txt. Puede descargar este archivo y comprobar que es el mismo que el archivo original que cifró anteriormente.