Seguridad cuando se utiliza IBM Data Server Driver para JDBC y SQLJ

Cuando utiliza el IBM® Data Server Driver for JDBC and SQLJ, elige un mecanismo de seguridad especificando un valor para la propiedad securityMechanism Connection o DataSource , o la propiedad de configuración global db2.jcc.securityMechanism.

Importante : El tipo de autenticación DATA_ENCRYPT está obsoleto y podría eliminarse en una versión futura. Para cifrar datos en tránsito entre clientes y bases de datos de sistemas Db2 en Linux®, UNIX y Windows, recomendamos utilizar el soporte del sistema de base de datos de sistemas Db2 en Linux, UNIX y Windows de Secure Sockets Layer (SSL).
Puede establecer la propiedad securityMechanism de una de las formas siguientes:
  • Si utiliza la interfaz DriverManager , establezca securityMechanism en un objeto java.util.Properties antes de invocar el formulario del método getConnection que incluye el parámetro java.util.Properties .
  • Si utiliza la interfaz DataSource, y está creando y desplegando sus propios objetos DataSource, invoque el método DataSource.setSecurityMechanism después de crear un objeto DataSource.

Puede determinar el mecanismo de seguridad que está en vigor para una conexión invocando el método DB2Connection.getDB2SecurityMechanism.

La siguiente tabla enumera los mecanismos de seguridad que IBM Data Server Driver for JDBC and SQLJ y las fuentes de datos que admiten esos mecanismos de seguridad.

Tabla 1. Soporte de servidor de datos para IBM Data Server Driver for JDBC and SQLJ mecanismos de seguridad
Mecanismo de seguridad Compatible con Db2 en sistemas Linux, UNIX y Windows Con el apoyo de Db2 for z/OS® Con el apoyo de IBM Informix® Con el apoyo de Db2 para IBM i
ID de usuario y contraseña
Solo ID de usuario
ID de usuario y contraseña cifrada 1 Sí4
ID de usuario cifrado1 Sí2 Nee Nee
ID de usuario y contraseña cifradas 1 N.º 5 Sí4
Identificación de usuario cif rada y datos sensibles a la seguridad cifrados1 Nee Nee Nee
ID de usuario cifrado, contraseña cifrada y datos sensibles a la seguridad cifrados1 Nee Nee
Kerberos3 Nee
Plugin3 Nee Nee Nee
Autenticación de certificados 3 Nee Nee Nee
Autenticación de señal Nee Nee Nee
Nota:
  1. Estos mecanismos de seguridad utilizan el cifrado DRDA. El cifrado DRDA no tiene como finalidad proporcionar confidencialidad e integridad de contraseñas o datos a través de una red que no es segura, Internet. El cifrado DRDA utiliza un intercambio de claves anónimo, Diffie-Hellman, que no proporciona autentificación del servidor o del cliente. El cifrado DRDA es vulnerable ante ataques de intrusos.
  2. Para conexiones a Db2 en sistemas Linux, UNIX y Windows, el mecanismo de seguridad de identificación de usuario cifrada solo es compatible para cambiar de usuario en una conexión de confianza.
  3. Disponible solo para conectividad de tipo 4 IBM Data Server Driver for JDBC and SQLJ.
  4. La versión de la fuente de datos debe ser Db2 para IBM i V6R1 o posterior.
  5. Para conexiones a IBM Informix, no se admite la seguridad de ID de usuario y contraseña cifradas. Utilice en su lugar la seguridad de ID de usuario y contraseña.

La siguiente tabla enumera los mecanismos de seguridad que IBM Data Server Driver for JDBC and SQLJ admite, y el valor que debe especificar para la propiedad securityMechanism para especificar cada mecanismo de seguridad.

IMPORTANTE:
A partir de la versión 4.34 de la IBM Data Server Driver for JDBC and SQLJ, para conectividad de tipo 4 a Db2 for z/OS o Db2 en sistemas Linux, UNIX y Windows :
  • Cuando se establece explícitamente el mecanismo de seguridad en ENCRYPTED_USER_AND_PASSWORD_SECURITY (9), y no se define un proceso de reintento con un mecanismo de seguridad alternativo, el controlador no reintenta la conexión con CLEAR_TEXT_PASSWORD_SECURITY (3). El controlador lanza una excepción con Reason: Security mechanism not supported.
  • Cuando ICSF o el criptoprocesador no están habilitados en un sistema z/OS en el que se ejecuta un Db2 for z/OS servidor de datos, el controlador devuelve un error con Reason: Local security service non-retryable error. El controlador vuelve a intentar la conexión abriendo un nuevo socket utilizando CLEAR_TEXT_PASSWORD_SECURITY (3).
  • Cuando la seguridad criptográfica FIPS 140-3 está habilitada para el entorno de ejecución de Java o el SDK para Java, y la conexión al servidor de datos utiliza ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) de forma predeterminada, el controlador lanza una excepción con Caused by: java.lang.ExceptionInInitializerError. El controlador vuelve a intentar la conexión con CLEAR_TEXT_PASSWORD_SECURITY (3).
  • Cuando la versión del entorno de ejecución de Java o del SDK para Java es la 8 o anterior, los archivos de política han caducado y la conexión al servidor de datos utiliza ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) de forma predeterminada, el controlador lanza un error de tipo " java.security.InvalidKeyException". El controlador vuelve a intentar la conexión con CLEAR_TEXT_PASSWORD_SECURITY (3).
  • Cuando una conexión a un Db2 for z/OS o Db2 en sistemas Linux, UNIX y Windows, la conexión utiliza SSL, la conexión utiliza CLEAR_TEXT_PASSWORD_SECURITY (3) por defecto. Si establece explícitamente el mecanismo de seguridad en otro valor, el controlador utiliza el valor establecido explícitamente.
A partir de la versión 4.33 de la IBM Data Server Driver for JDBC and SQLJ :
  • El mecanismo de seguridad predeterminado es ENCRYPTED_USER_AND_PASSWORD_SECURITY. Si el servidor de datos no admite ENCRYPTED_USER_AND_PASSWORD_SECURITY, pero admite CLEAR_TEXT_PASSWORD_SECURITY, el controlador cambia el mecanismo de seguridad a CLEAR_TEXT_PASSWORD_SECURITY e intenta conectarse al servidor de datos.
    Cuando el controlador vuelve a intentar la conexión utilizando CLEAR_TEXT_PASSWORD_SECURITY, el rendimiento puede verse afectado. Para minimizar el impacto en el rendimiento, realice una de las siguientes acciones:
    • Establezca explícitamente el mecanismo de seguridad en CLEAR_TEXT_PASSWORD_SECURITY en el lado del cliente.
    • Cambie la configuración del servidor de datos para que admita ENCRYPTED_USER_AND_PASSWORD_SECURITY.

    Cualquier discrepancia en el soporte del mecanismo de seguridad entre el solicitante y el servidor de datos que no sea CLEAR_TEXT_PASSWORD_SECURITY y ENCRYPTED_USER_AND_PASSWORD_SECURITY da lugar a un error.

  • Una conexión a un Db2 for z/OS subsistema o grupo de intercambio de datos que utiliza el mecanismo de seguridad predeterminado de ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) y el cifrado AES solo se realiza correctamente si el Servicio de cifrado integrado ( z/OS, ICSF) está habilitado en el sistema de cifrado de claves ( z/OS ) donde está instalado cada subsistema o miembro de intercambio de datos. Se requiere ICSF para descifrar el ID de usuario y la contraseña. Si ICSF no está instalado, debe configurar el mecanismo de seguridad en CLEAR_TEXT_PASSWORD_SECURITY (3).

Antes de la versión 4.33 de IBM Data Server Driver for JDBC and SQLJ, el mecanismo de seguridad predeterminado es CLEAR_TEXT_PASSWORD_SECURITY (3). Si el servidor de datos no admite 3-bit SSL ( CLEAR_TEXT_PASSWORD_SECURITY ), pero admite 9-bit SSL ( ENCRYPTED_USER_AND_PASSWORD_SECURITY ), el controlador cambia el mecanismo de seguridad a 9-bit SSL ( ENCRYPTED_USER_AND_PASSWORD_SECURITY ) e intenta conectarse al servidor de datos. Cualquier otro desajuste en el soporte del mecanismo de seguridad entre el solicitante y el servidor de datos da lugar a un error.

Tabla 2. Mecanismos de seguridad compatibles con el IBM Data Server Driver for JDBC and SQLJ
Mecanismo de seguridad Valor de la propiedad securityMechanism
ID de usuario y contraseña DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY (3)
Solo ID de usuario DB2BaseDataSource.USER_ONLY_SECURITY (4)
ID de usuario y contraseña cifrada 1 DB2BaseDataSource.ENCRYPTED_PASSWORD_SECURITY (7)
ID de usuario cifrado1 DB2BaseDataSource.ENCRYPTED_USER_ONLY_SECURITY (16)
ID de usuario y contraseña cifradas1, 2 DB2BaseDataSource.ENCRYPTED_USER_AND_PASSWORD_SECURITY (9)
Identificación de usuario cif rada y datos sensibles a la seguridad cifrados1 DB2BaseDataSource.ENCRYPTED_USER_AND_DATA_SECURITY (12)
ID de usuario cifrado, contraseña cifrada y datos sensibles a la seguridad cifrados1 DB2BaseDataSource.ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY (13)
Kerberos DB2BaseDataSource.KERBEROS_SECURITY (11)
Plugin DB2BaseDataSource.PLUGIN_SECURITY (15)
Autenticación de certificado DB2BaseDataSource.TLS_CLIENT_CERTIFICATE_SECURITY (18)
Autenticación de señal DB2BaseDataSource.TOKEN_SECURITY (19)
Nota:
  1. El cifrado DRDA no tiene como finalidad proporcionar confidencialidad e integridad de contraseñas o datos a través de una red que no es segura, Internet. El cifrado DRDA utiliza un intercambio de claves anónimo, Diffie-Hellman, que no proporciona autentificación del servidor o del cliente. El cifrado DRDA es vulnerable ante ataques de intrusos.
  2. La seguridad de la identificación de usuario y la contraseña cifradas no es compatible con las conexiones a IBM Informix servidores de datos. Utilice en su lugar la seguridad de ID de usuario y contraseña (DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY (3)).