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:
TLS Point de terminaison de l'agent chiffré
L'agent peut être configuré pour accepter les requêtes chiffrées via le protocole TLS sur son port HTTP42699 et sur son port gRPC4317. Pour plus d'informations, consultez la section « Configuration du chiffrement de l' TLS pour les terminaux d'agent ».
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.
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-loadern'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 à/procsans 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: truel'autorisation définie dans les paramètressecurityContextdu conteneur. Les conteneurs privilégiés s'exécutent toujours en tant queUnconfined. 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"]