Remarques sur la sécurité de l'agent hôte

L'agent « Instana » dispose d'un accès approfondi au système surveillé sur lequel il est installé. Pour des considérations de sécurité lorsque l'agent est en cours d'exécution, voir les informations suivantes:

Exécution en tant qu'utilisateur non root

Pour renforcer la sécurité, vous pouvez exécuter l'agent Instana en tant qu'utilisateur non root disposant de privilèges limités. Cette approche réduit l'empreinte de sécurité en limitant l'accès de l'agent aux ressources du système, tout en offrant des capacités de surveillance complètes.

Remarque : l'agent non-root est disponible en avant-première publique avec la prise en charge de systemd, la gestion automatique des services et la prise en charge complète de tous les capteurs disponibles. Pour plus d'informations sur l'installation, la configuration, les considérations de sécurité et les fonctionnalités prises en charge, consultez la section « Exécution de l'agent en tant qu'utilisateur non root ».

Fichiers temporaires

Lors de l'exécution, l'agent crée des fichiers temporaires et stocke des bibliothèques supplémentaires dans $TMP/.instana sur la machine hôte où il s'exécute ou dans des conteneurs d'application surveillés par l'agent. Ces fichiers sont accessibles par les processus surveillés lors de l'exécution. Etant donné que les applications surveillées s'exécutent avec différents droits utilisateur, ces fichiers disposent de droits d'accès étendus. Sur les hôtes Linuxet sur les environnements de conteneur, les droits sont 777. Sur les serveurs fonctionnant sous Windows, ces fichiers se trouvent dans %TEMP%/instanale répertoire et disposent de droits d'accès complets pour le compte utilisateur qui exécute l'application.

Détails des fichiers temporaires

La plupart des fichiers temporaires servent à la surveillance et au traçage des charges de travail basées sur l' Java. Les fichiers de base nécessaires au suivi et à la surveillance des charges de travail basées sur l' Java s sont les suivants :

nom de fichier taille de fichier spécifique à un processus
javaagent-loader- < version> .jar 221KB non
instrumentation-boot- < version>-< pid>-< uid> .jar 50KB true
instrumentation-shared- < version>-< pid>-< uid> .jar 4.1MB true
sensor-java-javaagent-< version>-< pid>-< uid> .jar 153KB true
sensor-java-trace-javaagent-< version>-< pid>-< uid> .jar 3MB true

Remarques :

  • Les tailles de fichier peuvent varier pour les versions ultérieures.
  • javaagent-loader n'est requis qu'une seule fois pour plusieurs processus d' Java s s'exécutant sur le même hôte.
  • Pour les charges de travail d' Java s en conteneurs, l'ensemble des fichiers est copié dans chaque conteneur individuel.
  • Le nombre effectif de fichiers dépend du nombre et du type de charges de travail basées sur l' Java. Pour certains environnements d' Java s et environnements d'exécution, Instana peut fournir des informations plus détaillées en complément de la surveillance de base proposée par JVM. Selon la technologie Java utilisée (par exemple SpringBoot, Wildfly, WebSphere, Tomcat, etc.), des fichiers sensor-<technology>-javaagent-... supplémentaires sont copiés.

Considérations de sécurité concernant l'agent hôte sur Kubernetes

Étant donné que l'agent hôte d' Instana doit se connecter aux pods d'application et répertorier ou ouvrir ses propres ports sur les réseaux ponts du nœud où il est déployé, l'accès au réseau hôte et la recherche de l'ID de processus au niveau de l'hôte sont nécessaires à la corrélation de l'infrastructure. Cela correspond aux autorisations accordées sur les environnements d'hébergement Linux et Unix et nécessite que les indicateurs suivants soient définis dans le déploiement DaemonSet :

  • privileged: true: Offre un accès complet à /proc sans superposition, permet de modifier l'UID/GID pour les pièces jointes d' JVM, et donne accès aux espaces de noms des applications.
  • hostPID: true: Fournit les PID au niveau de l'hôte dans /proc. Ce paramètre est obligatoire pour la corrélation des infrastructures.
  • hostNetwork: true: Permet d'accéder aux interfaces réseau au niveau de l'hôte et au niveau du pont.

De plus, lorsque vous installez l'agent hôte sur OpenShift,, la contrainte de contexte de sécurité (SCC) est définie sur privileged afin d'accorder les autorisations susmentionnées.

Lorsque vous déployez l'agent hôte sur Kubernetes, tenez compte des aspects de sécurité suivants :

  • L'agent monte les répertoires du système hôte sur les conteneurs afin de faciliter les diagnostics et d'activer les fonctions opérationnelles nécessaires.
  • Le système de fichiers racine du conteneur nécessite un accès en écriture au système hôte pour prendre en charge les opérations essentielles et assurer le bon fonctionnement des fonctions.
  • Vous ne pouvez pas appliquer de profil SecComp à un conteneur qui s'exécute avec privileged: true l'autorisation définie dans les paramètres securityContext du conteneur. Les conteneurs privilégiés s'exécutent toujours en tant que Unconfined. Pour plus d'informations, consultez la section « Restreindre les appels système d'un conteneur avec seccomp ».

Pour que le capteur Kubernetes détecte toutes les ressources et applications en cours d'exécution dans le cluster Kubernetes, configurez les règles de rôle du cluster comme suit :

rules:
  - nonResourceURLs:
    - "/version"
    - "/healthz"
    verbs: ["get"]- apiGroups: ["batch"]
    resources:
      - "jobs"
      - "cronjobs"
    verbs: ["get", "list", "watch"]
  - apiGroups: ["extensions"]
    resources:
      - "deployments"
      - "replicasets"
      - "ingresses"
    verbs: ["get", "list", "watch"]
  - apiGroups: ["apps"]
    resources:
      - "deployments"
      - "replicasets"
      - "daemonsets"
      - "statefulsets"
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - "namespaces"
      - "events"
      - "services"
      - "endpoints"
      - "nodes"
      - "pods"
      - "replicationcontrollers"
      - "componentstatuses"
      - "resourcequotas"
      - "persistentvolumes"
      - "persistentvolumeclaims"
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - "endpoints"
    verbs: ["create", "update", "patch"]
  - apiGroups: ["networking.k8s.io"]
    resources:
      - "ingresses"
    verbs: ["get", "list", "watch"]