Sécuriser OpenReplay
Restreindre l’accès au nœud
Section titled Restreindre l’accès au nœudIl est fortement recommandé de n’autoriser que les ports 80/443 ouverts vers la machine à l’aide de groupes de sécurité. Certains composants écoutent sur l’adresse 0.0.0.0, afin de faciliter la mise en réseau, comme l’API du serveur k3s, l’API de flannel, etc.
Configurer SSL
Section titled Configurer SSLSi vous apportez votre propre certificat, créez un secret SSL à l’aide de la commande suivante : kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".
Remarque : Si vous n’avez pas de certificat, générez-en un, qui se renouvelle automatiquement, pour votre sous-domaine (celui fourni lors de l’installation) à l’aide de Let’s Encrypt. Connectez-vous simplement à l’instance OpenReplay, exécutez
cd openreplay/scripts/helmcharts && bash certmanager.shet suivez les étapes.
Si vous souhaitez activer la redirection de http vers https (recommandé), modifiez la configuration à l’aide de openreplay -e, puis décommentez le bloc ci-dessous, dans la section ingress-nginx :
ingress-nginx: &ingress-nginx
controller:
config:
ssl-redirect: true
force-ssl-redirect: true
Remarque : Notre
ingress-nginxs’exécute par défaut sur les ports80|443, mais cela peut être facilement modifié, si nécessaire, dansvars.yaml:
ingress-nginx: &ingress-nginx
controller:
service:
ports:
http: 80
https: 443
Enregistrez et quittez à l’aide de :wq pour que le service se recharge.
Renforcer X-Frame-Options
Section titled Renforcer X-Frame-OptionsPour indiquer si un navigateur doit ou non être autorisé à afficher une page dans un <frame>, <iframe>, <embed> ou <object> et éviter les attaques de click-jacking, définissez l’en-tête de réponse X-Frame-Options en modifiant la configuration à l’aide de openreplay -e :
ingress-nginx: &ingress-nginx
controller:
addHeaders:
X-Frame-Options: "SAMEORIGIN"
Ensuite, enregistrez et quittez à l’aide de :wq pour que le service se recharge.
Définir reCaptcha
Section titled Définir reCaptchaOpenReplay prend en charge reCaptcha (v2) pour une sécurité supplémentaire. Pour activer cette protection :
- Obtenez une clé reCaptcha v2 auprès de Google, avec le mode
invisibleactivé, c’est-à-dire qu’il ne demande pastick I am not a human. - Ouvrez
/var/lib/openreplay/vars.yaml, puis décommentez et mettez à jour les variables d’environnement ci-dessous dans la sectionchalice:
captcha_server: L’URL de votre service reCaptcha (par ex. https://www.google.com/recaptcha/api/siteverify)captcha_key: Votre clé secrète reCaptcha
- Modifiez
.envdansopenreplay/frontend/(copiez.env.samples’il n’existe pas) et remplacez la variableCAPTCHA_SITE_KEYpar votre clé de site reCaptcha. - Reconstruisez le frontend :
cd openreplay/frontend
IMAGE_TAG=my-custom-image PUSH_IMAGE=1 DOCKER_REPO=my-docker-user-name bash -x build.sh
- Ouvrez
/var/lib/openreplay/vars.yamlet spécifiez votre image de frontend nouvellement construite dans le blocfrontend:
frontend:
image:
repository: "my-docker-username/frontend"
tag: "my-custom-image"
- Redémarrez les services du frontend et du serveur web pour que les modifications prennent effet :
openreplay -R
Politique de sécurité du contenu (CSP)
Section titled Politique de sécurité du contenu (CSP)Voici un exemple de politique (CSP) permettant à OpenReplay d’enregistrer des sessions. Elle doit être adaptée en fonction de votre domaine et de vos exigences de sécurité :
worker-src ‘self’ blob: https://openreplay.mycompany.com https://*.openreplay.com; script-src ‘self’ https://openreplay.mycompany.com https://*.openreplay.com;
Pour appliquer votre CSP à NGINX, connectez-vous à votre instance OpenReplay et suivez les étapes ci-dessous :
- Exécutez
openreplay -eet ajoutez votre CSP dans le blocfrontend. Assurez-vous de mettre à jour
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;";
Remarque : Veillez à remplacer les occurrences de
https://openreplay.mycompany.comdans la CSP ci-dessus par le nom de domaine de votre OpenReplay. La valeur doit être la même queDOMAIN_NAMEdans le fichier/var/lib/openreplay/vars.yaml.
- Enregistrez et quittez à l’aide de
:wqpour appliquer votre CSP nouvellement ajoutée
Activer CORS
Section titled Activer CORSLes requêtes inter-domaines sont autorisées, par défaut, depuis toutes les origines (Access-Control-Allow-Origin: *). Si vous souhaitez limiter les enregistrements à quelques domaines uniquement, exécutez openreplay -e et mettez à jour le bloc http en ajoutant les annotations ci-dessous :
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"
Ensuite, enregistrez et quittez à l’aide de :wq pour appliquer votre CSP nouvellement ajoutée.
Des questions ?
Section titled Des questions ?Si vous avez des questions sur ce processus, n’hésitez pas à nous contacter sur notre Slack ou à consulter notre Forum.