Proteger OpenReplay
Restringir el acceso al nodo
Section titled Restringir el acceso al nodoEs muy recomendable permitir únicamente los puertos 80/443 abiertos hacia la máquina mediante grupos de seguridad. Hay algunos componentes que escuchan en la dirección 0.0.0.0, para facilitar la conectividad de red, como la API del servidor k3s, la API de flannel, etc.
Configurar SSL
Section titled Configurar SSLSi va a usar su propio certificado, cree un secreto SSL con el siguiente comando: kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".
Nota: Si no tiene un certificado, genere uno con renovación automática para su subdominio (el que proporcionó durante la instalación) usando Let’s Encrypt. Simplemente conéctese a la instancia de OpenReplay, ejecute
cd openreplay/scripts/helmcharts && bash certmanager.shy siga los pasos.
Si desea habilitar la redirección de http a https (recomendado), edite la configuración con openreplay -e y, a continuación, descomente el siguiente bloque, dentro de la sección ingress-nginx:
ingress-nginx: &ingress-nginx
controller:
config:
ssl-redirect: true
force-ssl-redirect: true
Nota: Nuestro
ingress-nginxse ejecuta de forma predeterminada en los puertos80|443, pero esto se puede cambiar fácilmente, si es necesario, envars.yaml:
ingress-nginx: &ingress-nginx
controller:
service:
ports:
http: 80
https: 443
Guarde y salga con :wq para que el servicio se recargue.
Reforzar X-Frame-Options
Section titled Reforzar X-Frame-OptionsPara indicar si un navegador debe poder representar o no una página en un <frame>, <iframe>, <embed> u <object> y evitar ataques de click-jacking, establezca el encabezado de respuesta X-Frame-Options editando la configuración con openreplay -e:
ingress-nginx: &ingress-nginx
controller:
addHeaders:
X-Frame-Options: "SAMEORIGIN"
Luego, guarde y salga con :wq para que el servicio se recargue.
Configurar reCaptcha
Section titled Configurar reCaptchaOpenReplay admite reCaptcha (v2) para mayor seguridad. Para habilitar esta protección:
- Obtenga una clave reCaptcha v2 de Google, con el modo
invisiblehabilitado, es decir, que no solicitetick I am not a human. - Abra
/var/lib/openreplay/vars.yaml, luego descomente y actualice las siguientes variables de entorno en la secciónchalice:
captcha_server: La URL de su servicio reCaptcha (por ejemplo, https://www.google.com/recaptcha/api/siteverify)captcha_key: Su clave secreta de reCaptcha
- Edite
.envenopenreplay/frontend/(copie.env.samplesi no existe) y sustituya la variableCAPTCHA_SITE_KEYpor la clave de sitio de su reCaptcha. - Reconstruya el frontend:
cd openreplay/frontend
IMAGE_TAG=my-custom-image PUSH_IMAGE=1 DOCKER_REPO=my-docker-user-name bash -x build.sh
- Abra
/var/lib/openreplay/vars.yamly especifique la imagen del frontend recién construida en el bloquefrontend:
frontend:
image:
repository: "my-docker-username/frontend"
tag: "my-custom-image"
- Reinicie los servicios del frontend y del servidor web para que los cambios surtan efecto:
openreplay -R
Política de seguridad de contenido (CSP)
Section titled Política de seguridad de contenido (CSP)Este es un ejemplo de una política (CSP) para permitir que OpenReplay grabe sesiones. Debe adaptarse en función de su dominio y de sus requisitos de seguridad:
worker-src ‘self’ blob: https://openreplay.mycompany.com https://*.openreplay.com; script-src ‘self’ https://openreplay.mycompany.com https://*.openreplay.com;
Para aplicar su CSP a NGINX, conéctese a su instancia de OpenReplay y siga los pasos a continuación:
- Ejecute
openreplay -ey agregue su CSP en el bloquefrontend. Asegúrese de actualizar
frontend:
ingress:
cspSnippet: |
add_header Content-Security-Policy "worker-src 'self' blob: https://openreplay.mycompany.com https://*.openreplay.com; script-src 'self' https://openreplay.mycompany.com https://*.openreplay.com;";
Nota: Asegúrese de reemplazar las apariciones de
https://openreplay.mycompany.comen la CSP anterior por el nombre de dominio de su OpenReplay. El valor debe ser el mismo queDOMAIN_NAMEen el archivo/var/lib/openreplay/vars.yaml.
- Guarde y salga con
:wqpara aplicar la CSP recién añadida
Habilitar CORS
Section titled Habilitar CORSLas solicitudes entre dominios se permiten, de forma predeterminada, desde todos los orígenes (Access-Control-Allow-Origin: *). Si desea restringir las grabaciones únicamente a unos pocos dominios, ejecute openreplay -e y actualice el bloque http agregando las siguientes anotaciones:
http:
ingress:
annotations:
nginx.ingress.kubernetes.io/cors-allow-methods: POST
nginx.ingress.kubernetes.io/cors-allow-headers: Content-Type,Authorization,Content-Encoding
nginx.ingress.kubernetes.io/cors-allow-origin: https://app1.mycompany.com,https://app2.mycompany.com,https://*.mycompany.com
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-expose-headers: "Content-Length"
Luego guarde y salga con :wq para aplicar la CSP recién añadida.
¿Tiene preguntas?
Section titled ¿Tiene preguntas?Si tiene alguna pregunta sobre este proceso, no dude en contactarnos en nuestro Slack o consultar nuestro Foro.