Habilitación de Advanced Message Security (AMS) de gestor de colas
¿Qué es IBM MQ Advanced Message Security?
IBM® MQ Advanced Message Security amplía los servicios de seguridad de IBM MQ a fin de ofrecer cifrado a nivel de 'mensaje' para proteger los datos confidenciales, como por ejemplo información personal y transacciones financieras de gran valor. Hay dos enfoques a IBM MQ AMS, a los que denominamos AMS de aplicación y AMS de gestor de colas. Esta guía de aprendizaje se centra en AMS de gestor de colas.
AMS de gestor de colas proporciona las funciones siguientes:
- Seguridad completa sin tener que escribir código de seguridad complejo ni modificar o volver a compilar aplicaciones existentes
- Soporte para el cifrado y la firma digital de mensajes
- Tecnología de infraestructura de clave pública (PKI) para proporcionar autenticación, autorización, confidencialidad y servicios de integridad de datos para los mensajes
Visión general de la guía de aprendizaje
Diagrama: AMS de gestor de colas garantiza que los datos de mensajes no se modifican entre el momento en que se transfieren a una cola y el momento en que se recuperan.
Esta guía de aprendizaje pasa mensajes de texto sin formato a través de la red al gestor de colas. En un sistema de producción, se recomienda utilizar un canal habilitado para TLS para proteger el mensaje en tránsito.
Esta guía de aprendizaje le guiará por los pasos a seguir para configurar AMS de gestor de colas para el cifrado en una cola de IBM MQ de un gestor de colas de IBM Cloud. Comenzará transfiriendo y recuperando mensajes en texto sin formato para confirmar que los mensajes se colocan en la cola en texto sin formato. Luego habilitará el cifrado de AMS de gestor de colas, con lo que se asegura de que los mensajes de la cola estén cifrados. Luego comprobará que los mensajes de la cola están cifrados, asegurándose de que no pueden acceder a los datos del mensaje ni modificarlos usuarios o aplicaciones no autorizados.
Requisitos previos
Para continuar con esta guía de aprendizaje, es vital que tenga los requisitos previos siguientes:
-
Gestor de colas de IBM MQ on Cloud
Si todavía no tiene un gestor de colas de IBM MQ on Cloud, puede crear uno siguiendo la visita guiada aquí:
- Nota. El gestor de colas no debe tener ya TLS habilitado.
Después de haber seguido la visita guiada, o los pasos manuales que se proporcionan en la misma página, debe tener:
- Un gestor de colas MQ on Cloud
- Detalles de conexión descargados en un archivo connection_info.txt
- Consulte el Apéndice 1 que hay al final de esta guía de aprendizaje si no tiene este archivo
- Un nombre de usuario de administrador y una clave de API descargados en un archivo platformApiKey.json
- Consulte el Apéndice 2 que hay al final de esta guía de aprendizaje si no tiene este archivo
- Un nombre de usuario de aplicación y una clave de API descargados en un archivo apiKey.json
- Consulte el Apéndice 3 que hay al final de esta guía de aprendizaje si no tiene este archivo
-
Cliente de IBM MQ
Para completar esta guía de aprendizaje, necesitará la herramienta de línea de mandatos de IBM MQ 'runmqsc', así como las aplicaciones de ejemplo de IBM MQ 'amqsputc' y 'amqsgetc' instaladas y en la variable PATH. Si no tiene estos mandatos, puede conseguirlos mediante la instalación del Cliente IBM MQ. En el Apéndice 4 al final de esta guía de aprendizaje se detalla cómo hacerlo.
- Nota. El cliente IBM MQ solo está disponible para Windows y Linux
Configuración del entorno de terminal
-
Abra 2 ventanas de terminal
- Un terminal será el terminal de administración, que se utiliza para administrar el gestor de colas
- Un terminal será el terminal de apps, que se utiliza para representar una aplicación que se conecta al gestor de colas y que realiza las operaciones 'put' y 'get' de mensajes
-
Especifique los detalles del gestor de colas en el terminal de administración
El mandato
runmqsc
que utilizará más adelante necesita que se especifique una variable de entorno para identificar el gestor de colas remoto al que se debe conectar. En el terminal de administración, exporte la variable MQSERVER con el siguiente mandato:export MQSERVER="CLOUD.ADMIN.SVRCONN/TCP/<HOSTNAME>(<PORT>)"
<HOSTNAME>
- es 'hostname' en el archivo connection_info.txt<PORT>
- es 'listenerPort' en el archivo connection_info.txt
-
Especifique los detalles del gestor de colas en el terminal de apps
Los mandatos
amqsputc
yamqsgetc
que se utilizarán más adelante también necesitan que se establezca la variable de entorno para identificar el gestor de colas remoto al que deben conectarse. En el terminal de aplicaciones, exporte la variable MQSERVER con el siguiente mandato: En el terminal de aplicaciones, exporte la variable MQSERVER con el siguiente mandato:export MQSERVER="CLOUD.APP.SVRCONN/TCP/<HOSTNAME>(<PORT>)"
<HOSTNAME>
- es 'hostname' en el archivo connection_info.txt<PORT>
- es 'listenerPort' en el archivo connection_info.txt
-
Especifique el nombre de usuario de la app
Los mandatos
amqsputc
yamqsgetc
también necesitan que se establezca una variable de entorno para especificar el nombre de usuario que se debe utilizar. En el terminal de apps, exporte MQSAMP_USER_ID con el mandato siguiente:export MQSAMP_USER_ID="<APP_MQ_USER>"
<APP_MQ_USER>
- es 'mqUsername' en el archivo apiKey.json
-
Inhabilite AMS de aplicación en el terminal de apps
En esta guía de aprendizaje vamos a habilitar AMS de gestor de colas. Por lo tanto, tenemos que inhabilitar AMS de aplicación (a veces denominado AMS de cliente) de modo que solo el gestor de colas realice el cifrado y descifrado de AMS, no el cliente. En el terminal de apps:
- Cliente IBM MQ 7.5:
export AMQ_DISABLE_CLIENT_AMS=TRUE
- Cliente IBM MQ 8.0 en adelante:
export MQS_DISABLE_ALL_INTERCEPT=TRUE
- Cliente IBM MQ 7.5:
Crear una cola alias, destinada a la cola predeterminada
En esta sección, creará una cola alias destinada a la cola predeterminada. Una vez habilitado AMS de QM, los interceptores de AMS se activarán cuando se ejecute una operación 'put' o 'get' en la cola predeterminada. Por lo tanto, a pesar del hecho de que los mensajes están cifrados en la cola, el mensaje se puede leer como texto sin formato cuando se recupera. Para demostrar que los mensajes están cifrados, podemos utilizar una cola alias. La recuperación de mensajes a través de la cola alias no activará los interceptores en la cola predeterminada, por lo que el mensaje se recuperará tal como está, sin descifrar, y ofrecerá una vista precisa de si el mensaje es texto sin formato o si está cifrado.
- Vaya al terminal de administración
- Ejecute
runmqsc
para conectar con el gestor de colas remoto
runmqsc -c -u <ADMIN_MQ_USER> -w60 <QUEUE_MANAGER_NAME>
<ADMIN_MQ_USER>
- es 'mqUsername' en el archivo platformApiKey.json<QUEUE_MANAGER_NAME>
- es 'queueManagerName' en el archivo connection_info.txt-c
informa a runmqsc que debe conectar con un gestor de colas remoto mediante la variable MQSERVER
- El terminal le solicitará una Contraseña
- Es su <ADMIN_API_KEY> = 'apiKey' en el archivo platformApiKey.json
- Ahora el terminal quedará a la espera de una entrada
- Crear una cola alias destinada a la cola predeterminada
DEFINE QALIAS (DEV.ALIAS.QUEUE.1) TARGET (DEV.QUEUE.1)
- DEV.ALIAS.QUEUE.1 es nuestro nombre para la cola alias
- DEV.QUEUE.1 es la cola predeterminada que estamos utilizando en esta guía de aprendizaje
Prueba de la cola alias antes de habilitar AMS de gestor de colas
Para demostrar que la cola de alias funciona correctamente y que los mensajes están actualmente en la cola predeterminada en texto sin formato, ejecutará una operación 'put' de un mensaje en la cola predeterminada y una operación 'get' de un mensaje en la cola alias.
- Vaya al terminal de apps
- Ejecute amqsputc para transferir un mensaje a la cola predeterminada
amqsputc DEV.QUEUE.1
- El terminal le solicitará una Contraseña
- Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
- Ahora el Terminal estará a la espera de una entrada. Escriba un mensaje
- Pulse la Tecla Intro dos veces para salir de amqsputc
- Pulse la Tecla Intro dos veces para salir de amqsputc
- Ejecute amqsgetc sobre la cola alias para obtener los mensajes de la cola predeterminada
amqsgetc DEV.ALIAS.QUEUE.1
- DEV.ALIAS.QUEUE.1 es nuestro nombre para la cola alias
- El terminal le solicitará una Contraseña
- Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
- Ahora el terminal mostrará los mensajes de la cola predeterminada
- Tenga en cuenta que el mensaje vuelve en texto sin formato, ya que así es como se almacena en la cola predeterminada.
Selección de un certificado que se utilizará para el cifrado AMS
Se debe configurar un canal de gestor de colas para cifrar mensajes. MQ on Cloud viene con un certificado predeterminado proporcionado por Let's Encrypt, que utilizaremos para cifrar los mensajes. Siga estos pasos para configurar un canal de gestor de colas para AMS de gestor de colas:
- En IBM Cloud (http://cloud.ibm.com/) busque el gestor de colas de IBM MQ on Cloud que ha creado en la visita guiada.
- Seleccione el separador Almacén de claves
- En el certificado predeterminado, pulse en los 3 puntos
- Pulse Gestionar
- Seleccione Utilizar este certificado para el gestor de colas AMS
- Seleccione el canal de aplicación CLOUD.APP.SVRCONN
- Pulse Siguiente
- Lea el aviso y, a continuación, marque Entiendo y pulse Guardar
Ahora ha habilitado AMS de gestor de colas para el canal seleccionado y ha seleccionado el certificado que se va a utilizar para el cifrado
- Pulse Copiar detalles y pegue en el editor de texto que elija. Guárdelo como default_cert.txt ya que necesitará el contenido del campo DN más adelante.
Creación de una política para habilitar el cifrado de AMS
Ahora configurará la política de seguridad en la cola individual para habilitar AMS. Identificará que realizaremos el cifrado, pero no la firma. No se realiza ningún cifrado ni firma hasta que la política de seguridad esté configurada en las colas relevantes.
- En el terminal de administración
- El terminal todavía debe estar dentro de runmqsc. Si no es así, ejecute runmqsc sobre el gestor de colas, tal como ha hecho anteriormente
- Cree la política con el mandato siguiente:
SET POLICY (DEV.QUEUE.1) ENCALG (AES256) RECIP ('<SUBJECT_DN>')
- DEV.QUEUE.1 es la cola predeterminada que estamos utilizando en esta guía de aprendizaje
- AES256: el cifrado que utilizamos en esta guía de aprendizaje. Encontrará otros algoritmos aquí
<SUBJECT_DN>
- es el 'Subject DN' del archivo default_cert.txt, creado en el último paso de 'Seleccionar un certificado'- Nota: Las comillas simples que rodean el valor Subject DN son obligatorias
- Para salir de runmqsc, escriba:
END
Prueba de la cola ahora que AMS del gestor de colas está habilitado
- Dentro del terminal de apps
- Ejecute amqsputc para transferir un mensaje a la cola predeterminada
amqsputc DEV.QUEUE.1
- El terminal le solicitará una Contraseña
- Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
- Ahora el Terminal estará a la espera de una entrada. Escriba un mensaje
- Pulse Especificar clave dos veces para salir de amqsputc
- Ejecute amqsgetc sobre la cola alias para obtener los mensajes de la cola predeterminada
amqsgetc DEV.ALIAS.QUEUE.1
- DEV.ALIAS.QUEUE.1 es nuestro nombre para la cola alias
- El terminal le solicitará una Contraseña
- Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
- Ahora el terminal mostrará los mensajes cifrados de la cola predeterminada
- Nota: el mensaje no se muestra en texto sin formato. Esto se debe a que el mensaje está cifrado en la cola predeterminada.
Conclusión
Ha completado la guía de aprendizaje. Ha habilitado AMS de IBM MQ en una cola y ha demostrado que esto garantiza que los mensajes almacenados en la cola especificada estén cifrados.
Resolución de problemas
- amqsputc returns reason code 2063
- Esto puede suceder si no ha seleccionado un certificado para el canal
- Siga el apartado sobre 'Selección de un certificado que utilizar para el cifrado de AMS'
- amqsputc returns reason code 2035
- Esto puede suceder si no ha ejecutado
export MQS_DISABLE_ALL_INTERCEPT=TRUE
- Último paso de 'Configuración del entorno de terminal'
- Esto puede suceder si no ha ejecutado
Apéndice
Apéndice 1: connection_info.txt
Para recuperar el archivo connection_info.txt que contiene detalles de conexión del gestor de colas:
- Inicie sesión en la instancia de servicio de IBM Cloud pulsando en el servicio relevante que se muestra en la tabla
- Se abrirá la vista del gestor de colas. Seleccione el gestor de colas del que desea recuperar la información de conexión
- Pulse Información de conexión
- Descargue este archivo en 'formato de texto JSON'
Apéndice 2: platformApiKey.json
Para crear o restablecer la clave de api de administrador:
- Inicie sesión en la instancia de servicio de IBM Cloud pulsando en el servicio relevante que se muestra en la tabla
- Se abrirá la vista del gestor de colas. Seleccione el gestor de colas del que desea recuperar la información de conexión
- A continuación, seleccione el separador Administración
- Ahora pulse Restablecer clave de API de IBM Cloud
- Nota: la clave de API de administración anterior para este nombre de usuario de MQ dejará de ser válida
- Nota: Si el botón dice Crear clave de API de IBM Cloud, significa que no ha creado una clave de API de esta manera antes. Pulse el botón Crear clave de API de IBM Cloud.
- Pulse Descargar para descargar platformApiKey.json que contiene un nombre de usuario admin y una clave de api
Apéndice 3: apiKey.json
Para crear una nueva clave de api de aplicación:
- Inicie sesión en la instancia de servicio de IBM Cloud pulsando en el servicio relevante que se muestra en la tabla
- Se abrirá la vista del gestor de colas. Seleccione el separador Credenciales de aplicación
- Ahora pulse en los 3 puntos junto a la aplicación que utilizará para la guía de aprendizaje de AMS
- Pulse Añadir nueva clave de API
- Nota: Las claves de API de app existentes seguirán funcionando
5. Pulse Descargar para descargar apiKey.json que contiene un nombre de usuario de aplicación
y una clave de api
Apéndice 4: Cliente C de IBM MQ
Si no tiene la herramienta de línea de mandatos del Cliente IBM MQ y los ejemplos (runmqsc, amqsputc, amqsgetc), puede descargarlos desde aquí
- Seleccione el paquete más reciente como se muestra a continuación, la última versión en el momento de redactar esto es la 9.0.5
- Seleccione el cliente redistribuible 'IBM MQC para [Su sistema operativo]' marcando el recuadro de la izquierda del paquete tal como se muestra a continuación. Debería contener Redist en el nombre de archivo. Esta guía de
aprendizaje se ha creado utilizando el sistema operativo Linux Ubuntu
- Seleccione descargar por HTTPS, esto le permitirá descargar el cliente directamente a través de su navegador, como se muestra a continuación
- Nota: si no tiene esta opción, inténtelo con otro navegador.
- Después de pulsar continuar, se le redirigirá a la pantalla que se muestra a continuación. Pulse en el símbolo resaltado con un círculo rojo para comenzar la descarga
- Una vez descargado, extraiga el archivo a un directorio de su elección
<PATH_TO_MQCLIENT_DIR>
tar -xvzf <IBM-MQC-Redist>.tar.gz <PATH_TO_MQCLIENT_DIR>
- Añada mandatos a la variable path
export PATH=$PATH:<PATH_TO_MQCLIENT_DIR>/bin:<PATH_TO_MQCLIENT_DIR>/samp/bin