Fixpack 4

Sensor de host de Docker

El sensor de host de Docker (DHS) descubre los hosts de Docker, atributos de host, contenedores, trabajo en red, imagen e información relacionada con el almacenamiento.

Nombre del sensor utilizado en la GUI y los registros

DockerHostSensor

Elementos descubiertos por el sensor

El sensor descubre los siguientes elementos:
  • Host de Docker
  • Contenedores de Docker
  • Volúmenes de Docker
  • Redes de Docker
  • Imágenes de Dockers

En la Consola de Gestión de descubrimiento y el Data Management Portal, un host de Docker se representa mediante un icono con un diseño de ballena Docker de color azul y el contenedor de Docker utilizando cuatro contenedores de transporte apilados cuadrados.

El Sensor de host de Docker utiliza las API de REST para recuperar la información relacionada con el descubrimiento de la máquina de host de Docker que ejecuta el proceso o la aplicación de daemon 'dockerd'. Los datos recuperados ante todo incluyen datos de atributos que son necesarios para adaptarse a las reglas de denominación y crear objetos de modelo válidos.

Requisitos previos

  • El daemon/aplicación de Docker se ejecuta en una máquina Linux de destino
  • Para conseguir un descubrimiento satisfactorio del host de Docker, el soporte de REST debe habilitarse en la máquina de destino
  • Deben definirse los puertos para la comunicación del servicio web. De forma predeterminada, se utiliza el valor de puerto resultante del proceso GenericServerSensor. Si el host de Docker utiliza la correlación de puertos o un puerto no estándar, modifique el valor de la propiedad portList en el perfil de descubrimiento. Para obtener detalles, consulte 'Configuración del perfil de descubrimiento'
  • Un conjunto único de certificado TLS es aplicable para la comunicación de TADDM a todos los hosts de Docker
  • Habilitar o inhabilitar TLS para el descubrimiento tendrá un comportamiento uniforme en todos los hosts de Docker definidos dentro del ámbito
    • Es aplicable a todos los host de Docker o a ninguno

En la Consola de Gestión de descubrimiento y el Data Management Portal, un host de Docker se representa mediante un icono con un diseño de ballena Docker de color azul y el contenedor de Docker utilizando cuatro contenedores de transporte apilados cuadrados.

El Sensor de host de Docker utiliza las API de REST para recuperar la información relacionada con el descubrimiento de la máquina de host de Docker que ejecuta el proceso o la aplicación de daemon 'dockerd'. Los datos recuperados ante todo incluyen datos de atributos que son necesarios para adaptarse a las reglas de denominación y crear objetos de modelo válidos.

Cuestiones de seguridad

No se requiere ninguna entrada de lista de acceso específica. Para los detalles de seguridad basados en TLS, consulte Conexión al host de Docker a continuación:

Conexión al host de Docker

El Sensor de host de Docker puede descubrir datos del host de Docker a través de 2 modalidades: modalidad no TLS y modalidad TLS.

Modalidad no TLS

La modalidad no TLS es la modalidad predeterminada. Recupera datos mediante servicios web y no requiere autenticación. Esta modalidad se recomienda en redes privadas o en despliegues de nubes privadas en locales del cliente.

Modalidad TLS

La modalidad TLS es una modalidad segura de comunicación con el host de Docker. Verifica los certificados TLS instalados en TADDM y el host de Docker de destino. Para utilizar esta modalidad, debe establecer la propiedad enableTLS en true, así como configurar las vías de acceso de certificados definidas en el perfil de descubrimiento. Para más detalles, consulte 'Configuración del perfil de descubrimiento'. Para generar manualmente los certificados TLS para TADDM y el host de Docker, consulte 'Generación manual de certificado TLS para no UCP'.

Objetos de modelo con atributos asociados

El Sensor de host de Docker crea objetos de modelos con atributos asociados. Los atributos indican el tipo de información que el sensor recoge sobre los recursos del host de Docker en su entorno de TI.

El sensor crea los siguientes objetos de modelo. Los atributos asociados con cada objeto de modelo se muestran bajo el nombre del objeto de modelo.

app.docker.dockerhost.DockerHost

  • Nombre
  • VersionString
  • DockerContainers
  • DockerImages
  • DockerNetworks
  • DockerVolumes
  • Host
  • XA

    o Architecture

    o KernelVersion

    o OperatingSystem

    o OSType

    o RunningContainers

    o StoppedContainers

    o TotalContainers

app.docker.dockerhost.DockerContainer

  • Nombre
  • Padre
  • RuntimeProcesses
  • DockerContainerStatus
  • DockerImages
  • DockerNetworks
  • DockerVolumes

app.docker.dockerhost.DockerImage

  • DockerHost
  • ImageName
  • DockerContainer

app.docker.dockerhost.DockerNetwork

  • Nombre
  • SubnetAddress
  • DockerHost
  • DockerContainer

app.docker.dockerhost.VolumenDocker

  • Nombre
  • DockerHost
  • DockerContainer

sys.RuntimeProcess (aplicable a procesos dentro de un contenedor)

  • PID
  • Mandato
  • PPID
  • Usuario
  • CmdLine (hace referencia al mandato completo)

Configuración del sensor

Antes de utilizar el Sensor de host de Docker, debe configurarlo.

Configuración del perfil de descubrimiento:

De forma predeterminada, el Sensor de host de Docker está habilitado para un descubrimiento de nivel 3. Una vez habilitado, de forma predeterminada se ejecuta en una modalidad no TLS. El sensor descubre todos los contenedores de host de Docker, incluyendo los que no están en ejecución. Para descubrir solo los contenedores que se están ejecutando o, para conmutar a la modalidad TLS, cree un perfil de descubrimiento para el Sensor de host de Docker y personalice los valores del sensor.

Para crear un perfil de descubrimiento, complete los pasos indicados a continuación:
Ejemplo:
  1. En el recuadro Descubrimiento de la Consola de Gestión de descubrimiento, pulse Perfiles de descubrimiento.
  2. En la ventana Perfiles de descubrimiento, pulse Nuevo.
  3. En la ventana Crear nuevo perfil, escriba el nombre y descripción del perfil. En la lista Clonar perfil existente, seleccione Descubrimiento de Nivel 3 y pulse Aceptar
  4. En la pestaña Configuración de sensor, seleccione el sensor DockerHostSensor y pulse Nuevo.
  5. En la ventana Crear configuración, escriba el nombre y la descripción para la configuración y marque el recuadro de selección Habilitar configuración.
  6. En la sección Configuración de la ventana Crear configuración, pulse discoverNonRunningContainers. A continuación, efectúe una doble pulsación en el campo Valor de la fila y escriba false.
  7. Pulse Aceptar para volver a la ventana Perfiles de descubrimiento.
  8. En la ventana Perfiles de descubrimiento, pulse Guardar.

Propiedades

Puede modificar las siguientes propiedades y atributos:

ListaPuertoPuerto

Hace referencia a los puertos que se van a utilizar para la comunicación del servicio web en el host de Docker. De forma predeterminada, se utiliza el valor de puerto devuelto por el proceso GenericServerSensor. Si el host de Docker utiliza la correlación de puertos o, puerto no estándar (o, lista de puertos separada por comas), especifique el valor en consonancia.

enableTLS

Hace referencia a la modalidad de conexión entre TADDM y el host de Docker.

El valor predeterminado es false.

vía_acceso

Vía de acceso local en el servidor de descubrimiento TADDM donde se colocan todos los certificados TLS/seguridad.

nombreArchivoCa

Nombre de archivo de entidad emisora de certificados.

nombreArchivoCero

Nombre de archivo de certificado de cliente

nombreArchivoClaves

Nombre de archivo de clave de cliente

Habilitar soporte de REST en el host de Docker

En un host de Docker es necesario realizar los siguientes cambios de configuración:

  1. Habilite las API de REST en el host de Docker.
    • Inicie la sesión en la máquina host de Docker utilizando las credenciales 'root'.
    • Cree/Actualice el siguiente archivo en el host de Docker:
      vim /etc/systemd/system/docker.service.d/remote-api.conf

      con el siguiente contenido:

      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd -H tcp://<DockerHost-IP>:2376 -H unix:///var/run/docker.sock
  2. Reinicie el daemon 'dockerd' y compruebe el estado mediante la línea de mandatos:
    service docker restart
    ps -aef | grep -i dockerd

Generación manual de certificado TLS para no UCP

En caso de que la modalidad TLS esté habilitada y que los certificados no estén disponibles, puede generar manualmente estos certificados en una máquina Linux tal como se muestra a continuación.

A. Docker :

En una máquina host de Docker, genere claves públicas y privadas CA por el procedimiento por etapas mencionado a continuación. Recuerde que el ejemplo de clave siguiente es únicamente un ejemplo y debe suministrar valores según sus estándares de seguridad.

  1. Inicie la sesión en la máquina host de Docker utilizando 'root', u otro usuario que tenga privilegios de superusuario.
  2. Cree un directorio local utilizando mandatos.
    mkdir docker_certificates
    cd docker_certificates
  3. Ejecute mandato:
    a. openssl genrsa -aes256 -out ca-key.pem 4096
    • 1. Escriba cualquier frase de contraseña para generar ca-key.pem y almacénela de modo seguro
    b. openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
    • 1. Escriba la contraseña entrada en el paso (3.a.1)
    • 2. Escriba los valores solicitados
    • 3. Escriba host de Docker 'domain.com' en Fqdn
  4. Utilizando la entidad emisora de certificados, cree una clave de servidor y una solicitud de firma de certificado (CSR) mediante mandatos.
    a. openssl genrsa -out server-key.pem 4096
    b. openssl req -subj '/CN=$HOST' -sha256 -new -key server-key.pem -out server.csr
    • 1. Donde, $HOST es el nombre de host del host de Docker.
  5. Las conexiones TLS pueden realizarse a través de la dirección IP o el nombre DNS, las direcciones IP necesitan especificarse cuando se crea el certificado mediante mandato:
    a. echo subjectAltName = DNS:$HOST,IP:<DockerHost-IP> > extfile.cnf
    • 1. donde, $HOST es el nombre de host del host de Docker.
    a.echo extendedKeyUsage = serverAuth >> extfile.cnf
  6. Ahora, genere la clave mediante mandato:
    a.openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
    -CAcreateserial -out server-cert.pem -extfile extfile.cnf
    • 1. Escriba la contraseña proporcionada en el paso (3.a.1).
  7. Elimine los archivos no necesarios y establezca los permisos correctamente:
    rm -v server.csr
    chmod -v 0400 ca-key.pem server-key.pem
    chmod -v 0444 ca.pem server-cert.pem
  8. Inicie el daemon de Docker utilizando la verificación TLS:
    a.dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=0.0.0.0:2376
    Nota: En el caso de soporte de TLS para varios hosts Docker , ejecute los pasos 1-3 SOLO una vez, y los pasos 4-8 deben ejecutarse por separado para cada host para generar los certificados TLS necesarios para los hosts.

B. Máquina TADDM

Los certificados de cliente TLS para la máquina TADDM (correspondientes a los generados por el host de Docker) se pueden generar manualmente. En la máquina de host de TADDM, genere claves públicas y privadas de CA siguiendo el procedimiento por etapas indicado a continuación:

  1. Inicie la sesión en la máquina TADDM utilizando las credenciales de usuario 'root'
  2. Cree un directorio local utilizando mandatos
    a. mkdir taddm_certificates
    b. cd taddm_certificates
  3. Utilizando la entidad emisora de certificados, cree una clave de servidor y una solicitud de firma de certificado (CSR) mediante mandatos:
    a. openssl genrsa -out key.pem 4096
    b. openssl req -subj '/CN=client' -new -key key.pem -out client.csr
    c. echo extendedKeyUsage = clientAuth >> extfile.cnf
  4. Firme la clave privada mediante mandato:
    a. openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
    • 1. proporcione ca.pem y ca-key.pem generadas en la sección A: paso (3.a, 3.b)

    • 2. Escriba la contraseña proporcionada en la sección A: paso (3.a.1)

  5. Elimine los archivos no necesarios y establezca los permisos correctamente:
    a. rm -v client.csr
    b. chmod -v 0400 ca-key.pem key.pem
    c. chmod -v 0444 ca.pem cert.pem
    d. cd ../
    e. chown -R taddmusr:taddmusr taddm_certificates
    f. chown -R taddmusr:taddmusr taddm_certificates
  6. Compruebe la conexión TLS con la máquina de DockerHost utilizando los siguientes mandatos:
    curl https://<Dockerhost-IP>:<Docker-Port>/_ping --cert ./cert.pem --key key.pem --cacert ca.pem
    e.g. curl https://<Dockerhost-IP>:<2376>/_ping --cert ./cert.pem --key key.pem --cacert ca.pem
Fixpack 6

Generación manual de certificado TLS para UCP

  1. Inicie la sesión en la máquina TADDM utilizando las credenciales de usuario 'root'.
  2. Cree un directorio local utilizando mandatos:
    a. mkdir taddm_certificates
    b. cd taddm_certificates
  3. Valide el URL de UCP. Debe estar activo y en ejecución. Por ejemplo: https://x.x.x.x:443
  4. Inicie sesión en la interfaz de usuario de UCP de Docker.
  5. Descargue los certificados desde la interfaz de usuario de UCP:
    • Navegue hasta admin > Mi perfil > Paquetes de cliente > Paquete de cliente nuevo > Generar paquete de cliente.
  6. Descargue el archivo zip de certificados.
  7. Copie el archivo zip de certificados en el servidor de TADDM en el directorio taddm_certificates creado en el paso 2.
  8. Descomprima el archivo zip de certificados en el servidor de TADDM en el directorio taddm_certificates.
  9. Ejecute el siguiente mandato para cambiar una propiedad de certificados de TADDM:
    chown -R taddmusr:taddmusr taddm_certificates

Resolución de problemas del sensor

Este tema describe los problemas más comunes que se producen en el Sensor de host de Docker y ofrece soluciones a dichos problemas.

El sensor falla con la descripción ` CTJTD1585E Error – El host de Docker no es accesible en ninguno de estos puertos:`

Problema : Es posible que la API web remota no esté habilitada en el host de Docker.

SoluciónValide utilizando 'ps - eaf | grep dockerd' para ver qué puerto utiliza el proceso de daemon 'dockerd'. La salida debe parecerse a lo siguiente:

/usr/bin/dockerd -H tcp://9.158.143.51:2376 -H unix:///var/run/docker.sock

Para habilitar el soporte de API remoto, consulte 'Habilitar soporte de REST' en el Host de Docker.

El sensor falla con la descripción `CTJTD1587E/ CTJTD1590E Error – Las configuraciones de TLS entre el sensor del host de Docker y el nodo remoto no coinciden:’

Problema: El problema se debe a la no coincidencia en la configuración para el sensor de host de Docker y el nodo remoto del host de Docker. TLS puede estar habilitado en uno e inhabilitado en el otro.

Solución: Valide y configure correctamente la propiedad enableTLS para el sensor de host de Docker.

El sensor falla con la descripción ` CTJTD1589E Error – Hay un problema con el directorio del almacén de vías de acceso de TLS`

Problema: El directorio de almacén de vías de acceso configurado en la configuración del sensor de Host de Docker es inválido o le faltan los permisos correctos.

Solución: Compruebe si el directorio de almacén de vías de acceso configurado existe en el servidor de descubrimiento de TADDM. Si el directorio existe, compruebe que se la hayan otorgado los permisos correctos.

drwxr-xr-x.  2 taddmusr taddmusr 4096 Nov 24 08:28 taddm_certificates

El sensor falla con la descripción ` Anomalía: Código de error HTTP: 503`

Problema: En el caso de que TADDM no pueda conectarse a través de REST al daemon/aplicación de Docker en el nodo de destino, el sensor puede fallar con un mensaje de error.

Solución: Si el proceso/aplicación dockerd está ejecutándose correctamente, es importante validar el puerto específico en el que el daemon/proceso está a la escucha utilizando el mandato ps - Aef | grep dockerd. El puerto obtenido de la salida debe coincidir con el que TADDM está intentando conectarse.

El sensor falla con un `CTJTD3520E Error – Se ha producido un error de almacenamiento. ID de servidor: `

Problema: En el caso de que falten dependencias de jars de java en la conversión del conjunto de caracteres, el sensor puede fallar con un mensaje de error de almacenamiento mostrado anteriormente.

Solución: Compruebe si falta algún jar de Java y coloque el que corresponda en el directorio siguiente:

/opt/IBM/taddm/dist/lib/jdbc 

Ejecute de nuevo el descubrimiento.