IBM Cloud Docs
Habilitación de Advanced Message Security (AMS) de gestor de colas

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

Imagen que muestra que los mensajes almacenados en una cola del gestor de colas se cifran utilizando AMS de gestor de colas.

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:

  1. 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í:

    Iniciación a IBM MQ on Cloud

    • 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
  2. 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

  1. 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
  2. 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
  3. Especifique los detalles del gestor de colas en el terminal de apps

    Los mandatos amqsputc y amqsgetc 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
  4. Especifique el nombre de usuario de la app

    Los mandatos amqsputc y amqsgetc 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
  5. 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

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.

  1. Vaya al terminal de administración
  2. 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
  1. El terminal le solicitará una Contraseña
    • Es su <ADMIN_API_KEY> = 'apiKey' en el archivo platformApiKey.json
  2. Ahora el terminal quedará a la espera de una entrada
  3. 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

Imagen que muestra 'runmqsc' seguido de la entrada de contraseña y el mandato 'DEFINE QALIAS' que crea una cola de alias dirigida a la cola predeterminada

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.

  1. Vaya al terminal de apps
  2. Ejecute amqsputc para transferir un mensaje a la cola predeterminada
    • amqsputc DEV.QUEUE.1
  3. El terminal le solicitará una Contraseña
    • Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
  4. Ahora el Terminal estará a la espera de una entrada. Escriba un mensaje
    • Pulse la Tecla Intro dos veces para salir de amqsputcImagen que muestra 'amqsputc' seguido de la entrada de contraseña y una entrada de mensaje en la cola predeterminada
  5. 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
  6. El terminal le solicitará una Contraseña
    • Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
  7. Ahora el terminal mostrará los mensajes de la cola predeterminada

Imagen que muestra 'amqsgetc' seguido de la entrada de contraseña y la recuperación de mensajes en la cola de alias que está dirigida hacia 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:

  1. En IBM Cloud (http://cloud.ibm.com/) busque el gestor de colas de IBM MQ on Cloud que ha creado en la visita guiada. Imagen que muestra la lista de gestores de colas
  2. Seleccione el separador Almacén de claves Imagen que muestra el separador del almacén de claves del gestor
  3. En el certificado predeterminado, pulse en los 3 puntosImagen que muestra los 3 puntos del certificado predeterminado en el almacén de claves
  4. Pulse GestionarImagen que muestra el separador de gestión del certificado predeterminado en el almacén de claves
  5. Seleccione Utilizar este certificado para el gestor de colas AMSImagen que muestra el conmutador para habilitar el certificado predeterminado para el gestor de colas AMS
  6. Seleccione el canal de aplicación CLOUD.APP.SVRCONNImagen que muestra 'seleccionar canales' para el certificado AMS predeterminado habilitadoImagen que muestra el canal de aplicación predeterminado que se ha seleccionado para habilitar AMS en el mismo
  7. Pulse SiguienteImagen que muestra 1 canal seleccionado para el certificado AMS predeterminado habilitado
  8. Lea el aviso y, a continuación, marque Entiendo y pulse GuardarImagen que muestra un recuadro de selección que acepta que los canales existentes que utilizan el certificado se sobrescribirán Ahora ha habilitado AMS de gestor de colas para el canal seleccionado y ha seleccionado el certificado que se va a utilizar para el cifradoLa imagen que muestra que el símbolo AMS está habilitado
  9. 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. Imagen que muestra que el símbolo AMS está habilitado

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.

  1. En el terminal de administración
  2. 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
  3. 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
  1. Para salir de runmqsc, escriba:
    • END

Imagen que muestra los mandatos introducidos en la línea de mandatos para establecer la política

Prueba de la cola ahora que AMS del gestor de colas está habilitado

  1. Dentro del terminal de apps
  2. Ejecute amqsputc para transferir un mensaje a la cola predeterminada
    • amqsputc DEV.QUEUE.1
  3. El terminal le solicitará una Contraseña
    • Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
  4. Ahora el Terminal estará a la espera de una entrada. Escriba un mensaje
    • Pulse Especificar clave dos veces para salir de amqsputc
  5. 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
  6. El terminal le solicitará una Contraseña
    • Es su <APP_API_KEY> = 'apiKey' en el archivo apiKey.json
  7. Ahora el terminal mostrará los mensajes cifrados de la cola predeterminada

Imagen que muestra los pasos dados en esta sección, incluyendo la salida de amqsgetc en la cola de alias que muestra el mensaje cifrado en 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

Imagen que muestra el código de error 2063

Imagen que muestra el código de error 2035

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:

  1. Inicie sesión en la instancia de servicio de IBM Cloud pulsando en el servicio relevante que se muestra en la tabla Imagen que muestra la instancia de servicio
  2. Se abrirá la vista del gestor de colas. Seleccione el gestor de colas del que desea recuperar la información de conexión Imagen que muestra la lista de gestores de colas
  3. Pulse Información de conexiónImagen de información de conexión del gestor de colas
  4. Descargue este archivo en 'formato de texto JSON'

Apéndice 2: platformApiKey.json

Para crear o restablecer la clave de api de administrador:

  1. Inicie sesión en la instancia de servicio de IBM Cloud pulsando en el servicio relevante que se muestra en la tabla Imagen que muestra la instancia de servicio
  2. Se abrirá la vista del gestor de colas. Seleccione el gestor de colas del que desea recuperar la información de conexión Imagen que muestra la lista de gestores de colas
  3. A continuación, seleccione el separador AdministraciónImagen que muestra el separador Administración del gestor de colas resaltado
  4. 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

Imagen que muestra el botón de restablecimiento de clave de API de administración resaltado

  • 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.
  1. Pulse Descargar para descargar platformApiKey.json que contiene un nombre de usuario admin y una clave de apiImagen que muestra el botón Descargar para la nueva clave de API de administración resaltado

Apéndice 3: apiKey.json

Para crear una nueva clave de api de aplicación:

  1. Inicie sesión en la instancia de servicio de IBM Cloud pulsando en el servicio relevante que se muestra en la tabla Imagen que muestra la instancia de servicio
  2. Se abrirá la vista del gestor de colas. Seleccione el separador Credenciales de aplicaciónImagen que muestra la lista de gestores de colas con Permisos de aplicación resaltado
  3. Ahora pulse en los 3 puntos junto a la aplicación que utilizará para la guía de aprendizaje de AMSImagen que muestra la lista de permisos de aplicación establecidos actualmente
  4. Pulse Añadir nueva clave de API
  • Nota: Las claves de API de app existentes seguirán funcionando

Imagen que muestra Añadir nueva clave de API resaltado para una aplicación5. Pulse Descargar para descargar apiKey.json que contiene un nombre de usuario de aplicación y una clave de apiImagen que muestra el botón Descargar con Nueva clave de API de aplicación resaltado

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í

  1. 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 Imagen que muestra las versiones de cliente de IBM MQ
  2. 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 Imagen que muestra la selección del cliente de MQ C redistribuible compatible con un sistema operativo
  3. Seleccione descargar por HTTPS, esto le permitirá descargar el cliente directamente a través de su navegador, como se muestra a continuación Imagen que muestra diversas opciones de descarga con HTTPS seleccionado
    • Nota: si no tiene esta opción, inténtelo con otro navegador.
  4. 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 Pulse en el icono indicado con un círculo rojo
  5. 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>
  6. Añada mandatos a la variable path
    • export PATH=$PATH:<PATH_TO_MQCLIENT_DIR>/bin:<PATH_TO_MQCLIENT_DIR>/samp/bin