Hola Amig@s,
Me ha llegado esta consulta sobre cómo darle más seguridad a APEX y por ello en primer lugar es importante saber que el HTTPS debe ser instalado y configurado en el Web Server y no desde dentro de APEX.
Dependiendo el Web Server que se use, las instrucciones específicas de cómo configurar el HTTPS serán muy variadas. Todos los Web Listener soportados por APEX son capaces de correr bajo HTTPS con la excepción del APEX Listener in Standalone mode. Una vez que está instalado y configurado el HTTPS hay algunas cosas en APEX que se pueden configurar para tener una conexión segura.
A Nivel Instancia
Dentro del entorno de desarrollo APEX, podemos configurar la instancia completa para que rechace cualquier conexión HTTP. Esta configuración lo tenemos que hacer desde el Workspace Internal con el usuario Administrador de la Instancia.
Ingresamos al Workspace –> Gestionar Instancia –> Valores de Instancia –> Seguridad
Seleccionamos la ficha Protocolo HTTP:
1) HTTPS Necesario, tiene las siguientes opciones de configuración:
- Siempre: Fuerza HTTPS para que todas las aplicaciones (incluidas las aplicaciones de desarrollo y administración de Application Express) requieran HTTPS. Si se define en Siempre, aparece el atributo Duración Máxima de Seguridad de Transporte Estricta. Utilice este campo para especificar el período de tiempo en segundos durante el que el explorador accederá al servidor solo con HTTPS.
- Desarrollo y Administración: Fuerza todas las aplicaciones internas dentro de Application Express (es decir, Creador de aplicaciones, Taller de SQL, Administración de instancia, etc.) a requerir HTTPS.
- Específico de la Aplicación: Hace que HTTPS dependa del atributo de cookie de sesión «Seguro» en los esquemas de autenticación de las aplicaciones.
2) Requerir HTTPS Saliente, tiene las siguientes opciones de configuración, Si / No
- Seleccionamos Sí, si queremos que todo el tráfico saliente de una instancia de Application Express utilice el protocolo HTTPS.
3) Cabeceras de Respuesta HTTP, en la ayuda de APEX nos da algunos ejemplos de cómo introducir las cabeceras. Cada una de ellas deben empezar en una línea nueva.
Por ejemplo:
Content-Security-Policy: default-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ #CDN#; object-src ‘self’; img-src ‘self’ data:;
Esta configuración no impacta las aplicaciones desarrolladas en APEX.
Es importante que antes de realizar estas configuraciones, verifiquemos que la instancia APEX y cualquier servicio asociado pueda ser accedido a través de HTTPS.
Si por alguna razón la instancia está configurada en HTTPS y no podemos acceder a ella, podemos revertir esto llamando a la API APEX_INSTANCE_ADMIN.SET_PARAMETER.
APEX_INSTANCE_ADMIN.SET_PARAMETER
(
p_parameter => ‘REQUIRE_HTTPS’,
p_value => ‘N’
);
Para revertir la configuración y llamar a APEX_INSTANCE_ADMIN necesitamos hacerlo con el usuario sys/system o cualquier esquema que se le haya dado el permiso del rol APEX_ADMINISTRATOR_ROLE.
A Nivel Aplicación
Cada aplicación tiene la posibilidad de indicar si debe ser accedida a través de HTTPS.
Para encontentar este atributo, ingresamos a la página de inicio de la aplicación, hacemos clic en Componentes Compartidos y en la sección de Seguridad seleccionamos Esquema de Autenticación.
Abrimos el esquema de autenticación que estamos utilizando en la aplicación y en la ficha Atributos de Cookie de Sesión disponemos del atributo Proteger, para configurarlo en Sí o en No.
Si seleccionamos Sí el explorador enviará la cookie de gestión de sesión sólo cuando el protocolo sea HTTPS. Si seleccionamos No el explorador enviará la cookie de gestión de sesión cuando el protocolo sea HTTP o HTTPS.
Si tenemos configurado el SSL en el servidor web, debemos seleccionar Sí para reforzar la seguridad de la aplicación evitando el tráfico HTTP no cifrado.
Cuando configuramos en Sí, la aplicación solo podrá ser accedida a través de HTTPS.
En otro post hablaré un poco de cómo darle mayor seguridad a nuestros ITEMS en APEX.
¡Será entonces hasta Pronto!