
Funciones idempotentes para las API REST de IBM Security Appliance. Actualmente cubre los appliances ISAM e ISDS.
Este repositorio contiene código Python para gestionar IBM Security Appliances mediante sus respectivas API REST. El appliance ISAM es el que tiene el código más maduro.
El código para el appliance ISDS está en desarrollo.
El código para el appliance ISVG es nuevo (probado solo con 10.0.1.0 y superiores).
Se requiere Python v3.9 o superior para este paquete.
Se requieren los siguientes paquetes de Python:
Los siguientes paquetes de Python son opcionales:
Los appliances deben tener una dirección ip definida para su LMI. Esto puede significar que los appliances hayan completado su configuración inicial con la aceptación de la licencia.
Estos cambios son compatibles con versiones anteriores. Por defecto no se verifica, pero siempre se muestra un aviso:
La verificación de certificados ha sido deshabilitada. Python NO está verificando el certificado SSL
del appliance host y los mensajes InsecureRequestWarning están
siendo suprimidos para el siguiente host:
https://{0}:{1}
Para utilizar la verificación de certificados:
1. Cuando el certificado sea de confianza en su entorno Python:
Cree todas las instancias de ISAMAppliance con verify=True o establezca
la variable de entorno IBMSECLIB_VERIFY_CONNECTION=True.
2. Cuando el certificado no sea aún de confianza en su entorno Python:
Cree todas las instancias de ISAMAppliance con el parámetro verify
establecido a la ruta completa de un paquete de CA.
Consulte la siguiente URL para más detalles:
https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification
Para remediar esta advertencia de validación de certificado, considere las instrucciones siguientes:
Uso correcto:
Si tiene el certificado en disco en alguna ubicación, cree la instancia de ISAMAppliance con:
ISAMAppliance(…, verify=<ruta al certificado>)
Puede obtenerlo del appliance usando un comando como:
openssl s_client -connect ${HOSTNAME}:${PORT} </dev/null 2>/dev/null | openssl x509 -outform pem > isamAppliance.pem
Si el certificado ya es de confianza en su entorno Python, cree la instancia de ISAMAppliance con:
ISAMAppliance(…, verify=True)
o establezca la variable de entorno: IBMSECLIB_VERIFY_CONNECTION=true
Si recibe errores sobre el nombre de host que no coincide con el certificado:
Esto podría verse así:
<stack trace>
…
raise CertificateError("hostname %r doesn't match %r" % (hostname, dnsnames[0]))
urllib3.util.ssl_match_hostname.CertificateError: hostname '192.168.42.111' doesn't match 'appliance.ibm.com'
Asegúrese de que el nombre de host utilizado al crear la instancia de su ISAMAppliance coincida con el Subject Alternative Name del certificado.
Compruébelo con:
openssl x509 -in <archivo-pem-del-cert> -text
Ejemplo:
$ openssl x509 -in /path/to/appliance.pem -text
Certificate:
Data:
Version: 3 (0x2)
…
X509v3 Subject Alternative Name:
DNS:appliance.ibm.com
…
Lo siguiente generará errores:
ISAMAppliance(host=”192.168.42.111”, lmi_port=443, verify=/path/to/appliance.pem)
ya que el host no coincide con el Subject Alternative Name. En su lugar, use:
ISAMAppliance(host=”appliance.ibm.com”, lmi_port=443, verify=/path/to/appliance.pem)
Este paquete utiliza una fecha para el versionado. Por ejemplo: "2017.03.18.0"
Es la fecha en la que se publica el paquete con un número de secuencia al final para manejar los casos en los que haya múltiples publicaciones en un mismo día (se espera que sea poco común).
Este paquete de Python proporciona las siguientes características:
{
rc: <0 para éxito, mayor para errores>
changed: <True o False>
warnings: <Lista de cadenas con advertencias - p. ej. versión incompatible>
data: <Datos JSON devueltos por la API REST del appliance que llamó a la función>
}
Nota: se prefiere devolver advertencias en lugar de enviar un rc distinto de cero.
Una clase abstracta ibmappliance se extiende para crear una clase para cada appliance compatible aquí.
Actualmente, los appliances ISAM e ISDS.
Un User abstracto se extiende para cada tipo de usuario necesario. Para ISAM, hay un usuario para el acceso al appliance
y otro para autenticarse en Web Runtime (Policy Server).
Hay cuatro paquetes principales de ISAM: base, web, aac y fed. web contiene todos los componentes necesarios
para configurar la funcionalidad web, incluidos el LDAP integrado, el runtime y las características que se activan como parte del
módulo wga. aac contiene las características activadas como parte del módulo mga y fed las de federation. base
contiene todo lo demás, incluidos aac y fed, runtime y Audit Configuration (estos son comunes a aac y fed
y, por lo tanto, están en base).
Los nombres de los paquetes y archivos se crearon con la siguiente intención:
Contiene funciones misceláneas que son genéricas e independientes de cualquier IBM Appliance, p. ej. json_compare().