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 ouverts 80/443 vers la machine à l’aide de groupes de sécurité. Certains composants écoutent sur l’adresse 0.0.0.0 pour faciliter le réseau, comme l’API du serveur k3s, l’API 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é), décommentez le bloc ci-dessous, sous 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, dansopenreplay -e:
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 un <object> et éviter les attaques de détournement de clic (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.
Configurer reCaptcha
Section titled Configurer 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 sans demandertick I am not a human. - Exécutez
openreplay -e, puis décommentez et mettez à jour les variables d’environnement ci-dessous dans la sectionchalice:
captcha_server: L’URL de votre service reCaptcha (p. 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
- Exécutez
openreplay -eet 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. Veillez à 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_NAMElorsque vous exécutezopenreplay -e.
- 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 restreindre 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"
Enregistrez ensuite 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.