Prácticas recomendadas de integración de aplicaciones de AWS CloudHSM - AWS CloudHSM

Prácticas recomendadas de integración de aplicaciones de AWS CloudHSM

Siga las prácticas recomendadas de esta sección para optimizar la integración de la aplicación con su clúster de AWS CloudHSM.

Inicie su SDK de cliente.

Debe iniciar su SDK de cliente antes de conectarlo a su clúster. Al iniciar las direcciones IP en el clúster, le recomendamos que use el parámetro --cluster-id siempre que sea posible. Este método rellena la configuración con todas las direcciones IP de HSM de su clúster sin necesidad de supervisar cada dirección individual. De este modo, se añade una mayor resiliencia a la inicialización de la aplicación en caso de que un HSM se encuentre en mantenimiento o se produzca una interrupción en la zona de disponibilidad. Para obtener más información, consulte Proceso de arranque del SDK de cliente.

Autentíquese para realizar operaciones.

En AWS CloudHSM, debe autenticarse en el clúster antes de poder realizar la mayoría de las operaciones, como las operaciones criptográficas.

Autenticación con la CLI de CloudHSM: puede autenticarse con la CLI de CloudHSM usando el modo de comando único o bien el modo interactivo. Ejecute el comando Iniciar sesión en un HSM mediante la CLI de CloudHSM para autenticarse en modo interactivo. Para autenticarse en modo de comando único, debe configurar las variables de entorno CLOUDHSM_ROLE y CLOUDHSM_PIN. Para obtener más información al respecto, consulte Modo de comando único. AWS CloudHSM recomienda almacenar de forma segura sus credenciales de HSM cuando no las use su aplicación.

Autenticación con PKCS #11: en PKCS #11, inicie sesión usando la API de C_Login tras haber abierto una sesión con C_OpenSession. Solo necesita ejecutar un C_Login por ranura (clúster). Una vez que haya iniciado sesión correctamente, podrá abrir sesiones adicionales con C_OpenSession sin necesidad de inicios de sesión adicionales. Para ver ejemplos de autenticación en PKCS #11, consulte Ejemplos de código para la biblioteca PKCS #11 para Client SDK 5 de AWS CloudHSM.

Autenticación con JCE: el proveedor de JCE de AWS CloudHSM admite inicios de sesión implícitos y explícitos. El método que más le convenga del caso de uso. Siempre que sea posible, recomendamos usar el inicio de sesión implícito, ya que el SDK gestionará automáticamente la autenticación si la aplicación se desconecta de su clúster y necesita volver a autenticarse. El inicio de sesión implícito también le permite proporcionar credenciales a su aplicación cuando use una integración que no le permita controlar el código de la aplicación. Para obtener más información sobre los métodos de inicio de sesión, consulte Paso 2: Proporcionar las credenciales al proveedor de JCE.

Autenticación con OpenSSL: con el motor dinámico de OpenSSL, las credenciales se proporcionan a través de variables de entorno. AWS CloudHSM recomienda almacenar de forma segura sus credenciales de HSM cuando la aplicación no las utilice. Si es posible, debe configurar su entorno para recuperar y configurar sistemáticamente estas variables de entorno sin necesidad de introducirlas manualmente. Para obtener más información sobre la autenticación con OpenSSL, consulte Instalar el motor dinámico de OpenSSL para Client SDK 5 de AWS CloudHSM.

Gestione eficazmente las claves de su aplicación.

Use los atributos de clave para controlar lo que pueden hacer las claves: al generar una clave, use los atributos de clave para definir un conjunto de permisos que permitan o denieguen a esa clave realizar tipos específicos de operaciones. Recomendamos que las claves se generen con la cantidad mínima de atributos necesarios para completar la tarea. Por ejemplo, una clave AES que se usa para el cifrado no debería tener permisos para encapsular claves fuera del HSM. Para obtener más información, consulte nuestras páginas de atributos de los siguientes SDK de cliente:

Cuando sea posible, almacene en caché los objetos de clave para minimizar la latencia: las operaciones de búsqueda de claves consultarán todos los HSM del clúster. Esta operación es costosa, y no escala según el número de HSM de su clúster.

  • Con PKCS #11, puede usar la API de C_FindObjects para encontrar claves.

  • Con JCE, puede buscar las claves mediante KeyStore.

Para optimizar el rendimiento, AWS recomienda que use comandos de búsqueda de claves (como Buscar claves de AWS CloudHSM por atributos con la KMU y Enumeración de claves de un usuario con la CLI de CloudHSM) solo una vez, durante el inicio de la aplicación, y que almacene en caché el objeto de clave devuelto en la memoria de la aplicación. Si necesita este objeto de clave más adelante, podrá recuperarlo de la memoria caché en lugar de consultarlo en cada operación, lo que aumentará considerablemente el rendimiento.

Emplee subprocesamiento múltiple.

AWS CloudHSM es compatible con aplicaciones de subprocesamiento múltiple, pero deberá tener en cuenta ciertos aspectos al trabajar con este tipo de aplicaciones.

Con PKCS #11, deberá inicializar la biblioteca PKCS #11 (llamando a C_Initialize) una sola vez. Debe asignar a cada proceso su propia sesión (C_OpenSession). No es recomendable usar la misma sesión en múltiples procesos.

Con JCE, el proveedor de AWS CloudHSM debe inicializarse solo una vez. No comparta instancias de objetos SPI entre procesos. Por ejemplo, los objetos Cipher, Signature, Digest, Mac, KeyFactory o KeyGenerator deben utilizarse solo en el contexto de su propio proceso.

Gestione los errores de limitación.

Es posible que se produzcan errores de limitación del HSM en las siguientes circunstancias:

  • El clúster no está escalado correctamente para gestionar los picos de tráfico.

  • El tamaño del clúster no tiene una redundancia de +1 durante los eventos de mantenimiento.

  • Las interrupciones en la zona de disponibilidad reducen el número de HSM disponibles en el clúster.

Consulte Limitación de HSM para obtener más información sobre la mejor manera de gestionar este escenario.

Para garantizar que su clúster tenga el tamaño adecuado y evitar limitaciones, AWS recomienda llevar a cabo una prueba de carga de su entorno con los picos de tráfico esperados.

Integre los reintentos en las operaciones del clúster.

AWS puede reemplazar su HSM por motivos operativos o de mantenimiento. Para que su aplicación sea resiliente en estas situaciones, AWS recomienda implementar lógica de reintentos en el lado del cliente en todas las operaciones que se enruten a su clúster. Es de esperar que los posteriores reintentos de las operaciones fallidas debido a las sustituciones se realicen correctamente.

Implemente estrategias de recuperación de desastres.

Puede que sea necesario desviar el tráfico de todo un clúster o región en respuesta a un evento. En las siguientes secciones se describen varias estrategias para ello.

Use emparejamiento de VPC para acceder a su clúster desde otra cuenta o región: puede utilizar emparejamiento de VPC para acceder a su clúster de AWS CloudHSM desde otra cuenta o región. Para obtener más información sobre la configuración, consulte ¿Qué es una conexión de emparejamiento de VPC? en la Guía de emparejamiento de VPC de Amazon. Una vez haya establecido las conexiones de emparejamiento y configurado los grupos de seguridad de forma adecuada, podrá comunicarse con las direcciones IP de los HSM de la misma manera que lo haría normalmente.

Conéctese a varios clústeres desde la misma aplicación: el proveedor de JCE, la biblioteca PKCS #11 y la CLI de CloudHSM en Client SD 5 permiten conectarse a varios clústeres desde la misma aplicación. Por ejemplo, puede tener dos clústeres activos, cada uno en una región distinta. Su aplicación puede conectarse a ambos a la vez y equilibrar la carga entre los dos como parte de su operativa normal. Si su aplicación no usa SDK 5 de cliente (el SDK más reciente), no podrá conectarse a varios clústeres desde una misma aplicación. Como alternativa, puede mantener otro clúster en funcionamiento y, en caso de que se produzca una interrupción regional, transferir el tráfico al otro clúster para minimizar el tiempo de inactividad. Consulte las páginas correspondientes para obtener más información:

Restaure un clúster a partir de una copia de seguridad: puede crear un clúster nuevo a partir de una copia de seguridad de un clúster existente. Para obtener más información, consulte Copias de seguridad de clústeres en el AWS CloudHSM.